串口通信代码死机

串口命令发送,长或短于要去的命令就会造成代码死机

   

stm32 解决办法:

原因:

在程序还没从串口接收寄存器取走数据的时候突然又来了数据,

1.短:未到 指定命令长度,会等待第二次接收,满足后串口寄存器未取走数据,但后面紧跟着数据 2.长:长于指定命令长度,满足后串口寄存器未取走数据,后面依然紧跟着数据)

会导致 Overrun 标志位的置位。这个标志位一置,串口基本上就罢工了。所以,在程序中一定要有对异常情况的处理。甚至觉得不会发生的异常也不要置之不理。

   

解决办法:当 Overrun 标志位的置位后清掉 Overrun位,或者关闭 Overrun 标志位

原文地址:https://www.cnblogs.com/ChengR/p/14550149.html