uCOS-II内核之时钟节拍
在uCOS-II里,时钟节拍就好比是人的心脏一样重要。它对于CPU能顺利在各任务间切换有着至关重要的作用。
uCOS-II需要用户提供时钟源。使用时钟源有一个特别需要注意的地方:用户必须在多任务系统启动以后再开启时钟节拍器,也就是在调用OSStart()之后。
Ucos II中的时钟节拍服务是通过在定时器中断服务子程序中调用OSTimeTick()实现的。
OSTimeTick()代码如下:
在uCOS-II里,时钟节拍就好比是人的心脏一样重要。它对于CPU能顺利在各任务间切换有着至关重要的作用。
uCOS-II需要用户提供时钟源。使用时钟源有一个特别需要注意的地方:用户必须在多任务系统启动以后再开启时钟节拍器,也就是在调用OSStart()之后。
Ucos II中的时钟节拍服务是通过在定时器中断服务子程序中调用OSTimeTick()实现的。
OSTimeTick()代码如下:
void OSTimeTick (void)
{
OS_TCB *ptcb;
OSTimeTickHook(); //(1)
ptcb = OSTCBList; //(2)
while (ptcb->OSTCBPrio != OS_IDLE_PRIO) { //(3)
OS_ENTER_CRITICAL();
if (ptcb->OSTCBDly != 0) {
if (--ptcb->OSTCBDly == 0) {
if (!(ptcb->OSTCBStat & OS_STAT_SUSPEND)) { //(4)
OSRdyGrp |= ptcb->OSTCBBitY; //(5)
OSRdyTbl[ptcb->O