[AVR单片机] hjc800323:关于建立一个属于自己的AVR的RTOS提问???

[复制链接]
2280|1
 楼主| eagle758 发表于 2007-10-30 21:41 | 显示全部楼层 |阅读模式
在任务调度中
/中断时出栈完成 
   __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)时,需要进行任务切换呢?希望能正解.
多谢!!!
 
 
 楼主| eagle758 发表于 2007-10-30 21:45 | 显示全部楼层

1

为什么要检查是在调度时,是否有中断要求任务调度 R16=0x02是中断要求调度的标志位?如果是需要重新任务调度,为什么?
每次中断退出时都会调用void IntSwitch(void)(有点不可能出现 R16=0X02的情况)那么上面那句话是怎样理解?
是不是中断退出时没有调用调用void IntSwitch(void)时,需要进行任务切换呢?希望能正解.
多谢!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

40

主题

119

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部