嵌入式操作系统ucosII中断处理过程.pdf

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Snippet 嵌入式操作系统ucosII的中断处理过程(上篇)转 2013-04-09 06:51 一. UCOSII的中断过程简介 系统接收到中断请求后,如果CPU处于开中断状态,系统就会中止正在运行的当前任务,而按中断向量的指向去运行中断服 务子程序,当中断服务子程序运行完成后,系统会根据具体情况返回到被中止的任务继续运行,或转向另一个中断优先级别 更高的就绪任务。 由于UCOS II是可剥夺型的内核,所以中断服务程序结束后,系统会根据实际情况进行一次任务调度,如果有优先级更高的任务,就去 执行优先级更高的任务,而不一定要返回被中断了的任务。 二.UCOSII的中断过程的示意图 三.具体中断过程 1.中断到来,如果被CPU识别,CPU将查中断向量表,根据中断向量表,获得中断服务子程序的入口地址。 2.将CPU寄存器的内容压入当前任务的任务堆栈中(依处理器的而定,也可能压入被压入被中断了的任务堆栈中。 3.通知操作系统将进入中断服务子程序。即:调用OSIntEnter()或OSIntNesting直接 加1。 4 .If (OSIntNesting==1 ) {OSTCBCur-OSTCBStrPtr=SP;} / 嵌入式操作系统ucosII的中断处理过程(上篇)转_王文罗的空... /wangwenluo2gxy/item/da2da05e701c2bdb... 四.相关代码 与编译器相关的数据类型: 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,则可以继//续 { 第2页 共11页 2013/11/13 22:38 嵌入式操作系统ucosII的中断处理过程(上篇)转_王文罗的空... /wangwenluo2gxy/item/da2da05e701c2bd

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档