vb和stm32单片机串口通讯,vb用mscomm控件发送数据给stm32单片机串口1,单片机串口部分怎么做

请问usart怎么才能做到可以接收到vb发来的数据,但在vb不发送的时候去处理其它问题
vb不确定什么时间发送一帧数据给usart,要保证vb一旦发送usart就能接收到,现在我的做法是usart开接收中断,如果接收一帧数据且校验成功才退出中断,但是这种做法的缺点是,如果vb不发送数据过来,要一直等直至接收到且成功才退出中断,但是这个过程中不能处理其它程序,只能一直等待vb发送数据过来
谢谢

看你的描述似乎并不是用的stm32的串口中断,如果是中断的话,在串口数据过来之前,stm32可以做别的事情啊,等串口有数据了才会去响应处理中断服务。感觉好像你用的是查询的方式,一直在查中断的标志,并不是中断的方法追问

我是开了中断的,但是中断里有个接收成功标志,我在主程序里开了中断后,写了句while(接收不成功);就是说接收到了足够字节的一帧数据后,主程序才会向下运行,要不一直等待;我想问的是怎么做才能即接收到完整的数据又能不影响其它程序的运行
谢谢

追答

对,所以其实你用的是查询法,不是中断法。
中断法是指产生接受的中断以后,会自动进入中断服务子程序,你只要在中断服务子程序里写你要做的处理就行。处理完后它会回到主程序main,继续做别的事情。建议你查一下单片机中断法的使用。

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-04-20
mscomm
是事件的驱动,没有收到时,就是“空闲”状态。

uart开接收中断 ,等待发送,可以再添加一个超时控制,超时后关闭中断。本回答被网友采纳

VB 发送十六进制串口数据
MSComm1.Settings = "9600,n,8,1" MSComm1.PortOpen = True End Sub 本回答被网友采纳 zdingyun | 工程师 | 推荐于2017-12-16 12:13:52 举报| 评论 2 2 关键是要搞清楚,想发送的数据类型,如字符串,还是二进制数(命令),我的理解是你要通过串口某些设备的数据,那就要发送二进制命令数据...先定义...

如何为串口通讯增加新的波特率
stm32串口 波特率如何在线更改 先关闭串口,修改好后开启;正在通信时不可以修改。用个函数,使用固件库 void USART_Config(uint32_t baud) { USART_InitTypeDef USART_InitStructure; USART_Cmd(USART1, DISABLE); USART_InitStructure.USART_BaudRate =baud USART_InitStructure.USART_WordLength ...

相似回答
大家正在搜