在任务调度中 /中断时出栈完成 __asm__ __volatile__("CLI
"); //关中断 __asm__ __volatile__("SBRC R16,1
"); //SBRC当寄存器位为0刚跳过下一条指令 //检查是在调度时,是否有中断要求任务调度 0x02是中断要求调度的标志位 __asm__ __volatile__("RJMP OSSched
"); //重新调度 __asm__ __volatile__("LDI R16,0x00
"); //清除中断要求任务切换的标志位,清除正在任务切换标志位 __asm__ __volatile__("RETI n "); //返回并开中断
为什么要检查是在调度时,是否有中断要求任务调度 0x02是中断要求调度的标志位? 每次中断退出时都会调用void IntSwitch(void);上面那句话是怎样理解? 是不是中断退出时没有调用调用void IntSwitch(void)时,需要进行任务切换呢?希望能正解. 多谢!!!
|