几乎任何操作系统都需要有空闲任务。
因为CPU(提供CPU级休眠的不算)没办法停下来,尤其是嵌入式系统这一块。
CPU停下来的唯一情况就是断电了,而要保持操作系统任何时候都能及时的对外做出响应,就必须有一个任务在那等着,这个任务就是Idle,大部分操作系统上都需要有这个任务。
普通的CPU如果停下来,就收不到任何外部中断或者别的东西了,跟死机没区别,所以CPU不能停。
当然了,也有能进入省电模式的CPU,这个另说,通用的设计是必须要保留空闲任务的。
简单的说就是 咱们的CPU 上电后就一直是转动的 ,必须的有个任务给人间捧场,让他继续转动,不能 停下来,,因为我们的UCOS 号称是RTOS 实时操作系统,想让Z自己做到实时,,就必须一直等待,等待响应,不能休眠。还有,咱们的空闲任务是没有延时的。是一直处于就绪状态,没高优先级任务他就就溜达,IDLE,HAHA 真正任务切换是OSTimeTick();
OSTimeTick()中将每个用户任务控制块OS_TCB中的时间延时项OSTCBDly减1(就是在任务中OSTimeDly();所设定的延时时间减一)。当某任务的任务控制块中的时间延时项OSTCBDly减到了零,这个任务就进入了就绪态。