完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
请问如下的一个任务里面,有条件的消息队列请求,如果初始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); ......... } |
|
相关推荐
4个回答
|
|
不要沉,没人遇到这样的情况吗?
|
|
|
|
1, 按你的程序流程, 如果if不成功,程序返回到while(1)处, 你的程序一直在while----if循环,即使有消息发过来你也处理不了;如果系统发生中断或其他调度事件,再次返回到的位置是①;2,如果if成功, OSTaskQPend等待消息, 如果没有消息,触发系统调度;此时你这个任务阻塞在这个消息队列上;若无其他处理只有当其他任务或中断发送消息到这个任务,才会再次触发这个任务,此时回到的位置是②;
3, 你这个流程是不对的,应该先等待消息,在按消息情况处理; |
|
|
|
谢谢哈~!看样子我验证调试的结果没错
|
|
|
|
在这个while 任务程序中,
if不管成不成立都会从 1 位置运行,再返回到 1 位置 一直循环. 不同的是,当任务被挂起或其它原因停止执行此循环. 程序就会暂停在离开任务的某个位置. |
|
|
|
只有小组成员才能发言,加入小组>>
684 浏览 0 评论
1100 浏览 1 评论
2465 浏览 5 评论
2799 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2638 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
648浏览 9评论
642浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
775浏览 6评论
619浏览 5评论
661浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 16:34 , Processed in 1.060337 second(s), Total 87, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号