本帖最后由 dirty123 于 2024-4-22 21:45 编辑
串口日志在我们平时开发中会经常用到,本篇讲述N32G430C8L7串口打印。
一.硬件接口
开发板通过J5端子连接MCU,起到烧录口和串口连接的作用。在开发板原理图中可看到如下
图1:串口连接
查阅数据手册,N32G430C8L7 的串口引脚配置:PA9--TX,PA10--RX
图2:串口引脚配置
二.代码与配置
1.引脚初始化
void GPIO_Configuration(void)
{
GPIO_InitType GPIO_InitStructure;
/* Initialize GPIO_InitStructure */
GPIO_Structure_Initialize(&GPIO_InitStructure);
/* Configure USARTx Tx as alternate function push-pull */
GPIO_InitStructure.Pin = USARTx_TxPin;
GPIO_InitStructure.GPIO_Mode = GPIO_MODE_AF_PP;
GPIO_InitStructure.GPIO_Alternate = USARTx_Tx_GPIO_AF;
GPIO_Peripheral_Initialize(USARTx_GPIO, &GPIO_InitStructure);
/* Configure USARTx Rx as alternate function push-pull */
GPIO_InitStructure.Pin = USARTx_RxPin;
GPIO_InitStructure.GPIO_Alternate = USARTx_Rx_GPIO_AF;
GPIO_Peripheral_Initialize(USARTx_GPIO, &GPIO_InitStructure);
}
2.串口初始化,配置波特率
/* USARTy and USARTz configuration ------------------------------------------------------*/
USART_InitStructure.BaudRate = 115200;
USART_InitStructure.WordLength = USART_WL_8B;
USART_InitStructure.StopBits = USART_STPB_1;
USART_InitStructure.Parity = USART_PE_NO;
USART_InitStructure.HardwareFlowControl = USART_HFCTRL_NONE;
USART_InitStructure.Mode = USART_MODE_RX | USART_MODE_TX;
/* Configure USARTx */
USART_Initializes(USARTx, &USART_InitStructure);
/* Enable the USARTx */
USART_Enable(USARTx);
3.编译器配置。这里勾选上Use MicroLIB
图3:编译器配置
4.串口重映射,可用printf输出串口日志
/**
*\*\name fputc.
*\*\fun retarget the C library printf function to the USART
*\*\param ch
*\*\param f
*\*\return none
**/
int fputc(int ch, FILE* f)
{
USART_Data_Send(USARTx, (uint8_t)ch);
while (USART_Flag_Status_Get(USARTx, USART_FLAG_TXDE) == RESET)
;
return (ch);
}
5.在main函数加入串口日志
图4:串口日志代码
三.编译烧录测试
编译烧录后,打开串口,按RESET键开发板重启,可看到有日志输出,如下
图5:日志输出
至此,实现N32G430C8L7_STB开发板串口打印输出。
|