STM32串口发送数据首字符丢失解决办法
现象:
串口发送数据时,第一个字符丢失
例如,发送“system init\r\n”,最后收到的是“ystem init\r\n”,在此之后发送的数据均正常。
错误代码:
原因分析:
TC 和 TXE 标志位在复位的时候被置1 ,这样第一次while循环就是没有用的。这样导致了首次第一个字符还没有被输出,就被后面的字符覆盖掉,造成实际看到的丢失现象。
解决办法1:
在发送之前就先清除TC位
解决办法2:
在串口初始化的时候先清除TC位,这样就可以保持原来的发送代码了。
USART_ClearFlag(USART1,USART_FLAG_TC);