G0001配置串口之串口初始化与定向到printf
分享作者:F888
作者昵称:我爱小易
评测品牌:灵动微电子
评测型号:MM32G0001A1TC
发布时间:2025-10-11 14:03:15
1
前言
啊哈,又是我——我爱小易,很早之前就做了G0001的系列视频,不过当时懒得写贴,刚好轮到活动准备全部搬过来。
开源口碑分享内容

一、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