请教关于uC/OS II的延时函数
1.请问下面这段程序的执行情况怎样?Task_A ()
{
while(1)
{
A段;
OSTimeDly(1);
B段;
}
}
(1)是否任务到OSTimeDly(1)处就会被挂起?
(2)延时到后,是接着执行B段,还是重新执行A段?如果执行A段,那B段是否就永远不会被执行?
2.请问OSTimeDly()是不是只能延时任务?
在任务调用的用户函数中,能否使用OSTimeDly()来延时?如果使用OSTimeDly(),那是否将会挂起调用该用户函数的任务?
3.在uC/OS II中,是否存在延时函数,在任务调用的用户函数中可以调用?
请大虾们解惑,谢谢! (1)是否任务到OSTimeDly(1)处就会被挂起?
绝对的挂起
(2)延时到后,是接着执行B段,还是重新执行A段?如果执行A段,那B段是否就永远不会被执行?
执行B,如果在延时中发生中断,则执行中断后,执行被中断激活的,比此任务有更高优先级的任务,后返回B
2.请问OSTimeDly()是不是只能延时任务?
在任务调用的用户函数中,能否使用OSTimeDly()来延时?如果使用OSTimeDly(),那是否将会挂起调用该用户函数的任务?
S
3.在uC/OS II中,是否存在延时函数,在任务调用的用户函数中可以调用? 2.请问OSTimeDly()是不是只能延时任务?
在任务调用的用户函数中,能否使用OSTimeDly()来延时?如果使用OSTimeDly(),那是否将会挂起调用该用户函数的任务?
是的,同(2)
3.在uC/OS II中,是否存在延时函数,在任务调用的用户函数中可以调用?
OSTimeDly()唯一的延时函数,如果你自己写延时(不保护sp,堆栈啥的),在延时期间有中断,则程序必飞 To csformat:谢谢你的解答!
“OSTimeDly()唯一的延时函数,如果你自己写延时(不保护sp,堆栈啥的),在延时期间有中断,则程序必飞”
会这样吗?
我在任务调用的用户函数中再调用下面的延时函数会有问题吗?
void Delay_xMS(u8 k)
{
u16 i,j;
for(i=k+1;i>0;i--)
{
for(j=0xFFFF;j>0;j--) ;
}
} 回复【3楼】Liuyk_0321
-----------------------------------------------------------------------
此延时非彼延时。
两个延时的作用不一样的。
OSTimeDly()可以把当前的任务挂起,也就是系统可以去执行其他的任务。
而你的延时纯粹是在这个干耗时间。 OSTimeDly() 中调用了调度函数 任务可能会切换
页:
[1]