7381|3

1

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

STM32 在串口中断程序中调用OSQPost()的问题 [复制链接]

我在STM32  在串口中断程序中调用OSQPost()时,在任务中调用OSQPend()等待接收队列的消息,结果接收的数据是错误的。

但是我在一个任务中调用OSQPost(), 在另一个任务调用OSQPend()等待接收队列的消息,结果接收的数据是正确的。

不知道是啥原因。

我也做过一些实验 :
1. 不用操作系统的的消息队列,而是自己建立一个队列去接收串口消息, 结果是 接收的消息是正确的。
2.  我在串口中断程序中调用OSQPost()时,给OSQPost的参数消息是一个固定的值,结果接收的数据不是给定的那个值。

请高手帮忙分析一下。

最新回复

还没开始研究UCOS2的消息邮箱和消息队列,就来围观一下高质量的技术讨论贴吧。  详情 回复 发表于 2013-1-25 16:15
点赞 关注

回复
举报

7

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
显然问题出在串口中断程序那了,LZ贴出代码来吧
 
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

板凳
 

OSQPost

你好!
这个问题吗,估计你用的是局部变量,如果这样,当你在中断中调用OSQPost发送出你的消息后,然后你的中断函数结束了,局部变量的生存期也就Over了,所以在任务中你再去取那则消息时,早就被别人给上了!

为什么任务中可以呢?估计你的消息是在任务的while(1){}之前定义的,这个变量永远不会消失,除非while(1)退出。所以你发出的消息,在再别的地方取时是没有问题的。

你可知否?OSQPost和OSMboxPost只是传地址,而非实实在在的将消息内容传到邮箱或者是邮箱队列中。

[ 本帖最后由 zhouguoping 于 2013-1-24 18:23 编辑 ]
 
 
 

回复

436

帖子

5

TA的资源

五彩晶圆(初级)

4
 
还没开始研究UCOS2的消息邮箱和消息队列,就来围观一下高质量的技术讨论贴吧。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表