关于STM32与OpenMv通讯踩过的那些坑(1)

话不多说,进入主题。 在stm与openmv进行串口通讯的过程中遇到的问题是,openmv发送信息给stm,而stm只能接收一个字节、也就是只能进入中断一次,stm接受不到结束字符,进入不了一段字符串的结尾判断。而stm、openmv和电脑进行单独通讯的时候都能正常通讯。

#OpenMv的代码: 我使用的初始代码:

while(True):
    uart.write("green")
    time.sleep_ms(1000)

    uart.write("blue")
    time.sleep_ms(1000)

openmv串口发送字符,没有结束符。开始的时候就有想到这个问题,但stm方面的代码也有问题,就没有得到认证,后面慢慢改正才确定是这个问题。 所以openmv程序代码不改的话,就算stm方面能正常接受。openmv发送出去不同的字符串就会被认为是同一条字符串,这样就不能达到我们识别信息的目的了。

在ascii吗中 这两个字符串的编码分别是0x0d和0x0a。这是我在查看openmv串口通讯例程和电脑通讯时发现的。

while(True):
    uart.write("Hello World!
")
    time.sleep_ms(1000)

那么,如果我在green后面加上 这两个字符。不就是相当于stm串口通讯要求的以0x0d 0x0a结尾了吗? 下面展示一些 内联代码片。

while(True):
    uart.write("green
")
    time.sleep_ms(1000)

    uart.write("blue
")
    time.sleep_ms(1000)

可以看出,openmv发送出去的字符串能被分割开了,stm方面也能正常接受到。

因为篇幅的原因,stm方面的代码在下一章写。

小白一枚,第一次写博客,多多指教!有什么问题及错误的地方,欢迎提出。

stm32方面的问题讲解已经出来啦:

经验分享 程序员 微信小程序 职场和发展