嵌入式学习小组
直播中

尚文清

8年用户 1689经验值
私信 关注

请问UCOS任务切换调用OSTimeDlyHMSM延时函数 延时时间到了会立即返回吗?

UCOS 任务切换调用OStimeDlyHMSM延时函数,延时结束后会立即返回原来的任务吗?
比如说这时候有更高优先级的任务正在执行,但是延时的时间到了,那么会立即返回吗。
还有一个问题,比如我用OSTimeDlyHMSM延时了一秒,然后也会切换任务,这时候我切换的那个任务执行完了也会执行OSTimeDlyHMSM语句吧,这样又有一次任务切换,然后进入再一次任务等等等,这样一秒的时间早晚会用完,并且时间差都差不多,感觉这样会出问题啊

回帖(5)

刘世晓

2020-3-30 10:09:03
这个是不会准确的,要准确还是采用定时器吧! OS有个任务优先级的抢占,如果你当前的任务级别是最高的,你说的这个情况是成立的,延迟时间到后,反回你的函数下一行代码,但这中间如果有便件中断或更高级别的任务发生,就算是时间到了,当前任务依然无法得到CPU的使用权。
举报

王志强

2020-3-30 10:14:20
OSTimeDlyHMS延时结束以后不一定会返回原来的任务!延时结束以后系统会重新查找下一个就绪了的优先级最高的任务,原来的任务不一定是优先级最高的。
举报

莫钻红

2020-3-30 10:26:16
谢谢!
还有一个问题也有点不懂,任务A切换时调用OSTimeDlyHMSM函数后进入当前优先级最高的任务B,所以任务A的OSTimeDlyHMSM,只会进行一次任务切换吗,如果再切换到任务C就是任务B的OSTimeDlyHMSM起作用了吗?
举报

刘思思

2020-3-30 10:33:48
谢谢!请问调用OSTimeDlyHMSM是不是会发生两次任务调度,第一次是刚开始执行这个函数时,第二次是时间到了的时候?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分