串口命令发送,长或短于要去的命令就会造成代码死机
stm32 解决办法:
原因:
在程序还没从串口接收寄存器取走数据的时候突然又来了数据,
(1.短:未到 指定命令长度,会等待第二次接收,满足后串口寄存器未取走数据,但后面紧跟着数据 2.长:长于指定命令长度,满足后串口寄存器未取走数据,后面依然紧跟着数据)
会导致 Overrun 标志位的置位。这个标志位一置,串口基本上就罢工了。所以,在程序中一定要有对异常情况的处理。甚至觉得不会发生的异常也不要置之不理。
解决办法:当 Overrun 标志位的置位后清掉 Overrun位,或者关闭 Overrun 标志位