G0001配置串口之串口初始化与定向到printf
分享作者:F888
作者昵称:我爱小易
评测品牌:灵动微电子
评测型号:MM32G0001A1TC
发布时间:2025-10-11 14:03:15
2 1
前言
开源口碑分享内容
一、USART 简介
在嵌入式开发中,串口通信(通常指 USART)是我们调试程序、与上位机或其他设备交互的重要手段。今天我们就来详细讲解如何在 G0001 单片机上初始化 USART 接口,实现基本的串口通信功能。
二、硬件连接
以我们G0001开发板为例,板载的DAP自带的串口和我们的芯片串口已经连接好了
- TX:PA3
- RX:PA12
三、初始化步骤
1. 使能时钟
RCC_APB1PeriphClockCmd(RCC_APB1ENR_UART1,ENABLE);
RCC_AHBPeriphClockCmd(RCC_AHBENR_GPIOA,ENABLE);
2. 配置 GPIO 引脚为复用推挽输出(TX)和浮空输入(RX)
GPIO_Init_structure.GPIO_Mode=GPIO_Mode_FLOATING;
GPIO_Init_structure.GPIO_Pin=GPIO_Pin_3;
GPIO_Init_structure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_Init_structure);
GPIO_Init_structure.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_Init_structure.GPIO_Pin=GPIO_Pin_12;
GPIO_Init_structure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_Init_structure);
由于PA2和PA13默认功能为普通的GPIO ,所以为了使串口能正常使用还需要开启对应的功能。
通过阅读引脚复用表可知,USART功能被挂载在AF1上,所以我们需要
GPIO_PinAFConfig(GPIOA,GPIO_PinSource3,GPIO_AF_1);
GPIO_PinAFConfig(GPIOA,GPIO_PinSource12,GPIO_AF_1);
3. 配置 USART 参数(波特率 = 115200,8N1)
UART1_Init_Structure.USART_BaudRate=115200;
UART1_Init_Structure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
UART1_Init_Structure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;
UART1_Init_Structure.USART_Parity=USART_Parity_No;
UART1_Init_Structure.USART_StopBits=USART_StopBits_1;
UART1_Init_Structure.USART_WordLength=USART_WordLength_8b;
USART_Init(USART1,&UART1_Init_Structure);
USART_Cmd(USART1,ENABLE);
四、发送函数示例
为了方便使用,我们再把,串口重定向到printf,不然每次发送都需要使用USART_SendData(USART_TypeDef *usart, uint16_t data)这个函数。
int fputc(int ch, FILE *f)
{
USART_SendData(USART1, (uint8_t)ch);
while (RESET == USART_GetFlagStatus(USART1, USART_FLAG_TC))
{
}
return (ch);
}
这样我们就将串口定向到printf
int main(void)
{
uart_init();
printf("=======ICEasy=======");
printf("\r\nBOARD : Mini-G0001");
while (1)
{
printf("\r\nMCU : MM32G0001A1T");
}
}
五、测试结果
六、结语
通过以上步骤,我们就在 G0001单片机上成功初始化了 USART 串口,并能发送数据。这是嵌入式开发的第一步,也是最重要的调试工具之一。
后续我们可以扩展:
- 接收中断处理
- 与上位机通信协议(如 Modbus、自定义帧)
全部评论

暂无评论

0/144