OSTimeTick()函数解析
(2011-06-22 22:19:33)
标签:
杂谈 |
分类: uCOS_ii |
void OSTimeTick (void) //这个节拍服务函数是在OSTickISR函数中调用的,目的是在时钟节拍到来时,检查每个任务的任务控制块中的.OSTCBDly-1后是否为0,如果是,那么表明这个任务刚才是挂起的状态,此时应改变为就绪态
{
OS_TCB *ptcb;
OSTimeTickHook(); //
ptcb = OSTCBList;
//时钟节拍到来时,将控制块双向链表的第一个控制块取出(并不是节拍之前运行的任务)
// OS_ENTER_CRITICAL();
OSRdyGrp
|= ptcb->OSTCBBitY;
OSRdyTbl[ptcb->OSTCBY] |=
ptcb->OSTCBBitX;
ptcb->OSTCBDly = 1; //
}
}
}
ptcb =
ptcb->OSTCBNext; //下一个任务控制块
// OS_EXIT_CRITICAL();
}
// OS_ENTER_CRITICAL();
//
OSTime++; //节拍计数器+1
// OS_EXIT_CRITICAL();
}
{
}