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

[复制链接]
1544|10
 楼主| 公羊子丹 发表于 2024-10-4 08:10 | 显示全部楼层 |阅读模式
最近在项目中使用了灵动MM32 MCU来做一些外设通信的工作,发现它的UART功能非常好用,特别是对于数据收发处理来说很方便。今天分享一个使用MM32 MCU进行UART通信的小例子,适合那些刚开始上手MM32 MCU的小伙伴们。

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

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

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

  3. void UART_Init(void)
  4. {
  5.     // 打开GPIOA的时钟
  6.     RCC->AHBENR |= RCC_AHBENR_GPIOA;
  7.    
  8.     // 配置GPIOA9为TX,GPIOA10为RX
  9.     GPIOA->AFR[1] |= (1 << 4);  // PA9 - AF7 (USART1 TX)
  10.     GPIOA->AFR[1] |= (1 << 8);  // PA10 - AF7 (USART1 RX)
  11.    
  12.     // 配置UART的时钟
  13.     RCC->APB2ENR |= RCC_APB2ENR_USART1EN;
  14.    
  15.     // 配置波特率,假设使用8MHz的时钟
  16.     USART1->BRR = (uint16_t)(8000000 / 9600);
  17.    
  18.     // 使能UART发送和接收
  19.     USART1->CR1 |= USART_CR1_TE | USART_CR1_RE;
  20.    
  21.     // 使能UART
  22.     USART1->CR1 |= USART_CR1_UE;
  23. }



2. 发送和接收数据

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

  7. char UART_ReceiveChar(void)
  8. {
  9.     // 等待数据接收完成
  10.     while (!(USART1->SR & USART_SR_RXNE));
  11.     return USART1->DR;
  12. }

  13. void UART_SendString(char* str)
  14. {
  15.     while (*str)
  16.     {
  17.         UART_SendChar(*str++);
  18.     }
  19. }


3. 主函数

  1. int main(void)
  2. {
  3.     // 初始化UART
  4.     UART_Init();
  5.    
  6.     // 发送欢迎信息
  7.     UART_SendString("Hello, MM32 UART!\r\n");
  8.    
  9.     // 循环接收并回显数据
  10.     while (1)
  11.     {
  12.         char received = UART_ReceiveChar();
  13.         UART_SendChar(received);  // 回显接收到的字符
  14.     }
  15. }

运行效果:
当你使用串口调试助手连接开发板时,开发板会不断地回显你输入的每个字符,同时也会发送一个"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 | 显示全部楼层
代码写得真棒,我新手还在学怎么搞,跟着你的代码来感觉轻松多了!
万图 发表于 2024-10-4 08:12 | 显示全部楼层
感谢分享!串口回显功能调试的时候超实用,这个例子可以直接拿来用!
Wordsworth 发表于 2024-10-4 08:12 | 显示全部楼层
这篇文章让我对UART有了新的理解,MM32系列看来还挺好玩的!
Bblythe 发表于 2024-10-4 08:13 | 显示全部楼层
能不能加个串口中断的例子?想用中断模式来收发数据。
Pulitzer 发表于 2024-10-4 08:13 | 显示全部楼层
一看就会,感觉MM32的UART配置确实挺方便的!
Uriah 发表于 2024-10-4 08:13 | 显示全部楼层
太好了,我刚好遇到UART问题,看了你的代码解决了不少困惑!
Clyde011 发表于 2024-10-4 08:14 | 显示全部楼层
试了一下,效果不错!虽然是基础功能,但很实用,谢谢分享!
suncat0504 发表于 2024-10-14 20:54 | 显示全部楼层
串口设备从被开发出来开始,一直到现在都是最有效的一种通讯手段。从未因为发展而被淘汰。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

200

主题

6534

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部