嵌入式实时操作系统μC/OS-||原理及应用学习3----μC/OS-||的中断和时钟

1.中断:任务在运行过程中,应内部或外部异步事件的请求中止当前任务,而去处理异步事件所要求的任务的过程。应中断请求而运行的程序叫做中断服务子程序,中断服务子程序的入口地址叫做中断向量

2.μC/OS-||的中断过程:系统接收到中断请求后,如果这时CPU处于中断允许状态,系统就会终止正在运行的当前任务,而按照中断向量的指向转而去运行中断服务子程序;当中断服务子程序运行完后,系统将根据情况返回到被中止的任务继续运行,或者转向运行另一个更高优先级别的就绪任务

3.μC/OS-||允许中断嵌套:高优先级的中断源的中断请求可以中断低优先级的中断服务程序的运行。全局变量OSIntNesting记录中断嵌套的层数。

4.μC/OS-||中断服务子程序的流程图:

5.中断级任务调度器:决定在中断服务程序运行完后,返回被中断的任务还是运行一个具有更高优先级的就绪任务

6.中断级任务切换函数:OSIntCtxSW()。该函数在中断嵌套层数为0、调度器未被锁定、从任务就绪表中查找到的最高级就绪任务不是被中断的任务时完成任务的切换。

7.临界段:在μC/OS-||中,那些不希望被中断的代码叫做临界段。从代码上看,处在关中断和开中断之间的代码段就是临界段。不能在临界段中调用μC/OS-||提供的功能函数,以免系统崩溃。

8.为了增强μC/OS-||的移植性,μC/OS-||用OS_ENTER_CRITICAL()OS_EXIT_CRITICAL()两个宏封装了与系统硬件相关的关中断和开中断指令。

 

9.时钟节拍:两次硬件定时器产生的一个周期为毫秒级的周期性中断之间相间隔的时间。

10.时钟节拍的中断服务程序:OSTickISR();硬件定时器以时钟节拍为周期产生的中断。

11.时钟节拍服务函数:OSTimeTick()。在每个时钟节拍了解每个任务的延时状态,使其中已经到了延时时限的非挂起任务进入就绪状态

 

 12.任务的延时:

                             目的:为了使高优先级的任务不至于独占CPU。

                             方法:除了空闲任务之外的所有任务必须在任务中合适的位置调用系统提供的函数OSTimeDly(),使当前任务的运行延时(暂停)一段时间并进行一次任务调度,以让出CPU的使用权。

13.取消任务的延时:OSTimeDlyResume()。取消延时进入就绪状态。
原型:
      INT8U  OSTimeDlyResume(INT8U  prio)


14. INT32U   OSTime:全局变量,记录系统发生的时钟节拍数。

15. OSTimeGet():获取OSTime的值。

INT32U OSTimeGet(void);//返回值为OSTime的值。

16. OSTimeSet():设置OSTime的值。

void OSTimeSet(INT32U ticks);//ticks为OSTime的设置值(节拍数)。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值