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

[复制链接]
5689|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

粉丝
快速回复 在线客服 返回列表 返回顶部