μC/OS中高优先级任务一旦处于就绪态总能获得C(4)

    LDMFD   SP!,{R4}              //将当前堆栈保存的数据弹出一个到R4,即将被中断的任务的CPSR保存到R4

    MSR              SPSR_cxsf,R4

    LDMFD   SP!,{R0-R12,LR,PC}^     出栈,继续执行被中断的任务。

OSIntOS_Sched类似但是不能互换使用。OSIntExit含有中断嵌套数的计算。在OSIntExit做任务切换使用的是OSIntCtxSw,而OS_Sched中使用的是OS_TASK_SW。根据如上分析,每个时钟片刻结束时候OS都会根据优先级重新调度一遍,所以说在μC/OS,只要高优先级的任务处于就绪态,就会立即抢占CPU。以为在这一个时钟片结束后,OS会执行一次调度。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/c891583336a3126b64689d39989d88e0.html