打印

STM32 在串口中断程序中调用OSQPost()的问题

[复制链接]
5131|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jgphu|  楼主 | 2012-3-31 10:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在STM32 在串口中断程序中调用OSQPost()时,在任务中调用OSQPend()等待接收队列的消息,结果接收的数据是错误的。

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

不知道是啥原因。

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

请高手帮忙分析一下。
沙发
i55| | 2012-3-31 15:42 | 只看该作者
贴源码

使用特权

评论回复
板凳
zhouguoping| | 2013-1-24 18:14 | 只看该作者
你好!
这个问题吗,估计你用的是局部变量,因为你在中断中调用OSQPost发送出你的消息后,然后你的中断函数结束了,局部变量的生存期也就Over了,所以在任务中你再去取那则消息时,早就被别人给上了!;P

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

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

642

帖子

2

粉丝