1 背景
串口打印输出的时候出现首字母丢失的情况;
2 分析
参考stm32固件库开发的相关例程,判断问题应该如下:
printf:
/* 等待发送完毕 */
while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_TXE) == RESET); //stm32
对应的,在GD32中,应该
while(RESET == usart_flag_get(COM1, USART_FLAG_TBE)); //gd32
不然就会出现首字符丢失的情况;
串口发送字符串同理:
/* 等待发送数据寄存器为空 */
while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET);
TXE对应发送缓存寄存器
因此这里应当为:
/*Waiting for transmission to complete*/
while (usart_flag_get(COM1,USART_FLAG_TBE) == RESET);
更改后输出正常:
..10:32:11:276 ystem start done
..10:32:11:277 System start done
..10:49:49:896 System start done
..10:49:49:897 System start done
标签:RESET,10,..,USART,发送,start,done,GD32,字符串
From: https://www.cnblogs.com/tongwumiracle/p/16805471.html