OpenEdv-开源电子网

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

UCOSiii消息队列请求疑惑

[复制链接]

8

主题

63

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
422
金钱
422
注册时间
2016-11-19
在线时间
111 小时
发表于 2017-1-12 17:17:10 | 显示全部楼层 |阅读模式
请问如下的一个任务里面,有条件的消息队列请求,如果初始if条件成立,开始请求消息,但是消息一直没有请求到,此时令if条件不成立,那还会进行请求吗?
也就是说,开始消息请求之后,每次进行任务调度后回到此任务的位置,是在①号位还是②号位,请各位大神不吝赐教!!!
while(1)
{
  ----------------------------------------------------------------------------------------------------------------------①
  if((comm_done==ALLOW_COMM_DEAL)
{
   walk_state_auto=OSTaskQPend((OS_TICK)0, -------------------------------------------------------②   
                                               (OS_OPT        )OS_OPT_PEND_BLOCKING,


                                                (OS_MSG_SIZE*)&size,
                                               (CPU_TS*        )0,
                                              (OS_ERR*  )&err);
  .........
}





正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

63

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
422
金钱
422
注册时间
2016-11-19
在线时间
111 小时
 楼主| 发表于 2017-1-12 17:30:26 | 显示全部楼层
原子哥,各位老师请指教~!
回复 支持 反对

使用道具 举报

8

主题

63

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
422
金钱
422
注册时间
2016-11-19
在线时间
111 小时
 楼主| 发表于 2017-1-12 17:48:23 | 显示全部楼层
不要沉,没人遇到这样的情况吗?
回复 支持 反对

使用道具 举报

2

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
214
金钱
214
注册时间
2014-12-29
在线时间
36 小时
发表于 2017-1-12 22:52:00 | 显示全部楼层
1,   按你的程序流程, 如果if不成功,程序返回到while(1)处, 你的程序一直在while----if循环,即使有消息发过来你也处理不了;如果系统发生中断或其他调度事件,再次返回到的位置是①;2,如果if成功, OSTaskQPend等待消息, 如果没有消息,触发系统调度;此时你这个任务阻塞在这个消息队列上;若无其他处理只有当其他任务或中断发送消息到这个任务,才会再次触发这个任务,此时回到的位置是②;
3, 你这个流程是不对的,应该先等待消息,在按消息情况处理;
回复 支持 反对

使用道具 举报

8

主题

63

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
422
金钱
422
注册时间
2016-11-19
在线时间
111 小时
 楼主| 发表于 2017-1-13 08:15:00 | 显示全部楼层
hhlh2l 发表于 2017-1-12 22:52
1,   按你的程序流程, 如果if不成功,程序返回到while(1)处, 你的程序一直在while----if循环,即使有消息 ...

谢谢哈~!看样子我验证调试的结果没错
回复 支持 反对

使用道具 举报

3

主题

95

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2451
金钱
2451
注册时间
2015-11-1
在线时间
300 小时
发表于 2017-1-13 12:22:29 | 显示全部楼层
在这个while 任务程序中,
if不管成不成立都会从 1 位置运行,再返回到 1 位置 一直循环.

不同的是,当任务被挂起或其它原因停止执行此循环.
程序就会暂停在离开任务的某个位置.
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-2 00:23

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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