中断是计算机系统处理异步事件的重要机制。当异步事件发生时,事件通常是通过硬件向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. Android 中延迟执行的小结

    一.开启新线程 new Thread(new Runnable(){ public void run(){ Thread.sleep(XXXX); handler.sendMessage();---- ...

  2. ubuntu-10.04的测试环境 安装测试 Coreseek开源中文检索引擎-Sphinx中文版

    主要参考文档:http://www.coreseek.cn/products-install/install_on_bsd_linux/ 一. 32位版本: coreseek安装需要预装的软件: ap ...

  3. C功底挑战Java菜鸟入门概念干货(一)

    一.认识Java 1.Java 程序比较特殊,它必须先经过编译,然后再利用解释的方式来运行.  2.Byte-codes 最大的好处是——可越平台运行,可让“一次编写,处处运行”成为可能.  3.使用 ...

  4. perl 爬取上市公司业绩预告

    <pre name="code" class="python">use LWP::UserAgent; use utf8; use DBI; use ...

  5. HDU 5828 Rikka with Sequence(线段树)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5828 [题目大意] 给出一个数列,要求支持区间加法,区间开方和区间和查询操作. [题解] 考虑开方 ...

  6. 套接字socket 的地址族和类型、工作原理、创建过程

    注:本分类下文章大多整理自<深入分析linux内核源代码>一书,另有参考其他一些资料如<linux内核完全剖析>.<linux c 编程一站式学习>等,只是为了更好 ...

  7. ubuntu 中 ThinkPHP 上传文件无法得到文件名

    在 419-424 行.

  8. Determine If Two Rectangles Overlap

    判断相交的情况比较复杂,所以从判断不相交的角度考虑. ! (P1.y < P4.y || P1.x > P4.x || P2.y > P3.y || P2.x < P3.x)

  9. mysql 时间差问题集锦

    SELECT * from grouptoadd where taskid = '103244'; select datediff(max(spreadtime),min(createtime)) f ...

  10. win7 64位 Xsheel

    Xsheel5安装后,找不到.dll文件,系统支持不好,不用 Xshell4有时提示 1152:Error 就使用 链接:http://pan.baidu.com/s/1c1s42Y0 密码:098x ...