打印
[AVR单片机]

hjc800323:关于建立一个属于自己的AVR的RTOS提问???

[复制链接]
1775|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

粉丝