文件名称:执行任务切换-倒数粗糙熵图像阈值化分割算法
文件大小:6.12MB
文件格式:PDF
更新时间:2024-06-29 05:02:57
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;