第5章 中断服务程序设计

合集下载

单片机原理及应用教程(C语言版)-第5章 MCS-51单片机的中断系统

单片机原理及应用教程(C语言版)-第5章 MCS-51单片机的中断系统

5.2.5 中断允许控制
例5-1 假设允许INT0、INT1、T0、T1中断,试 设置IE的值。 (2)汇编语言程序 按字节操作: MOV IE,#8FH 按位操作: SETB EX0 ;允许外部中断0中断 SETB ET0 ;允许定时器/计数器0中断 SETB EX1 ;允许外部中断1中断 SETB ET1 ;开定时器/计数器1中断 SETB EA ;开总中断控制位
IP (B8H)
D7 —
D6 D5 D4 D3 D2 D1 D0 — PT2 PS PT1 PX1 PT0 PX0
PT2:定时器/计数器T2的中断优先级控制位 PT2设置1则T2为高优先级,PT2设置0则T2为 低优先级。 后面各位均是如此,设置1为高优先级,设置0 为低优先级,不再一一赘述。 PS:串行口的中断优先级控制位。 PT1:定时器/计数器1的中断优先级控制位。 PX1:外部中断1的中断优先级控制位。 PT0:定时器/计数器0的中断优先级控制位。 PX0:外部中断0的中断优先级控制位。
5.2.4 中断请求标志
4.定时器/计数器T2中断请求标志
T2CON D7 D6 D5 (C8H) TF2 EXF2 D4 D3 D2 D1 D0
EXF2:定时器/计数器2的外部触发中断请求标志 位。T2以自动重装或外部捕获方式定时、计数,当 T2EX(P1.1)引脚出现负跳变时,TF2由硬件置1, 向CPU请求中断,CPU响应中断后,EXF2不会被硬 件清0,需要在程序中以软件方式清0。
5.2.3 外中断触发方式
TCON格式如下:
D7 D6 D5 D4 D3 D2 D1 D0
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
IT0=1,外中断0为下降沿触发 CPU在每一个机器周期的S5P2期间对P3.2引 脚采样,若上一个机器周期检测为高电平,紧挨着 的下一个机器周期为低电平,则使IE0置1。 IT1:外中断1触发方式控制位。功能同IT0

第5章-MCS-51单片机中断系统-PPT

第5章-MCS-51单片机中断系统-PPT
CPU在每一个机器周期得S5P2期间对P3、 3引脚采样,若P3、3为低电平,则使IE1置1,否 则IE1清0。
5、2、2 MCS-51单片机得中断源
IT1=1,外中断1为下降沿触发 采样:CPU在每一个机器周期得S5P2期间 对P3、3引脚采样,若上一个机器周期检测为 高电平,紧挨着得下一个机器周期为低电平,则 使IE1置1。 IT0:外中断0触发方式控制位。
CPU主要就是通过标志寄存器、控制 寄存器、优先级寄存器对中断源进行管
5、2、2 MCS-51单片机得中断源
(1)与中断标志相关得SFR
主要有:定时器/计数器T0、T1控制寄 存器TCON
串行口控制寄存器SCON 定时器/计数器2控制寄存器T2CON(第 6章介绍) (2)中断控制寄存器:TCON、IE (3)中断优先级寄存器:IP
DMA释放总线:当一批数据传送后, DMA控制器再向CPU发出“结束总线请 求”,CPU响应请求,收回总线使用权。
DMA方式速度高、效率高,可以与CPU 并行工作。
5、1、2 中断得相关概念
1、中断得概念
CPU在正常运行得时候, 外部或者内部发生了请求 CPU迅速去处理得事件,CPU 暂时中断当前得程序,去处理 所发生得事件,处理完事件后, 再返回到原来被中断得程序 继续运行。此过程称为中断。
图5-3 定时器得控制寄存器
TCON可位寻址。复位后TCON=00H。 TF1(TCON、7):T1溢出标志位
当T1计满溢出时,由内部硬件置位; 中断响应后自动清 0。
5、2、2 MCS-51单片机得中断源
TF0:T0溢出标志位 功能同TF1。
IT1:外中断1触发方式设置位 IT1=0,外中断1为低电平触发
5、1、1 微机得输入/输出方式

第5章 MCS-51中断、定时计数器及串行接口

第5章 MCS-51中断、定时计数器及串行接口

22:26
7
保护现场
课本P103
保护现场是指由于CPU执行中断处理程序时, 可能使用主程序中用过的累加器、寄存器或标志位。
为了使这些寄存器的值在中断服务程序中不被 冲掉,进入中断服务程序前,要将它们保护起来。
中断服务程序执行完,必须恢复原寄存器的内 容及原程序中断处的地址,即恢复现场和恢复断点。
22:26
课本P105
一、中断请求控制
(1) TCON中的中断请求标志位 Timer Controller
TCON为定时/计数器控制寄存器,其字节 地址为88H,可位寻址。这个寄存器除了控制定 时/计数器T0和T1的溢出中断外,还控制外部中 断的触发方式和锁存外部中断请求标志位。
图5-3 TCON中的各位定义
22:26
24
2. 中断响应过程
课本P110
CPU响应中断后,由硬件自动执行如下的功能操作:
(1)根据请求源的优先级高低,对相应的优先级状态 触发器置1,自动生成长调用指令LCALL addr16。
(2)保护断点,把程序计数器PC的内容压入堆栈。 (3)清除相应的中断请求标志位。 (4)把被响应的中断源所对应的中断服务程序入口地

先进后出

POP DPL
POP DPH
POP ACC
RETI
最后1条指令 必须是RETI
27
中断响应过程
处理文档 电话铃响 暂停文档 文档中作暂停记号 电话交谈 找出暂停记号位置 继续处理文档
执行主程序(日常事务程序) 中断申请信号有效(中断请求)
暂停执行主程序响应中断 当前PC及寄存器入栈(保护现场)
22:26
5
中断系统的基本问题

第五章 MCS-51的中断系统

第五章 MCS-51的中断系统

第5章MCS-51单片机的中断系统【例5-1】设允许外部中断0和串行口中断,禁止其它中断源的中断申请。

试根据假设条件设置IE的相应值。

解:⑴用位操作指令来编写如下程序段:SETB EX0 ;允许外部中断0中断SETB ES ;允许串行口中断CLR EX1 ;禁止外部中断1中断CLR ET0 ;禁止定时器/计数器T0中断CLR ET1 ;禁止定时器/计数器T1中断SETB EA ;CPU开中断⑵用字节操作指令来编写:MOV IE, #91H【例5-2】设置中断优先级控制寄存器IP的初始值,使得8031的2个外中断请求为高优先级,其它中断请求为低优先级。

解:⑴用位操作指令SETB PX0;2个外中断为高优先级SETB PX1CLR PS ;串行口、2个定时器为低优先级中断CLR PT0CLR PT1⑵用字节操作指令MOV IP,#05H【例5-3】假设允许外部中断0中断,并设定它为高级中断,其它中断源为低级中断,采用跳沿触发方式。

在主程序中可编写如下程序段:SETB E A ;EA位置“1”,CPU开中断SETB E X0 ;EX0位置“1”,允许外部中断0产生中断SETB P X0 ;PX0位置“1”,外部中断0为高级中断SETB I T0 ;IT0位置“1”,外部中断0为跳沿触发方式【例5-4】根据图5-9的中断服务程序流程,编写出中断服务程序。

假设现场保护只需要将PSW寄存器和累加器A的内容压人堆栈中保护起来。

解一个典型的中断服务程序如下:INT: CLR E A ;CPU关中断PUSH PSW ;现场保护PUSH ASETB E A ;CPU开中断中断处理程序段CLR E A ;CPU关中断POP A ;现场恢复POP PSWSETB E A ; CPU开中断RETI ;中断返回,恢复断点上述程序有几点需要说明的是:⑴本例的现场保护假设仅仅涉及到PSW和A的内容,如果还有其它的需要保护的内容,只需要在相应的位置再加几条PUSH和POP指令即可。

第5章 中断系统

第5章  中断系统

例7 如图,试编写程序实现以下功能:系统初始上电时,四 个发光二极管都熄灭,每当按下图中开关时,四个发光二极 管就能反映出与其对应的四个开关状态,开关闭合则对应二 极管亮,开关断开则对应二极管熄灭。
ORG 0000H AJMP MAIN ORG 0003H LJMP INT ORG 0030H MAIN:CLR IT0 SETB EX0 SETB EA SJMP $ ORG 0200H INT:MOV A,#0FFH MOV P1,A MOV A,P1 SWAP A MOV P1,A RETI
第 5章
MCS-51系列单片机 的中断系统
本章介绍的主要内容
★ 中断的基本概念 ★ 中断的系统结构 ★ 中断的响应 ★ 中断的应用编程
5.1 什么是中断
一、中断
中断是指CPU在执行程序的过程中,当某种 特殊状态出现时,CPU暂停现在正在执行的程序, 转向去对引起特殊状态的事件进行处理,处理完毕 后再返回继续执行原来程序的过程。 简单地说,中断就是在运行一段程序的过程中 由于某种原因临时插入了另一段程序的运行。
1. 开中断总控开关EA,置位中断源的中断允许位。 2. 对外部中断INT0、INT1,应选择中断触发方式。 3. 多个中断源中断,应设定中断优先级,预置IP。
例5 若系统需要响应定时/计数器0中断和由下降沿信号引起 的外部中断0中断,且若这两个中断源同时提出中断请求则先 响应内部中断,试编写程序,对相关寄存器进行初始化。
EA 中断 总控 允/ 禁
-
ET2
ES
ET1
EX1
ET0
EX0
不 用
T2 串行口 T1 INT1 T0 INT0 允/ 禁 允/ 禁 允/ 禁 允/ 禁 允/ 禁 允/ 禁

计算机组成原理 第五章 IO系统-3中断

计算机组成原理  第五章 IO系统-3中断
第三节 中断方式及接口 5.3.1 中断基本概念 1.定义 CPU暂时中止现行程序的执行,转去执行为某 个随机事态服务的中断处理程序。处理完毕后自 动恢复原程序的执行。 2.实质与特点 (1)实质 方法:保存断点,保护现场; 程序切换 恢复现场,返回断点。 时间:一条指令结束时切换。 保证程序的完整性。
地址线
数据线 数据线 数据线
寄存器选择
命令字R
命令 状态 数据
状态字R
数据缓冲器
外 部 设 备
接口板 控制逻辑
INT INTA D7~0
IRQi
中断控制器 (8259)
IRQ0
IRQ7
M
CPU
主机板
状态字格式的拟定: 用代码表示各种状态。 (4)数据缓冲器 传送数据,实现缓冲。 (5)控制逻辑 请求信号产生逻辑 电平转换逻辑 串-并转换逻辑(串口) 针对设备特性的逻辑 (6)公用中断控制器 接收外设请求,判优, 送出公共请求; 接收中断批准,送出中 断号(中断类型码)。
中断号寄存器
中 断 服 务 寄 存 器
优 先 级 裁 决 器
中 断 请 求 寄 存 器
优先级高
IRQ0
IRQ7
优先级低
中断屏蔽寄存器
8259
中断请求 8259 (未屏蔽的请求判优,生成相应中断号) 公共请求INT CPU 中断源的序号 (CPU响应后,取回中断号,转入相应服务程序。)
3.中断响应 (1)响应条件
中断源来自主机外部
该类请求与屏蔽字无 关;请求的响应与开/ 关中断无关。
(3)可屏蔽中断与非屏蔽中断
(4)向量中断与非向量中断 由软件提供服务程序
由硬件提供服务程序入口地址
4.中断典型应用 (1)管理中、低速I/O操作 (2)处理故障 (3)实时处理

第5章 中断系统

第5章  中断系统

返回
单片机原理及接口技术
二、中断响应操作过程
• 1、中断响应操作过程 ⑴ 把当前PC值压入堆栈,保护断点。
⑵ 将相应的中断服务程序的入口地址送入PC。
⑶ 对有些中断源,CPU会自动清除中断标志。 ⑷ 执行中断服务程序。 ⑸ 执行到返回指令RETI,中断服务程序结束,将堆栈内容弹出到PC,返 回到原来断点继续执行。 • 2、各中断源及其对应的矢量地址
SETB PX0
SETB CLR CLR CLR PX1 PS PT0 PT1
返回
09:28
单片机原理及接口技术
§5.4 中断处理过程 §5.4.1 中断处理过程的三个阶段
K
主程序响应中断 N 保护现场 为外设服务 恢复现场 中 断 处 理
• 中断处理过程分为: • 中断响应 • 中断处理 • 中断返回
返回
单片机原理及接口技术
例5-1:假设允许片内定时器/计数器中断,禁止其他 中断。试根据假设条件设置IE的相应值。
解:(IE)=10001010B=8AH
(a)用字节操作指令
MOV SETB SETB IE,#8AH;或 MOV A8H,#8AH;
(b)用位操作指令
ET0;定时器/计数器0允许中断 ET1;定时器/计数器1允许中断
中断源 外部中断 0(INT0) 定时器 T0 中断 外部中断 1(INT1) 定时器 T1 中断 串行口中断 中断矢量 0003H 000BH 0013H 001BH 0023H
返回
09:28
单片机原理及接口技术
§5.4.3 中断处理
• 二、中断处理包括的内容 保护现场:如在中断服务程序中要用到PSW、工作寄存器和SFR等 寄存器时,则在进入中断服务之前应将它们的内容保护起来,在中 断结束、执行RETI指令前应恢复现场。 为中断源服务:针对中断源的具体要求进行相应的处理。 • 三、编写中断服务程序时的注意问题 在中断矢量地址单元处放一条无条件转移指令,使中断服务程序可 灵活地安排在64KB ROM的任何空间。 在中断服务程序中,应注意用软件保护现场,以免中断返回后丢失 原来寄存器、累加器中的信息。 若要在执行当前中断程序时禁止更高优先级中断,可以先用软件关 闭CPU中断或禁止某中断源中断,在中断返回前再开放中断。 返回

第五章 中断系统

第五章  中断系统

四、中断系统的功能 一般来说,一个中断系统具有以下功能: (一)实现中断及返回 当某中断源发出中断请求后,CPU应决定是否响应这个中断请求,如当前正 在执行更重要的工作可暂时不响应中断,若响应这个中断请求,CPU在当前指令 执行完后,就要保护断点地址和现场(即下条指令地址和相关寄存器内容),以便 执行完中断服务程序后能正确返回原处执行,然后转到需要处理的中断服务程序 的人口地址,去执行中断服务程序,当中断服务程序执行完毕再恢复现场和断点 ,去继续执行主程序。 (二)实现优先级排队 当计算机带有多个中断源时,可能会出现两个或两个以上中断源同时向CPU提 出中断请求的情况。这时CPU应能够根据事先确定的中断源的优先级别来先响应 高优先级的中断 并为它服务,然后再响应较低优先级的中断请求。 (三)实现中断嵌套 当CPU正在响应某一中断源的中断请求时,又有新的中断源发出请求,如果 新的请求的优先级别高于正在执行的中断源的优先级,则CPU暂停现行的服务程 序,转去执行更高级别的中断源的服务程序,执行完毕后再回到被中断的较低中 断源的服务程序继续执行,即实现了中断嵌套。若新的中断源的优先级别低于或 是等于正执行的中断源,则CPU不响应这个请求,直到正在处理的中断服务程序 执行完毕后,才去处理新的中断请求。
三、中断的分类 按中断产生的位置,中断可分为: (1)外部中断,或称外部硬件实时中断,它是由外部送到CPU的某一特定引脚 上产生的。 (2)内部中断,或称软件指令中断,是为了处理程序运行过程中发生的一些意 外情况或调试程序方便而提供的中断。 按接受中断的方式,中断可分为: (1)可屏蔽中断,可以通过指令使CPU根据具体情况决定是否接受中断请求。 (2)非屏蔽中断,只要中断源提出请求,CPU就必须响应,主要用于一些紧急 情况的处理,如掉电等。 以上从不同的角度对中断进行了分类,对于某一种类型的计算机可能只具备 其中的某几种方式,例如MCS—51就不具备非屏蔽中断方式。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第5章中断服务程序设计中断服务程序(ISR)是嵌入式应用系统获取各种事件的基本手段,而“事件”是实时性问题的讨论基础和时间计算的起点。

ISR的设计质量直接影响到系统的实时性指标和操作系统的工作效率。

只要没有关中断,中断服务程序可以中断任何任务的运行,可将中断服务程序可成比最高优先级(0级)还高的“任务”。

5.1中断优先级安排原则中断源是系统及时获取异步事件的主要手段,其优先级安排原则如下:●紧迫性:触发中断的事件允许耽误的时间越短,设定的中断优先级就越高。

●关键性:触发中断的事件越关键(重要),设定的中断优先级就越高。

●频繁性:触发中断的事件发生越频繁,设定的中断优先级就越高。

●快捷性:ISR处理越快捷(耗时短),设定的中断优先级就越高。

中断服务程的功能应尽量简单,只要将获取的异步事件通信给关联任务,后续处理由关联任务完成。

5.2不受操作系统管理的中断服务程序正常情况下,ISR应受操作系统的管理,因很多任务是靠ISR触发的。

但在两种情况下ISR不受操作系统管理:①没有必要;②操作系统没有对该ISR进行管理。

实时操作系统uC/OS-Ⅱ移植到ARM7体系的CPU上时,没有对FIQ进行处理,即FIQ 是不受操作系统管理的。

选用FIQ来响应实时性要求最高的高速采样操作是一个有效措施,保护现场的工作量很小(FIQ专有的8个寄存器不需要保护)。

在工程模板的系统启动文件Startup.s中,已经把汇编代码部分处理好,用户只需要用C 语言编写快速中断服务函数FIQ_Exception()即可,不需考虑保护现场和恢复现场的问题。

程序:Startup.s中队FIQ的处理Reset ;异常向量表LDR PC,ResetAddr ;跳转到复位入口地址LDR PC,UndefinedAddrLDR PC,SWI_Addr ;跳转到软件中断入口地址LDR PC,PrefetchAddrLDR PC,DataAbortAddrDCD 0xb9205f80LDR PC,[PC,#-0xff0] ;跳转到向量中断入口地址(向量中断控制器)LDR PC,FIQ_Addr ;跳转到快速中断入口地址ResetAddr DCD ResetInitUndefinedAddr DCD UndefinedSWI_Addr DCD SoftwareInterruptPrefetchAddr DCD PrefetchAbortNouse DCD 0IRQ_Addr DCD 0FIQ_Addr DCD FIQ_Handler ;快速中断服务程序入口地址FIQ_Handler ;快速中断服务程序STMFD SP!,{R0-R3,LR} ;保护现场HL FIQ_Exception ;调用C语言编写的快速中断服务函数LDMFD SP!{R0-R3,LR} ;恢复现场SUBS PC,LR,#4 ;中断返回由于没有操作系统介入,FIQ的ISR无法与关联任务进行通信,所获取的信息不能及时得到关联任务的处理,故只能以原始形式保存在一个缓冲区内,等待以后进行离线处理。

典型的例子是高速数据采集系统。

由于使用FIQ方式进行采样,其ISR不受操作系统管理,所以只能用“使能中断源”和“关闭中断源”来控制采样过程。

这是需要设置一个采样任务来控制采样过程。

其代码结构如下程序。

程序:高速采样任务函数结构void TaskSamp(void *pdata) //高速采样任务函数{进行相关设置;while(1) //无限循环{等待启动信号’进行准备工作;使能采样中断;等待结束信号;停止采样中断;数据预处理;输出采样数据块;}}实验:将定时器1设置为FIQ,在FIQ中进行快速采样。

采样过程由采样任务进行控制,而采样任务本身由操作者通过按键进行控制,每次采样过程进行200次连续采样,采样周期为50us。

高速采样的程序流程图如图5-1所示,程序代码如下。

(a)按键任务(b)采样任务(c)FIQ图5-1 高速采样的程序流程图程序:高速采样示例#include “config.h”//文件config.h包含了includes.h和一些系统配置文件#define KEY (1<<20) //P0.20为按键控制I/0#define TaskStk 100 //定义任务堆栈长度OS_STK TaskKeyStk[TaskStk] //定义按键任务的堆栈OS_STK TaskSampStk[TaskStk]; //定义采样任务的堆栈void TaskKey(void *pdata); //声明按键任务,因为这段代码在创建它的主函数//后面void TaskSamp(void *pdata); //声明采样任务,因为这段代码在创建它的按键任务//函数的后面INT16U Samp[200]; //保存采样结果的数组INT8U count=0; //采样次数计数器void Show(INT16U *a,INT16U n) //显示波形函数{INT16U I;GUI_ClearSCR(); //清屏for(i=0;i<n;i++) //显示波形GUI_Point(i,240-a[i]*/300/3000,RED); //高度240点相当于3000mV}int main(void) //将main()函数设置为整型是为了防止编译警告{OSInit();OSTaskCreat(TaskKey,(void *)0,&TaskKeyStk[TaskStk-1],4); //创建按键任务OSStart();return 0;}void TaskKey(void *pdata) //按键任务{pdata=pdata;TargetInit(); //系统电路初始化GUI_Initalize(); //初始化LCD(液晶屏)PINSEL1=0x00400000; //设置P0.27连接到AINO//进行ADC模块设置,其中x<<n表示第n位设置为x(若x位超过一位,则向高位顺延)ADCR=(1<<0) | //SEL=1,选择通道0((Fpclk/1000000-1)<<8) | //即转换时钟为1Mhz(0<<16) | //BURST=0.软件控制转换操作(0<<17) | //CLKS=0,使用11clock转换(1<<21) | //PDN=1,正常工作模式(非掉电转换模式)(0<<22) | //TEST1:0=00,正常工作模式(非测试模式)(1<<24) | //START=1,直接启动ADC转换(0<<27) | //EDGE=0,引脚下降沿触发转换T1IR=0xffffffff; //复位中断源T1TC=0x00; //初始化定时器1T1PR=0x00; //设置定时器1的分频器(不分频)T1TCR=0x01; //使能定时器1T1MCR=0x03; //匹配时产生中断并复位定时器1T1MR0=Fpclk/20000; //定时时间为50usVICIntSelect=1<<5; //T1设置为快速中断while(1){OSTimeDly(2); //延时if((IO0PIN&KEY)!=0) continue; //未按键,再延时else //按下按键{while(IO0PIN&KEY) == 0) //等待按键释放{IO0SET=KEY;OSTimerDly(1); //延时}OSTaskCreate(TaskSamp,(void *)0,&TaskSamp[TaskStk-1],2); //创建采样任务}}}void TaskSamp(void *pdata) //高速采样任务{INT8U i; //临时变量INT32U Temp; //临时变量pdata=pdata;count=0; //初始化采样计数器VICIntEnable=1<<5; //打开定时器1的FIQ,开始采样while(1); //等待采样结束{OS_ENTER_CRITICAL(); //关中断i=count; //查询当前完成的采样次数OS_EXIT_CRITICAL(); //开中断if (i>=200) break; //完成预定采样次数,结束查询OSTimeDly(1); //未完成预定采样次数,延时一个时钟节拍继续//查询}for(i=0;i<200;i++) //将采样数据进行预处理,使数据以mV为单位{Temp=3000*Samp[i]; //参考电压为3000mVSamp[i]=(INT16U) (TEMP>>16);}Show(Samp,200); //显示采样信号的波形OSTaskDel(OS_PRIO_SELF); //删除自己}void FIQ_Exception(void) //快速中断服务函数{INT32U ADC_Data;T1IR=0x01; //清除中断源VICVectAddr=0; //通知中断控制器ADC_Data=ADDR; //通过读取ADC结果清除DONE标志位ADCR=(ADCR&0Xffffff00)|0x01|(1<<24); //切换通道并进行第一次转换while(ADDR&0x80000000)==0); //等待转换结束ADCR=ADCR|(1<<24); //再次启动转换while(ADDR&0x80000000)==0); //等待转换结束Samp[count]=(INT16U)(ADDR&0x0000FFFF); //读取并保存转换结果count++; //调整采样计数器if(count==200) VICIntEnClr=1<<5; //完成采样次数,关闭FIQ5.3 受操作系统管理的中断服务程序中断服务程序的结构受实时操作系统管理的ISR与不受实时操作系统管理的ISR有很大区别,体现在以下3个阶段。

①入中断:除了保护现场外,还需要调用“进入中断”服务函数。

②行功能代码:完成ISR的实质功能的代码外,还包含了对系统通信服务函数的调用,使关联任务得到同步信号或Ⅱ数据,从而进入就绪状态,但在ISR中不容许调用延时函数和可能被挂起系统服务函数。

③退出中断:执行“退出中断”流程。

必须将ISR中与具体功能无关的代码剥离出来,作为实时操作系统内核的一部分,提供给实时操作系统的用户。

实时操作系统uc/OS-Ⅱ移植到ARM7体系的CPU上时,这部分代码用一个汇编宏实现(移植文件IRQ.inc),并提供C语言接口,用户只需要用C语言编写ISR的功能代码即可。

相关文档
最新文档