2u

手把手,嘴对嘴,讲解UCOSII嵌入式操作系统的任务调度策略(三)

只愿长相守 提交于 2019-12-12 22:56:56
继续...... if (ticks > 0u) { /* 0 means no delay! */ OS_ENTER_CRITICAL(); y = OSTCBCur->OSTCBY; /* Delay current task */ OSRdyTbl[y] &= (OS_PRIO)~OSTCBCur->OSTCBBitX; if (OSRdyTbl[y] == 0u) { OSRdyGrp &= (OS_PRIO)~OSTCBCur->OSTCBBitY; } OSTCBCur->OSTCBDly = ticks; /* Load ticks in TCB */ OS_EXIT_CRITICAL(); OS_Sched(); /* Find next task to run! */ } 依然是这一部分,接下来的重点是这个函数:OS_Sched() 这个函数实在是太重要了,因此我不得不慎重。 首先看一下官方的注释: /********************************************************************************************************* * SCHEDULER * * Description: This function is called by other uC/OS-II