嵌入式学习小组
直播中

张琴

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

UCOSIII延时函数任务怎么调度?

OStimeDlyHMSM(0,0,0,10,OS_OPT_TIME_PERIODIC,&err);   延时10ms。对于这样的延时函数,会触发任务调度。我的问题是任务调度完,回到延时函数,继续等够10ms。还是执行其他函数所花费的时间也算是这个10ms里面????

回帖(4)

李宸如

2020-4-10 07:55:31
你要先弄清楚,延时函数的意义。
OSTimeDlyHMSM(0,0,0,10,OS_OPT_TIME_PERIODIC,&err); 的延时,就是释放CPU去做其他事。
执行其他任务时间是算在这10ms里。
但执行其他任务如果高于当前任务,那是要等其他任务做完才回来。时间是会超过10ms
但执行其他任务如果低于当前任务,   不用等其他任务做完就回来。时间不是会超过10ms
举报

张小林

2020-4-10 08:02:13
延时函数发送调度,执行就绪的其他任务后,延时时间没到,继续等,时间到了,就向下执行。
他任务如果优先级高的话(时间大于10ms),要等其他任务完成,才能回来。如果其他任务优先级低(任务大于10ms),就不需要等其他任务完成,直接回来执行下面的程序。
举报

张莹

2020-4-10 08:19:47
““执行就绪的其他任务后””我想请教一下执行其他就绪的任务时间算不算算在10ms这里面。还是额外的时间。如果其他高优先级就绪时间里面又有延时10ms,这个原函数的时间延迟是不是误差就特别大了了。
举报

孙婷婷

2020-4-10 08:36:17
谢谢 我明白了了
举报

更多回帖

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