- 5
- 0
- 约1.2万字
- 约 21页
- 2017-06-12 发布于北京
- 举报
一.?? UCOSII的中断过程简介
系统接收到中断请求后,如果CPU处于开中断状态,系统就会中止正在运行的当前任务,而按中断向量的指向去运行中断服务子程序,当中断服务子程序运行完成后,系统会根据具体情况返回到被中止的任务继续运行,或转向另一个中断优先级别更高的就绪任务。
由于UCOS II是可剥夺型的内核,所以中断服务程序结束后,系统会根据实际情况进行一次任务调度,如果有优先级更高的任务,就去执行优先级更高的任务,而不一定要返回被中断了的任务。
二.UCOSII的中断过程的示意图
三.具体中断过程
1.中断到来,如果被CPU识别,CPU将查中断向量表,根据中断向量表,获得中断服务子程序的入口地址。
2.将CPU寄存器的内容压入当前任务的任务堆栈中(依处理器的而定,也可能压入被压入被中断了的任务堆栈中。
3.通知操作系统将进入中断服务子程序。即:调用OSIntEnter()或OSIntNesting直接
加1。
4.If(OSIntNesting==1) {OSTCBCur-OSTCBStrPtr=SP;} //如果是第一层中断,则将堆栈指针保存到被中断任务的任务控制块中
5.清中断源,否则在开中断后,这类中断将反复的打入,导致系统崩贵
6.执行用户ISR
7.中断服务完成后,调用OSIntExit().如果没有高优先级的任务被中断服务子程序激活而进入就绪态,那么就执行被中断了的任务,且只占用很短的时间.
8.恢复所有CPU寄存器的值.
9.执行中断返回指令.
?
四.相关代码
????? ??与编译器相关的数据类型:
??????? typedef unsigned char BOOLEAN;
??????? typedef unsigned char INT8U;
??????? typedef unsigned int OS_STK; //堆栈入口宽度为16 位
(一) void? OSIntEnter (void)的理解
uCOS_II.H中定义:
#ifdef?? OS_GLOBALS
#define? OS_EXT
#else
#define? OS_EXT? extern
#endif???? //定义全局宏OS_EXT
#ifndef? TRUE
#define? TRUE?? 1
#endif
??? ?????????
OS_EXT? BOOLEAN?? OSRunning; //定义外部BOOLEAN类型全局变量,用来指示
//核是否在运行
??????????? OS_EXT? INT8U?? OSIntNesting;//定义外部8位无符号整型数全局变量,用来表
???????????????????????????????????????? //示中断嵌套层数
OS_CORE.C中的OSIntEnter()函数原型:
void? OSIntEnter (void)
{
?? ??????????????????if (OSRunning == TRUE) //如果内核正在运行则进入if
{
??????? ??????????????????????if (OSIntNesting 255) //如果嵌套层数小于255,则可以继//续
{
?????????? ???????????????????????????OSIntNesting++; //嵌套层数加1
?????? ????????????????????????????}
?? ????????????????????????}
}
?? ??
??? ?(二)在中断服务子程序中加if ( OSIntNesting == 1){…}的原因???????????
uCOS_II.H中定义:
typedef struct os_tcb {
????????????? OS_STK??? *OSTCBStkPtr;//声明指向任务堆栈栈顶的16位指针
?? ………………
} OS_TCB;//定义名为OS_TCB的结构体数据类型,即任务控制块的数据结构
OS_EXT? OS_TCB?? *OSTCBCur;//声明一个指向任务控制块的全局指针变量
?????????????????????????? //用于指向当前任务的任务控制块
中断服务程序中添加的代码:
if ( OSIntNesting == 1)
{
????????? ????????????OSTCBCur-OSTCBStkPtr = SP; // 如果是第一层中断,则将被中断任务???????
?????????????????????????????????
您可能关注的文档
最近下载
- 新22J04-1 内装修一(墙面、吊顶).docx VIP
- 深圳市既有住宅加装电梯工程消防审查验收 工作指引.pdf VIP
- 城市污水处理厂工艺设计(20万人口).docx VIP
- 某天然气公司燃气系统运行安全现状评价报告.doc
- 维修Switch+中文版教程.pdf VIP
- 公共营养师四级试题【含答案】.docx VIP
- 统编人教部编版小学六年级下册道德与法治第一单元教学案.docx VIP
- IPC-6012F-CN-中文版 2024 TOC 刚性印制板的鉴定及性能规范.pdf VIP
- 2025年寒假作业七年级生物北师大版答案.pdf VIP
- impella for doctors左心辅助知识讲座.pptx VIP
原创力文档

文档评论(0)