uC/OS 的中断——uC/OS学习笔记(三)

本文深入探讨了uC/OS中断过程、中断嵌套机制以及应用程序临界段的概念,详细阐述了中断服务子程序的执行流程、uC/OS如何处理中断嵌套,并介绍了临界段在uC/OS中的实现方式。通过具体实例,帮助开发者理解如何正确使用中断和临界段以确保系统的稳定性和安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.      常见名词

a)        中断服务子程序:应中断请求而运行的程序

b)        中断向量:中断服务子程序的入口地址

 

2.      uC/OS的中断过程

系统接收到中断请求后,如果这时CPU处于中断允许状态,系统就会立刻终止正在运行的任务,而按照中断向量的指向运行中断服务子程序。

对于可剥夺型内核uC/OS而言,中断服务子程序运行结束之后,系统将会根据情况进行一次任务调度去运行优先级最高的就绪任务,而不一定接着运行被中断的任务

 

3. 中断嵌套

uC/OS 2 系统允许中断嵌套,即高优先级别的中断源的中断请求可以中断低优先级别的中断服务程序运行

为了记录中断嵌套的层数,uC/OS 2系统定义了一个全局变量OSIntNesting。通过调用函数OSIntEnter()来将这个全局变量加1,从而用它来记录中断嵌套的层数。当中断         服务程序完成后,调用OSIntExit()函数,来让OSIntNesting置0


4. 应用程序的临界段(重要

a) 实际上对于应用程序来说,比较重要的概念就是临界段,中断在uC/OS中到底如何运作只用看一下即可。

在uC/OS中,用OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()这两个宏来封装与系统硬件相关的关中断和开中断指令 。这两个宏需要在系统移植的时候自己实现

在STC 51单片机上的实现代码:

#define  OS_ENTER_CRITICAL()  EA=0    //关中断
#define  OS_EXIT_CRITICAL()   EA=1    //开中断

b) 不要在临界段中调用uC/OS提供的功能函数。


5. 主要参考书籍

a)        《嵌入式实时操作系统 uC/OS 2》

b)        《嵌入式实时操作系统 uC/OS 2 原理及应用》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值