问题发现:当有一个任务没有进入延时的时候,这个任务就会一直执行不会挂起。就算有高优先级的任务已经准备好了,得等低优先级的任务执行完,或处于就绪态的时候,才能响应高优先级的的任务。所以任务里必须要有ucos ii系统里的延时函数,否则,没有延时函数的某优先级的任务会一直执行(当然也可以没有延时函数,只是必须要出现任务调度的代码)。
那么问题来了,为什么必须要使用系统里的延时函数呢?原因其实很简单:系统延时函数(OSTimeDly())调用了OS_Sched()函数,而OS_Sched()函数是根据任务就绪表找到当前就绪态的最高优先级任务。因此,本质上说我们需要在