ucosII 中任务调度的问题
大家都知道任务调度延时函数是OSTimeDlyHMSM(0,0,1,0);那么是否可以用别的延时函数代替?
为什么可以这样做呢? 可以,换汤不换药,OSTimeDly(1);下面的链接可以学习下
http://blog.csdn.net/h32dong809/article/details/7082511 有现成的为什么不用呢 OSTimeDlyHMSM ()功能的作用
本质上是任务主动交出运行权,然后内核会去就绪表中运行最高优先级任务。等到延时时间到后,操作系统会自动把该任务重新置为就绪状态等待获取CPU控制权。
为什么要OSTimeDlyHMSM ()
当一个任务获得运行权后,任务不能一直占用CPU,否则其他任务就无法运行,任务做完了他的事后需要把运行权交出去。如果该任务交出运行权后还想过一段时间后再次无条件运行,那么一般调用的就是用就是操作系统提供的延时函数。 本帖最后由 lishutong 于 2017-11-18 10:46 编辑
不知道你指的别的延时函数是什么?
ucos有提供另外一个延时函数,OSTimeDly(1).这两个本质上没有什么区别。但是相比之下, OSTimeDlyHMSM可以时间更长时间的延时,而且更容易使用。
如果你指的是自己定义函数的话,在有一些情况是不能替代的。系统延时函数有他的优点,也有它的缺点。自定义的函数同样也有着缺点和优点。
相对来说,使用系统延时函数的最大好处在于:在延时过程中,CPU可以切换到其他的任务运行,在很大程度上,可以提升CPU的利用率。
一般情况下,最好是根据你的实际应用需求来决定使用哪一种延时。
关于这些延时函数的具体优缺点,你看下我这篇**:http://01ketang.cc/rtos/rtos-sys-delay.html
我感觉楼主要去看的是上下文切换的原理 可以,不过需要注意上下文切换。 最好不要要自己写的延时函数。
页:
[1]