啊,丢人,抱歉,是我自己问题,串口初始化写成3了,改回1之后一切正常
U
uzn1
@uzn1
0
声望
4
楼层
725
资料浏览
1
粉丝
0
关注
uzn1 发布的帖子
-
openmv 串口发送没有问题,但是串口接收不到数据
这是发送的,没有问题,但是接收有问题,import time from pyb import UART uart = UART(3,9600,timeout_char=1000) print(1) while(True): if uart.any(): a =uart.readline() print(a)
-
RE: openmv 单独通过usb转串口可以将数据发送到串口助手显示将RX TX连接到stm32的TXRX上后无法读取到数据
问题已解决,现在将经验分享下,最主要的问题是stm32的代码,每次接受到数据后要在接受0x0d与0x0a,才为一次正常的数据接收,于是在要发送的数据后面加上,就可以得到了
![0_1571212459040_A6(MH_4DS8)HH2]FS{`F0TH.png](https://fcdn.singtown.com/21e6e99f-8270-42cb-a9ef-538b2cbe78ec.png)while(True): data=bytes([0x0d,0x0a])# 数据接收结束标志 uart.write(str(num)) uart.write(data) time.sleep(1000)
接线,我用的是usb转串口,将openmv TX RX引脚分别接到STm32的RX,TX引脚上,共地,然后在将stm32的TX,RX引脚接到usb转串口上即可!
-
openmv 单独通过usb转串口可以将数据发送到串口助手显示将RX TX连接到stm32的TXRX上后无法读取到数据
openmv代码
import time from pyb import UART uart = UART(1, 9600) num=1 while(True): uart.write(str(num)) time.sleep(1000)
stm32代码
int main(void) { u8 t; u8 len; u16 times=0; delay_init(); //ÑÓʱº¯Êý³õʼ»¯ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// ÉèÖÃÖжÏÓÅÏȼ¶·Ö×é2 uart_init(9600); //´®¿Ú³õʼ»¯Îª9600 LED_Init(); //³õʼ»¯ÓëLEDÁ¬½ÓµÄÓ²¼þ½Ó¿Ú while(1) { if(USART_RX_STA&0x8000) { len=USART_RX_STA&0x3fff;//µÃµ½´Ë´Î½ÓÊÕµ½µÄÊý¾Ý³¤¶È printf("\r\nÄú·¢Ë͵ÄÏûϢΪ:\r\n"); for(t=0;t<len;t++) { USART1->DR=USART_RX_BUF[t]; while((USART1->SR&0X40)==0);//µÈ´ý·¢ËͽáÊø } printf("\r\n\r\n");//²åÈë»»ÐÐ USART_RX_STA=0; }else { times++; if(times%5000==0) { printf("\r\nALIENTEK MiniSTM32¿ª·¢°å ´®¿ÚʵÑé\r\n"); printf("ÕýµãÔ×Ó@ALIENTEK\r\n\r\n\r\n"); } if(times%200==0)printf("ÇëÊäÈëÊý¾Ý,ÒԻسµ¼ü½áÊø\r\n"); if(times%30==0)LED0=!LED0;//ÉÁ˸LED,ÌáʾϵͳÕýÔÚÔËÐÐ. delay_ms(10); } } }