ucos(二)---中断

中断一旦被系统识别,CPU则保存部分(或全部)现场(context),即部分(或全部)寄存器的值,跳转到专门的子程序,称为中断服务子程序(ISR)。中断服务子程序做事件处理,处理完成后执行任务调度,程序回到就绪态优先级最高的任务开始运行

 

1. 时钟节拍

 

 RTC_PeriodicIntConfig(RTC_Per_128Hz);  ???

 

#define OS_TICKS_PER_SEC         64    /* Set the number of ticks in one second

 

 OSTimeDly(OS_TICKS_PER_SEC );  //延时1S,相当于VC中的sleep函数

 

 一般在10~200 ms之间

void OSTickISR(void) {
  保存处理器寄存器的值;
  调用OSIntEnter ()或是将OSIntNesting加1;
  调用OSTimeTick ();
  调用OSIntExit ();     //该函数包含中断任务切换函数OSIntCtxSw();
  恢复处理器寄存器的值;
  执行中断返回指令;
}

 

允许时钟节拍中断在OSStart()之后,而不是OSInit()之后

用户必须在第一个任务中打开时钟节拍中断

 

在ARM中

 

IRQ_Addr        DCD     OS_CPU_IRQ_ISR

 

OS_CPU_IRQ_ISR

 

    。。。。。。。。。。。。。。。。。

   LDR    r0, = VectorAddress

 

   BX     r0                      ; Branch to the IRQ handler.(跳转到相应的中断处理函数)

   。。。。。。。。。。。。。。。

   LDR     R0, =OSIntExit                 ; OSIntExit();   (中断退出处理,如果有更高级任务,则转到更高级任务运行,

  。。。。。。。。。。。。。。。。。。                    ;否则退出中断继续执行原任务)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值