关于stm32串口接收,为什么串口中断不能接收前两帧数据?

2019-08-16 19:28发布

用的是stm32f103RCT6的串口1进行串口数据的接收,在运用中,将一个串口模块接在串口1上,该模块只是简单地向串口发送两个指令,一条指令是FF11EE,另外一条指令是FF00EE,串口程序用的是原子哥开发板的程序,现在遇到一个情况,就是在程序运行最开始的时候,当模块向单片机发送FF11EE的时候,单片机没反应,再次发送FF00EE同样没反应,但是,奇怪的事情来了,第三次以后发送的指令,不论是FF11EE还是FF00EE,单片机均会正确相应,并且与预想的结果一致,现在就是对刚开始那会单片机没反应,感觉很不解,找了2天了,还没找出为什么,来个大神帮帮忙。
在中断程序里面,只是在里面判断是不是以ee结尾,如果是则接收完成。
在main函数判断是不是接受完成,如果是则执行对应操作
串口初始化 串口初始化 主函数while(1)判断 主函数while(1)判断 串口中断程序 串口中断程序

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
DongInker
1楼-- · 2019-08-16 22:08
USRAT_RX_STA上电要初始化,STM32单片机有些中断,上电开启就会自动进入中断一次,而你写的逻辑也不够紧密,
判断接收FF开始清USRAT_RX_STA,并开始接收计数,当接收3个字节标记接收完成,这样才能保证USRAT_RX_BUF[1]为你要的数据。不然接收错位数据虽然有接收,但main处理不到正确的USRAT_RX_BUF[1]
七年磨一剑
2楼-- · 2019-08-16 23:56
 精彩回答 2  元偷偷看……
七年磨一剑
3楼-- · 2019-08-17 00:08
DongInker 发表于 2017-7-28 08:46
USRAT_RX_STA上电要初始化,STM32单片机有些中断,上电开启就会自动进入中断一次,而你写的逻辑也不够紧密 ...

大神,谢谢你,果然解决了。多谢。

一周热门 更多>