OpenEdv-开源电子网

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

串口中断函数在接受完数据做相应处理的时候只能执行一个任务,当多任务的时候系统就”死机了“

[复制链接]

31

主题

69

帖子

0

精华

初级会员

Rank: 2

积分
140
金钱
140
注册时间
2021-3-12
在线时间
49 小时
发表于 2021-7-30 12:01:44 | 显示全部楼层 |阅读模式
5金钱
2.png 3.png 一个是接收2个字节来判断继电器的开关,另一个是接收3个字节,后面两个字节与温度(REG[0])做对比,当两个函数放在一起的时候,如果先接收2个字节,第一个函数会执行,再接收3个字节,第二个函数就没反应了,如果先接收3个字节,则两个函数都没反应。当我把第一个函数注释掉后,接收3个字节第二个函数也会执行,这个问题是出在哪呢?请教个各位大佬!!。。这调试太痛苦了啊

最佳答案

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

每接收一个字节就会if(USART_RX_STA&0X3FFF ==2 )判断这个 当接收到第二个字节时,进入了if(USART_RX_STA&0X3FFF ==2 ) 然后就把USART_RX_STA给清了 当接收第三个时, USART_RX_STA&0X3FFF 这个就为1了,而不是你认为的3 问题就在USART_RX_STA的清除时机上
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

17

主题

175

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1016
金钱
1016
注册时间
2014-4-7
在线时间
99 小时
发表于 2021-7-30 12:01:45 | 显示全部楼层
本帖最后由 亲亻尔嘴 于 2021-7-30 14:31 编辑

每接收一个字节就会if(USART_RX_STA&0X3FFF ==2 )判断这个

当接收到第二个字节时,进入了if(USART_RX_STA&0X3FFF ==2 )   然后就把USART_RX_STA给清了   

当接收第三个时, USART_RX_STA&0X3FFF  这个就为1了,而不是你认为的3

问题就在USART_RX_STA的清除时机上
在你没有做出成绩之前,这个世界不会在乎你的自尊。
回复

使用道具 举报

31

主题

69

帖子

0

精华

初级会员

Rank: 2

积分
140
金钱
140
注册时间
2021-3-12
在线时间
49 小时
 楼主| 发表于 2021-7-30 16:41:55 | 显示全部楼层
亲亻尔嘴 发表于 2021-7-30 14:30
每接收一个字节就会if(USART_RX_STA&0X3FFF ==2 )判断这个

当接收到第二个字节时,进入了if(USART_RX_ST ...

可是不管我怎么改后面这个都进入不了,两个函数始终有关联,怎样才能跳过第一个函数执行第二个函数??
回复

使用道具 举报

17

主题

175

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1016
金钱
1016
注册时间
2014-4-7
在线时间
99 小时
发表于 2021-8-2 10:12:16 | 显示全部楼层
本帖最后由 亲亻尔嘴 于 2021-8-2 10:13 编辑
机智的杨柯基 发表于 2021-7-30 16:41
可是不管我怎么改后面这个都进入不了,两个函数始终有关联,怎样才能跳过第一个函数执行第二个函数??

楼主自己解决了没?


把判断完if(USART_RX_STA&0X3FFF ==2 )后的USART_RX_STA=0,往上移动一行,放到 } 的里面
建议以后贴图代码时 把行号也截进去
在你没有做出成绩之前,这个世界不会在乎你的自尊。
回复

使用道具 举报

31

主题

69

帖子

0

精华

初级会员

Rank: 2

积分
140
金钱
140
注册时间
2021-3-12
在线时间
49 小时
 楼主| 发表于 2021-8-2 21:35:29 | 显示全部楼层
亲亻尔嘴 发表于 2021-8-2 10:12
楼主自己解决了没?

已解决,后面利用状态判定来判断接收为,当接收到第一位字节后根据字节进入相应的判定状态进行后续字节的接收就可以完成了。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-25 19:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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