在stm32中的串口2中程序如下,那openmv要怎样输出呢
-
if(USART2->SR&(1<<5))
{
static u8 Flag_PID,i,j,Receive[50];
static float Data;
Usart_Receive=USART2->DR;
if(Usart_Receive==0x10) qjbl=4;
在stm32中的串口2中程序如上,那openmv要输出怎样的信号,stm32才会用上面的程序识别得了。或者说让qjbl=4。
我在openmv用uart.write(hex(16))和data=bytearray([0x10])
uart.write(data)
还有data=bytearray(0x10)
uart.write(data)都不行。程序是对的,可以运行,我把P4和stm32的接受串口连在一起了,地线也连在一起了
-
看来你一点都不懂编码的事情,也不知道怎么调试。
OpenMV 直接uart.writechar(16)
最起码买一个串口调试扩展板,看一下OpenMV 到底发送了什么数据。
来自星瞳实验室APP: OpenMV串口调试扩展板 https://singtown.com/product/49906/openmv-uart-debug-shield/
-
@kidswong999(暴露了⊙ω⊙,其实我是机电的,只学过c语言) 我试了,为什么还是不行捏。
我把stm32中的if(Usart_Receive==0x10)去掉,stm32一检测到东西qjbl就等于4了。为什么加了if(Usart_Receive==0x10)就不行了呢。下面是我的openmv上面的程序如果是红色,执行此函数
def doWithRed(img):
markCurColor(img, "RED", (255, 0, 0))
uart.writechar(16)
print(16)
-
不知道,最正确的调试思路,是用示波器看一看OpenMV 的数据。
-
@kidswong999 我能不能把问题换成stm32的问题再问问。
-
硬件通信方面,没有调试工具,怎么写都白搭,就是瞎写。
-
@kidswong999 好的,谢谢啦!
-
@kidswong999 我已经搞定了♬(ノ゜∇゜)ノ♩。是波特率没调过来。对不起,打扰你这么多次。