中断是计算机系统处理异步事件的重要机制。当异步事件发生时,事件通常是通过硬件向cpu发出中断请求的。在一般情况下,cpu响应这个请求后会立即运行中断服务程序来处理该事件;

为了处理任务延时、任务调度等一些与时间有关的事件,任何一个计算机系统都应该有一个系统时钟。与其他计算机系统一样,UC/OS2的时钟是通过硬件定时器产生定时中断来实现的

  中断服务子程序:Interrupt  Service  Routine =======ISR

    应中断请求而运行的程序;

  中断向量:中断服务子程序的入口地址;

UC/OS2作为一个多任务的os,其关键点在于任务的调度;对应任务的调度是有任务调度器来完成的。在RAM区存放一个任务就绪表,任务的是否就绪的状态存放在该表;

UC/OS2的中断过程:

  系统接收到中断请求后,如果这时CPU处于中断允许状态(即中断是开放的【cpu中的中断寄存器是开允许的】),系统中止正在运行的当前任务,按照中断向量的指向转而去运行中断服务子程序;当中断服务子程序运行结束后,系统将会根据情况返回到被中止的任务继续运行,或者转向运行另一个具有更高优先级别的就绪任务;

  对于可剥夺型的UC/OS2内核来说,中断服务子程序运行结束之后,系统将会根据情况进行一次任务调度去运行优先级别最高的就绪任务,而不一定是接续运行刚被中断的任务;

 UC/OS2允许中断嵌套;

UC/OS2时间管理:

  由于嵌入式系统的任务是一个无限循环,并且UC/OS2还是一个抢占式内核,所以为了使高优先级的任务不至于独占cpu,可以给其他优先级较低的任务获得cpu使用权的机会。

uc/os2规定:除了空闲任务之外的所有任务必须在任务中合适的位置调用系统提供的函数OSTimeDly(),使得当前任务的运行延时(暂停)一段时间并进行一次任务调度,以让出cpu的使用权;在OSTimeDly()函数中引发一次调度函数;

获取和设置系统时间:

  为了方便,系统定义了一个INT32U类型的全局变量OSTime来记录系统发生的时钟节拍数。OSTime在应用程序调用OSStart()时被初始化为0,一行每发生1个时钟节拍,OSTime的值就被加1;

  

UC/0S2之中断的更多相关文章

  1. UC/0S2之基础总结

    堆栈,就是在存储器中按数据“后进先出(LIFO)[类比杯子]”的原则组织的连续存储空间,为了满足任务切换和响应中断保存CPU寄存器中的内容及存储任务私有数据的需要,每个任务都应该配有自己的堆栈, 注意 ...

  2. uC/OS-III 概要

    本章主要对 uC/OS-III 实时操作系统做一些概要介绍,使读者对 uC/OS-III 有个整体的浅 认识,为后面的章节的详细讲解做一个铺垫. 下图是 uC/OS-III 系统从底层到上层的文件结构 ...

  3. CORTEX-M3中断的现场保护问题

    在<Cortex-M3 Devices Generic User Guide.pdf>中介绍了异常入栈和出栈的情况,详见2.3 Exception model.Cortex-M3内核的寄存 ...

  4. 3.1-uC/OS-III的特点:

    1.C/OS-III是一个可扩展的, 可固化的, 抢占式的实时内核, 它管理的任务个数不受限制. 它是第三代内核, 提供了现代实时内核所期望的所有功能包括资源管理.同步.内部任务交流等. uC/OS- ...

  5. 玩转X-CTR100 l STM32F4 l UCOS-III移植

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 概述 前后台系统 简单的小型系统设计一般是基于前后台 ...

  6. uC/OS-II中的中断(转)

    中断是指在程序运行过程中,应内部或外部异步事件的请求中止当前任务,而去处理异步事件所要求的任务的过程. 中断服务函数(ISR)是应中断请求而运行的程序. 中断向量就是中断服务函数(ISR)的入口地址, ...

  7. uC/OS-II任务(OS_task)块

    /*************************************************************************************************** ...

  8. uC/OS-II互斥信号(OS_mutex)块

    /*************************************************************************************************** ...

  9. uC/OS-II核心(Os_core)块

    /*************************************************************************************************** ...

随机推荐

  1. C++学习之友元类和友元函数

    C++学习之友元类和友元函数       模板类声明也可以有友元,模板的友元可以分为以下几类:        1.非模板友元:        2.约束模板友元,即就是友元的类型取决于类被实例化的时候的 ...

  2. hadoop搭建杂记:Linux下hostname的更改办法

    VirtualBox搭建hadoop伪分布式模式:更改hostname VirtualBox搭建hadoop伪分布式模式:更改hostname master: ip:192.168.56.120 机器 ...

  3. JSP三大常用对象request、response、session

    1.request对象 客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求, 然后做出响应.它是HttpServletRequest类的实例. 序号方法说明 objectgetA ...

  4. [Laravel 5] 表单验证 Form Requests and Controller Validation

    本文 转载自:http://blog.hsin.tw/2015/laravel-5-note09-form-requests-and-controller-validation/ 文章解答了我的困惑非 ...

  5. 【LeetCode题意分析&解答】42. Trapping Rain Water

    Given n non-negative integers representing an elevation map where the width of each bar is 1, comput ...

  6. 三种尺寸:手机SIM卡使用指南

    毫无疑问目前卖的最火的手机非iPhone 5s莫属,相信仍有不少网友目前处于观望之中,由于iPhone 5s和iPhone 5c采用与iPhone相同的Nano-SIM卡,因此不少新用户在使用之前也徒 ...

  7. java对象的比较分析

    关于对象的比较我们可以通过以下三种手段来实现 一.利用"=="比较引用 Java中,当比较简单类型变量时用"==",只要两个简单类型值相等即返回ture,否则返 ...

  8. hbase0.96 put流程 源码分析

    无意间多瞄了一眼hbase0.98的代码,想复习下put流程.发现htable里面已经找不到processBatchOfPuts()奇怪了.看了半天原来变化还真大事实上0.96就没这个了,于是又搞了个 ...

  9. IOS开发之----协议与委托(Protocol and Delegate) 实例解析

    1 协议: 协议,类似于Java或C#语言中的接口,它限制了实现类必须拥有哪些方法. 它是对对象行为的定义,也是对功能的规范. 在写示例之前我给大家说下@required和@optional这两个关键 ...

  10. 启用Spring quartz定时器,导致tomcat服务器自动停止

    在项目中添加了一个定时功能,基于Spring quartz: 设置好执行时间后(如:每天14:00) 当程序执行完后,就会出现以下信息: 2013-7-22 11:36:02 org.apache.c ...