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 原理及应用》