关于openmv与stm32通信数据传输遇到的问题

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

 遇到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
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值