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