ucos-ii的时钟和中断

ucos-ii的时钟和中断

ID:9886116

大小:1.08 MB

页数:29页

时间:2018-05-12

ucos-ii的时钟和中断_第1页
ucos-ii的时钟和中断_第2页
ucos-ii的时钟和中断_第3页
ucos-ii的时钟和中断_第4页
ucos-ii的时钟和中断_第5页
资源描述:

《ucos-ii的时钟和中断》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、嵌入式操作系统原理第三章:uC/OS-II的中断和时钟目标:本章旨在向学员介绍uc/osII实时操作系统的中断概念及时间管理,通过本章的学习,学员应该掌握如下知识:1)uC/OSII的中断管理和中断服务程序的结构2)uC/OSII的系统时钟及实现方法3)时间管理服务:延时、取消延时时间:2.0学时教学方法:讲授PPT+练习3.1uC/OS-II的中断中断:任务在运行过程中,应内部或外部异步事件的请求中止当前任务,而去处理异步事件所要求的任务的过程叫做中断。中断服务程序:应中断请求而运行的程序叫中断服务子程序(ISR)。中断向量:中断服务子程序的入口地址叫中断向量。CPU响应中断的条

2、件:至少有一个中断源向CPU发出中断信号系统允许中断,且对此中断信号未予屏蔽3.1.1uC/OS-II的中断过程uC/OS-II中断的响应过程:中断请求关闭中断转到中断向量保存CPU寄存器通知内核进入ISR通知内核退出ISR恢复CPU寄存器中断返回无新高级任务则返回原任务有新高级任务则运行高级任务ISR给任务发信号通知内核退出ISR恢复CPU寄存器中断返回图3-1中断的响应过程中断响应中断恢复任务响应时间中断恢复任务响应时间注意:对于可剥夺型内核,中断服务子程序结束后,系统进行一次任务调度去运行优先级最高的就绪任务,而不是一定要接续运行被中断的任务。voidOSIntEnter(v

3、oid){if(OSRunning==True){if(OSIntNesting<255){OSIntNesting++;}}}3.1.2中断的开始、离开voidOSIntExit(Void){OS_ENTER_CRITICAL();if(OSRunning==TRUE){if(OSIntNesting>0){OSIntNesting--;}if((OSLockNesting==0)&&(OSIntNesting==0)){OSIntExity=OSUnMapTbl[OSRdyGrp];OSPrioHighRdy=(INT8U)((y<<3)+OSUnMapTbl[OSRdyTbl

4、[y]]);if(OSPrioHighRdy!=OSPrioCur){OSTCBHighRdy=OSTCBPrioTbl[OSPrioHighRdy];OSCtxSwCtr++;OSIntCtxSw();//中断级任务切换}}}OS_EXIT_CRITICAL();}进入中断嵌套层数=0?获得任务TCB的指针YESNONO返回中断服务程序未锁定调度器?NO获得最高级别就绪任务的prio任务是被中断的任务?YESYES执行中断级任务切换图3-2函数OSIntExit()的流程图为记录中断嵌套的层数,定义了一个全局变量OSIntNesting。函数作用就是把全局变量OSIntNesti

5、ng加1,从而用它来记录中断嵌套的层数这个函数在中断嵌套层数计数器为0、调度器未被锁定且从任务就绪表中查找到的最高级就绪任务又不是被中断的任务的条件下将要进行任务切换,否则就返回被中断的服务程序voidOSIntEnter(void){if(OSRunning==True){if(OSIntNesting<255){OSIntNesting++;}}}3.1.2中断的开始、离开voidOSIntExit(Void){OS_ENTER_CRITICAL();if(OSRunning==TRUE){if(OSIntNesting>0){OSIntNesting--;}if((OSLoc

6、kNesting==0)&&(OSIntNesting==0)){OSIntExity=OSUnMapTbl[OSRdyGrp];OSPrioHighRdy=(INT8U)((y<<3)+OSUnMapTbl[OSRdyTbl[y]]);if(OSPrioHighRdy!=OSPrioCur){OSTCBHighRdy=OSTCBPrioTbl[OSPrioHighRdy];OSCtxSwCtr++;OSIntCtxSw();//中断级任务切换}}}OS_EXIT_CRITICAL();}进入中断嵌套层数=0?获得任务TCB的指针YESNONO返回中断服务程序未锁定调度器?NO获得

7、最高级别就绪任务的prio任务是被中断的任务?YESYES执行中断级任务切换图3-2函数OSIntExit()的流程图为记录中断嵌套的层数,定义了一个全局变量OSIntNesting。函数作用就是把全局变量OSIntNesting加1,从而用它来记录中断嵌套的层数这个函数在中断嵌套层数计数器为0、调度器未被锁定且从任务就绪表中查找到的最高级就绪任务又不是被中断的任务的条件下将要进行任务切换,否则就返回被中断的服务程序3.1.3中断服务子程序的流程中断服务子程序入口OS

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。