时钟节拍中断函数OSTickISR()的示意性代码是:
void OSTickISR(void)
{
保存CPU寄存器;
调用OSIntEnter(); //记录中断嵌套层数
if(OSIntNesting==1)
{
OSTCBcur->OSTCBStkPtr=sp; //在任务TCB中保存堆栈指针
}
调用OSTimeTick();
清除中断;
开中断;
调用OSIntExit();
恢复CPU寄存器;
中断返回;
}
哦,要进行一次任务切换,把这个敲一遍就发现了。。先没注意看这个函数OSIntExit()、只跑去研究这个函数去了OSTimeTick();
这个OSIntExit()条件满足时会进行一次任务切换、、
|