遇到smt32与openmv无法通信,或者数据对不上。

上面的是openmv端发给stm32端的数据
%c4 b‘ ’:是stm32打印接收到的数据
逐个排查:openmv与pc端串口助手正常发收。stm32与pc端也可以正常发,但是接收数据的时候不能正常接收。
利用LED灯debug。
确定问题出在stm32端的中断服务函数里。反复看中断服务函数,并没有明显的逻辑错误。
经过查找资料发现,因为数据打印用的是串口一,使用时会产生中断。同时单片机接受OpenMV发送的数据使用的是串口一,也会有中断,这时就会产生中断嵌套,导致接受数据错乱。
解决方案:直接不打印数据,等接受完数据之后再打印。
但是发现还是不能正常接收数据。
纯小白,搞了一整天,没错整整是一天,没整出个所以然来。
但是就在今天下午,莫名的就整出来了。通信问题终于是解决问题了。在此记录一下
但是为什么还没弄懂为什么。希望大佬指出!!!

解决后的,可以正常接收数据,数据也是正确的
uart = UART(1,115200) #定义串口1变量
uart.init(115200, bits=8, parity=None, stop=1

文章描述了一个关于STM32与OpenMV在通信过程中出现数据错乱的问题,问题源在于中断服务函数中的串口一中断嵌套。尝试禁用数据打印后问题仍未解决,但最终在不断调试中找到了通信正常的方法。STM32端的中断服务函数用于处理接收数据,通过状态机模式解析帧头和帧尾。
1万+

被折叠的 条评论
为什么被折叠?



