OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3061|回复: 3

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

[复制链接]

7

主题

32

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
253
金钱
253
注册时间
2016-7-6
在线时间
49 小时
发表于 2017-7-27 23:09:35 | 显示全部楼层 |阅读模式
10金钱
用的是stm32f103RCT6的串口1进行串口数据的接收,在运用中,将一个串口模块接在串口1上,该模块只是简单地向串口发送两个指令,一条指令是FF11EE,另外一条指令是FF00EE,串口程序用的是原子哥开发板的程序,现在遇到一个情况,就是在程序运行最开始的时候,当模块向单片机发送FF11EE的时候,单片机没反应,再次发送FF00EE同样没反应,但是,奇怪的事情来了,第三次以后发送的指令,不论是FF11EE还是FF00EE,单片机均会正确相应,并且与预想的结果一致,现在就是对刚开始那会单片机没反应,感觉很不解,找了2天了,还没找出为什么,来个大神帮帮忙。
在中断程序里面,只是在里面判断是不是以ee结尾,如果是则接收完成。
在main函数判断是不是接受完成,如果是则执行对应操作

串口初始化

串口初始化

主函数while(1)判断

主函数while(1)判断

串口中断程序

串口中断程序

最佳答案

查看完整内容[请看2#楼]

USRAT_RX_STA上电要初始化,STM32单片机有些中断,上电开启就会自动进入中断一次,而你写的逻辑也不够紧密, 判断接收FF开始清USRAT_RX_STA,并开始接收计数,当接收3个字节标记接收完成,这样才能保证USRAT_RX_BUF[1]为你要的数据。不然接收错位数据虽然有接收,但main处理不到正确的USRAT_RX_BUF[1]
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

17

主题

587

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4467
金钱
4467
注册时间
2013-6-27
在线时间
565 小时
发表于 2017-7-27 23:09:36 | 显示全部楼层
USRAT_RX_STA上电要初始化,STM32单片机有些中断,上电开启就会自动进入中断一次,而你写的逻辑也不够紧密,
判断接收FF开始清USRAT_RX_STA,并开始接收计数,当接收3个字节标记接收完成,这样才能保证USRAT_RX_BUF[1]为你要的数据。不然接收错位数据虽然有接收,但main处理不到正确的USRAT_RX_BUF[1]
让我们的思维驾驭在电的速度之上!
回复

使用道具 举报

7

主题

32

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
253
金钱
253
注册时间
2016-7-6
在线时间
49 小时
 楼主| 发表于 2017-7-28 08:27:33 | 显示全部楼层
原子哥呢,大神们都来帮帮忙吧,我下载到战舰开发板实验还是一样的效果。
回复

使用道具 举报

7

主题

32

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
253
金钱
253
注册时间
2016-7-6
在线时间
49 小时
 楼主| 发表于 2017-7-28 08:51:18 | 显示全部楼层
DongInker 发表于 2017-7-28 08:46
USRAT_RX_STA上电要初始化,STM32单片机有些中断,上电开启就会自动进入中断一次,而你写的逻辑也不够紧密 ...

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-16 19:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表