1//任务切换宏,由汇编实现.2#define OS_TASK_SW() OSCtxSw() os_cpu_a.asm中任务切换函数的定义 1 NVIC_INT_CTRL EQU0xE000ED04; 中断控制寄存器2 NVIC_SYSPRI2 EQU0xE000ED20 ; 系统优先级寄存器(2)3 NVIC_PENDSV_PRI EQU0xFFFF0000; PendSV中断和系统节拍中断4 ; (都为最低,0xff).5 NVIC_PEN...
注意到在此过程中,变量OSTCBCur始终包含一个指向当前运行任务OS_TCB的指针。程序清单L9.4为OSCtxSw()的代码。图F9.4是任务被挂起或被唤醒时的堆栈结构。在80x86处理器上,任务调用OS_TASK_SW()执行软中断指令后[图F9.4/程序清单L9.4(1)],先向堆栈中压入返回地址(段地址和偏移量),然后是状态字寄存器SW。紧接...
换句话说, uC/OS-II运行就绪态的任务所要做的一切, 只是恢复所有的CPU寄存器并运行中断返回指令。 为了做任务切换, 运行OS_TASK_SW(),人为模仿了一次中断。 多数微处理器有软中断指令或者陷阱指令TRAP来实现上述操作。 中断服务子程序或陷阱处理(Trap hardler), 也称作事故处理(exception handler), 必须提供中断...
IRET; //中断返回,使PC指向切换后的任务。} 那么由什么来引发中断的,这就是宏 OS_TASK_SW()...
3、验证OS_TASK_SW()函数 OS_TASK_SW()函数测试代码: OS_STK TestTaskStk1[100]; OS_STK TestTaskStk2[100]; void TestTask1(void *pdata) { while(1) { pdata = pdata; OSTaskSuspend(1); } } void TestTask2(void *pdata) { pdata = pdata; while(1) { OSTaskResume(1); } ...
任务级的任务切换OS_TASK_SW()通过系统调用指令完成保护当前任务的现场恢复新任务的现场执行中断返回指令开始执行新的任务C/OS-II的任务管理