UC/0S2之中断
中断是计算机系统处理异步事件的重要机制。当异步事件发生时,事件通常是通过硬件向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之中断的更多相关文章
- UC/0S2之基础总结
堆栈,就是在存储器中按数据“后进先出(LIFO)[类比杯子]”的原则组织的连续存储空间,为了满足任务切换和响应中断保存CPU寄存器中的内容及存储任务私有数据的需要,每个任务都应该配有自己的堆栈, 注意 ...
- uC/OS-III 概要
本章主要对 uC/OS-III 实时操作系统做一些概要介绍,使读者对 uC/OS-III 有个整体的浅 认识,为后面的章节的详细讲解做一个铺垫. 下图是 uC/OS-III 系统从底层到上层的文件结构 ...
- CORTEX-M3中断的现场保护问题
在<Cortex-M3 Devices Generic User Guide.pdf>中介绍了异常入栈和出栈的情况,详见2.3 Exception model.Cortex-M3内核的寄存 ...
- 3.1-uC/OS-III的特点:
1.C/OS-III是一个可扩展的, 可固化的, 抢占式的实时内核, 它管理的任务个数不受限制. 它是第三代内核, 提供了现代实时内核所期望的所有功能包括资源管理.同步.内部任务交流等. uC/OS- ...
- 玩转X-CTR100 l STM32F4 l UCOS-III移植
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 概述 前后台系统 简单的小型系统设计一般是基于前后台 ...
- uC/OS-II中的中断(转)
中断是指在程序运行过程中,应内部或外部异步事件的请求中止当前任务,而去处理异步事件所要求的任务的过程. 中断服务函数(ISR)是应中断请求而运行的程序. 中断向量就是中断服务函数(ISR)的入口地址, ...
- uC/OS-II任务(OS_task)块
/*************************************************************************************************** ...
- uC/OS-II互斥信号(OS_mutex)块
/*************************************************************************************************** ...
- uC/OS-II核心(Os_core)块
/*************************************************************************************************** ...
随机推荐
- hdu 4162 Shape Number 最小表示法
题目链接 给一个字符串, 将它想象成一个环, 然后从环中任意一个位置断开, 求断开后字典序最小的那种情况. 直接上模板.. #include <iostream> #include < ...
- web编程速度大比拼(nodejs go python)(非专业对比)
C10K问题的解决,涌现出一大批新框架,或者新语言,那么问题来了:到底谁最快呢?非专业程序猿来个非专业对比. 比较程序:输出Hello World! 测试程序:siege –c 100 –r 100 ...
- (Problem 40)Champernowne's constant
An irrational decimal fraction is created by concatenating the positive integers: 0.1234567891011213 ...
- cocos2dx 在mac下开发ios和android游戏
这里主要说android,因为ios开发在文章 http://blog.csdn.net/itcastcpp/article/details/24792323 中已经说过. 1)打开工程 打开ecli ...
- LINQ to SQL的CRUD操作
创建数据对象模型 sqlmetal /code:"C:\MyProjects\VS2008\Data\LinqConsoleApp2\LinqConsoleApp2\northwnd.cs& ...
- Mysql 学习记录
( xampp 的mysql 与 直接用 dnf 安装的 mysql 有冲突! ) 1. 数据库基本知识: 一张表的行 又称为 记录 一张表的列 又称为 字段 表结构:所有字段,规定了你的每一条记录所 ...
- PASCAL的读入优化
没readkey的情况 type Tstring=record s:array[0..maxn] of char; n:longint; end; procedure scan(var S:Tstri ...
- Seoer,牵起用户与搜索引擎双手的魔术师
SEOer:牵起用户与搜索引擎双手的魔术师 我想这是你的第一个疑问. SEO不是针对搜索引擎的技术吗?与用户有什么样的关联呢?又为何称他作魔术师呢?假设你有这些疑问.这篇文章就值得你阅读.SEO.搜索 ...
- hdu 4741 Save Labman No.004(2013杭州网络赛)
http://blog.sina.com.cn/s/blog_a401a1ea0101ij9z.html 空间两直线上最近点对. 这个博客上给出了很好的点法式公式了...其实没有那么多的tricky. ...
- JavaScipt实现倒计时方法总结
JavaScript中提供了两种实现计时.延时的方法,分别如下: 一. t = setTimeout(“function()", millisecond) 与 clearTimeout(t) ...