第三章 中断与时钟.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第三章 中断与时钟

嵌入式系统 Embedded System 教师:白华 邮箱:baihua2000@ 电话办公室:4A-409 2.2.4 任务的其他管理函数 堆栈检验:OSTaskStkChk() 确定任务实际需要的堆栈空间大小 删除任务:OSTaskDel() 任务休眠,任务代码并未删除,只是不再被调用 请求删除任务:OSTaskDelReq() 改变任务的优先级:OSTaskChangePrio() 挂起任务:OSTaskSuspend() 空闲任务不能被挂起 恢复任务:OSTaskResume() 被挂起的任务只能通过该函数恢复 获得任务信息:OSTaskQuery() 获得指定任务的OS_TCB中内容的拷贝 2.3.1 μC/OS-II的初始化(OSInit()函数) 在使用μC/OS-II的所有服务之前,必须要调用μC/OS-II的初始化函数OSInit( )对μC/OS-II自身的运行环境进行初始化。 函数OSInit( )将对μC/OS-II的所有的全局变量和数据结构进行初始化,同时创建空闲任务OSTaskIdle,并赋之以最低的优先级别和永远的就绪状态。如果用户应用程序还要使用统计任务的话(常数OS_TASK_STAT_EN=1),则OSInit( )还要以优先级别为OS_LOWEST_PRIO-1来创建统计任务。 初始化函数OSInit( )对数据结构进行初始化时,主要要创建5个空数据缓冲区(任务控制块、事件控制块、消息队列控制块、标志控制块、存储控制块)。 为了可以快速地查询任务控制块链表中的各个元素,初始化函数OSInit( )还要创建一个数组OSTCBPrioTbl[OS_LOWEST_PRIO + 1],在这个数组中,按任务的优先级别的顺序把任务控制块的指针存放在了对应的元素中。 2.3.2 μC/OS-II的启动(OSStart()函数) 1)处理临界段代码——关中断 处理完成后——开中断 注:开/关中断的方法与编译器相关。 2)μC/OS-II定义了两个宏(macros)来开中断和关中断: OS_ENTER_CRITICAL( ) OS_EXIT_CRITICAL( ) 这两个宏的定义取决于微处理器,在文件OS_CPU.H中可以找到相应的宏定义,而每种微处理器都有自己的OS_CPU.H OS_ENTER_CRITICAL( )、 OS_EXIT_CRITICAL( )具体实现方法有3种 1)OS_CRITICAL_MATHOD=1 用处理器的关中断指令完成OS_ENTER_CRITICAL( ) 用处理器的开中断指令完成OS_EXIT_CRITICAL( ) 2)OS_CRITICAL_MATHOD=2 在堆栈中保存中断的开/关状态,然后再关中断,实现OS_ENTER_CRITICAL( ) 从堆栈中弹出原来的中断开/关状态,实现OS_EXIT_CRITICAL( ) 3) OS_CRITICAL_MATHOD=3 一些编译器提供了扩展功能,用户可以得到当前处理器状态字的值,并保存在C函数的局部变量中,这个变量可以恢复PSW。 #define OS_ENTER_CRITICAL() \ cpu_sr = get_processor_psw(); \ disable_interrupts(); #define OS_EXIT_CRITICAL() \ set_processor_psw(cpu_sr); 主要内容 μC/OS-II的中断管理和中断服务程序 μC/OS-II的系统时钟 μC/OS-II的时间管理 3.1.1、基本概念 中断 任务在运行过程中,应内部或外部异步事件的请求中止当前任务,而去处理异步事件所要求的任务的过程 中断服务子程序(Interrupt Service Routines, ISR) 应中断请求而运行的程序 中断向量 中断服务子程序的入口地址 3.1.2 mC/OS-II的中断 中断的优先级高于任务; 中断嵌套可以多达255层; 当系统处于开中断时,中断才会响应; 只有所有中断都完成后,才能返回到任务; 进入中断时,中断服务子程序必须调用OSIntEnter(); 退出中断时,中断服务子程序必须调用

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档