打印
[MM32软件]

使用灵动MM32 MCU实现UART通信的简单应用示例

[复制链接]
606|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
公羊子丹|  楼主 | 2024-10-4 08:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在项目中使用了灵动MM32 MCU来做一些外设通信的工作,发现它的UART功能非常好用,特别是对于数据收发处理来说很方便。今天分享一个使用MM32 MCU进行UART通信的小例子,适合那些刚开始上手MM32 MCU的小伙伴们。

硬件准备:
  • 灵动MM32 MCU开发板(例如 MM32F103 或其他系列)
  • USB转TTL模块
  • 串口调试助手

代码实现:
这里我选用MM32F103系列的MCU,通过UART1进行简单的收发数据。代码使用标准库进行配置。

1. 初始化UART
#include "mm32_device.h"
#include "uart.h"

void UART_Init(void)
{
    // 打开GPIOA的时钟
    RCC->AHBENR |= RCC_AHBENR_GPIOA;
   
    // 配置GPIOA9为TX,GPIOA10为RX
    GPIOA->AFR[1] |= (1 << 4);  // PA9 - AF7 (USART1 TX)
    GPIOA->AFR[1] |= (1 << 8);  // PA10 - AF7 (USART1 RX)
   
    // 配置UART的时钟
    RCC->APB2ENR |= RCC_APB2ENR_USART1EN;
   
    // 配置波特率,假设使用8MHz的时钟
    USART1->BRR = (uint16_t)(8000000 / 9600);
   
    // 使能UART发送和接收
    USART1->CR1 |= USART_CR1_TE | USART_CR1_RE;
   
    // 使能UART
    USART1->CR1 |= USART_CR1_UE;
}



2. 发送和接收数据

void UART_SendChar(char c)
{
    // 等待发送数据寄存器空
    while (!(USART1->SR & USART_SR_TXE));
    USART1->DR = c;
}

char UART_ReceiveChar(void)
{
    // 等待数据接收完成
    while (!(USART1->SR & USART_SR_RXNE));
    return USART1->DR;
}

void UART_SendString(char* str)
{
    while (*str)
    {
        UART_SendChar(*str++);
    }
}


3. 主函数

int main(void)
{
    // 初始化UART
    UART_Init();
   
    // 发送欢迎信息
    UART_SendString("Hello, MM32 UART!\r\n");
   
    // 循环接收并回显数据
    while (1)
    {
        char received = UART_ReceiveChar();
        UART_SendChar(received);  // 回显接收到的字符
    }
}

运行效果:
当你使用串口调试助手连接开发板时,开发板会不断地回显你输入的每个字符,同时也会发送一个"Hello, MM32 UART!"的欢迎信息。

总结:
灵动MM32 MCU的UART外设配置非常简单,本文示例展示了如何通过UART进行基本的收发数据。如果你是刚开始学习MM32 MCU,这个例子应该能帮助你快速上手。


使用特权

评论回复
沙发
周半梅| | 2024-10-4 08:11 | 只看该作者
这个例子好清楚!正好最近在玩MM32,这篇文章简直是救命啊!谢谢分享!

使用特权

评论回复
板凳
帛灿灿| | 2024-10-4 08:12 | 只看该作者
哇,没想到用MM32配置UART这么简单,准备试试看了!

使用特权

评论回复
地板
童雨竹| | 2024-10-4 08:12 | 只看该作者
代码写得真棒,我新手还在学怎么搞,跟着你的代码来感觉轻松多了!

使用特权

评论回复
5
万图| | 2024-10-4 08:12 | 只看该作者
感谢分享!串口回显功能调试的时候超实用,这个例子可以直接拿来用!

使用特权

评论回复
6
Wordsworth| | 2024-10-4 08:12 | 只看该作者
这篇文章让我对UART有了新的理解,MM32系列看来还挺好玩的!

使用特权

评论回复
7
Bblythe| | 2024-10-4 08:13 | 只看该作者
能不能加个串口中断的例子?想用中断模式来收发数据。

使用特权

评论回复
8
Pulitzer| | 2024-10-4 08:13 | 只看该作者
一看就会,感觉MM32的UART配置确实挺方便的!

使用特权

评论回复
9
Uriah| | 2024-10-4 08:13 | 只看该作者
太好了,我刚好遇到UART问题,看了你的代码解决了不少困惑!

使用特权

评论回复
10
Clyde011| | 2024-10-4 08:14 | 只看该作者
试了一下,效果不错!虽然是基础功能,但很实用,谢谢分享!

使用特权

评论回复
11
suncat0504| | 2024-10-14 20:54 | 只看该作者
串口设备从被开发出来开始,一直到现在都是最有效的一种通讯手段。从未因为发展而被淘汰。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

69

主题

4128

帖子

1

粉丝