STM32
串口第一个字节丢失问题的分析过程
STM32
串口发送必须先检测状态,否则第一个字节无法发出,发送完
毕,必须检测发送状态是否完成,否则,发送不成功,使用
stm32f10x
调试
串口通讯时,发现一个出错的现象,硬件复位重启之后,发送测试数据
0x01
0x02 0x03 0x04..
接收端收到的数据为:
0x02 0x03 0x04
,第一个数据丢失。换
成发送别的数值的数据,如
0x06
0x0ff
,则接收到
0x0ff
,
0x06
丢失。错误依
旧。
故障排除过程:
1
、刚开始怀疑是接收端的错误,我是使用电脑串口,运行串口辅助调试工
具接收,换成其他软件后,发现故障依旧,而且电脑软件一直是开启状态,
不像和电脑软件有关。
2
、使用单步调试,单步运行各个发送指令,都正常。能收到
0x01
0x02
0x03 0x04
的数据。间接的排除了不是电脑软件的问题,而是其他的错误。
3
、单步调试运行虽然正常了,但连续运行时,错误依旧。现在有点摸不到
头绪了,单步运行正常,看起来编程没有出错,那故障在哪里呢
?
测试程序如
下
USART_SendData(USART2, 0x01); //A