第五篇:完善的协作式的内核——OSTaskSuspend
//挂起任务
void OSTaskSuspend(unsigned char prio)
{
TCB[prio].OSWaitTick=0;
OSRdyTbl &= ~(0x01<<prio); //从任务就绪表上去除标志位
if(OSTaskRunningPrio==prio) //当要挂起的任务为当前任务
OSSched(); //从新调度
}
实质和OSTimeDly步骤一样:
1.删除就绪表——>2.OSWaitTick清零——>3.任务调度