最近在项目中使用了灵动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,这个例子应该能帮助你快速上手。
|