【文件属性】:
文件名称:执行任务切换-倒数粗糙熵图像阈值化分割算法
文件大小:6.12MB
文件格式:PDF
更新时间:2021-06-09 11:16:17
UCOSIII 教程
(7) 执行任务切换!
(8) 开中断
在 OSSched()中真正执行任务切换的是宏 OS_TASK_SW()(在 os_cpu.h 中定义 ),宏
OS_TASK_SW()就是函数 OSCtxSW(),OSCtxSW()是 os_cpu_a.asm 中用汇编写的一段代码,
OSCtxSW()要做的就是将当前任务的 CPU 寄存器的值保存在任务堆栈中,也就是保存现场,保
存完当前任务的现场后将新任务的 OS_TCB 中保存的任务堆栈指针的值加载到 CPU 的堆栈指
针寄存器中,最后还要从新任务的堆栈中恢复 CPU 寄存器的值。
2、中断级调度器
中断级调度器为 OSIntExit(),代码如下,调用 OSIntExit()时,中断应该是关闭的。
void OSIntExit (void)
{
CPU_SR_ALLOC()
if (OSRunning != OS_STATE_OS_RUNNING) { (1)
return;
}
CPU_INT_DIS();
if (OSIntNestingCtr == (OS_NESTING_CTR)0) { (2)
CPU_INT_EN();
return;