第六章嵌套向量中断

合集下载

nvic嵌套向量中断控制器工作原理

nvic嵌套向量中断控制器工作原理

一、引言Nvic嵌套向量中断控制器(Nested Vectored Interrupt Controller)是一种常见的中断控制器,它在嵌入式系统中扮演着重要的角色。

本文将介绍Nvic的工作原理,帮助读者更好地理解这一关键的硬件组件。

二、Nvic的基本概念Nvic是一种硬件组件,用于管理和分发系统中的中断请求。

在嵌入式系统中,当发生外部事件或者特定的处理器状态发生变化时,需要立即中断当前的程序执行,执行特定的中断服务程序。

而Nvic就是用来协调这些中断请求的,确保它们按照优先级和顺序得到正确的处理。

三、中断控制器的作用1.管理中断请求中断是在嵌入式系统中的一种重要的事件响应机制。

当外部设备(如传感器、通信接口等)产生需要处理的事件时,会向处理器发送中断请求。

而中断控制器就是负责接收、管理和分发这些中断请求的硬件组件。

2.中断优先级在一个嵌入式系统中,可能同时出现多个中断请求,此时中断控制器需要根据中断请求的优先级决定哪个中断将被优先处理。

Nvic通过优先级编码的方式,能够准确地确定中断的优先级,确保高优先级的中断能够得到及时处理。

四、Nvic的工作原理1.中断向量表Nvic通过中断向量表来实现对中断请求的管理。

中断向量表是一张表格,每个中断都有一个特定的中断向量号。

当中断控制器接收到中断请求时,根据中断向量号可以迅速定位到对应的中断服务程序的入口位置区域,从而进行中断处理。

2.中断优先级编码Nvic使用中断优先级编码的方式来确定中断的优先级。

在Nvic中,中断请求会按照其具体的中断向量号进行编码,从而确定其优先级。

当多个中断请求同时到达时,Nvic会根据优先级编码来决定哪个中断会被优先处理。

3.嵌套中断Nvic支持嵌套中断的机制,即在一个中断服务程序的执行过程中,如果遇到了更高优先级的中断请求,Nvic可以暂停当前中断服务程序的执行,转而处理更高优先级的中断请求。

这种机制可以确保高优先级的中断能够得到及时处理,提高系统的响应速度。

天脉(ACoreOS)操作系统培训第六章:异常、中断与定时器

天脉(ACoreOS)操作系统培训第六章:异常、中断与定时器

启动(或)重启动看门定时器
STATUS wdStart (WDOG_ID wdId, int delay,
FUNCPTR pRoutine,int parameter )
wdId 看门狗ID,由创建wdCreate返回源自delay 延时的tick值
pRoutine 延时时间到时调用程序
23 parameter
wdStart() + semGive():更加健壮
28
查询警告
下列代码是正确的,只有当系统时钟频率是15Hz 的整数倍
void myWdISR() {
wdStart(myWdId,sysClkRateGet()/15,myWdISR,0); pollMyDevice(); }
为了防止系统在每个时钟tick开销过大,不能 够将系统时钟频率设置过高
中断的工作原理
10
中断处理示例-PowerPC
11
中断处理示例说明
PowerPC有单独的外部中断引脚。板级支持包 (BSP)可以支持外部中断控制器实现中断嵌套。
中断表中中断入口数量取决于BSP中中断控制器的 能力。目前中断向量表最多可支持256个。
外部中断的处理流程
保存CPU寄存器 从中断控制器中读取中断号 调用用户连接的中断处理程序(用户关心) 清中断控制器状态 12 恢复CPU寄存器并返回
fooDoWork()必须每 10秒运行,如果执行小 于10秒钟,看门狗重新 启动(fooISR()没有被 调用)。如果 fooDoWork()执行时间 超过10秒钟,则看门狗 程序fooISR()将被调用 处理紧急事件
停止看门狗
取消先前启动的看门狗 STATUS wdCancel (WDOG_ID wdId)

LPC1700 第6章 嵌套向量中断控制器

LPC1700 第6章 嵌套向量中断控制器

目录
第6章嵌套向量中断控制器 (1)
6.1特性 (1)
6.2描述 (1)
6.3中断源 (1)
第6章嵌套向量中断控制器
6.1特性
?ARM Cortex-M3内部包含有嵌套向量中断控制器;
?与内核紧密联系的中断控制器,可支持低中断延时;
?可对系统异常和外设中断进行控制;
?支持33个嵌套向量中断;
?32个可编程的中断优先级;
?硬件优先级屏蔽;
?可重定位的向量表;
?不可屏蔽中断;
?软件中断功能。

6.2描述
嵌套向量中断控制器(NVIC)是Cortex-M3的一个内部器件。

与CPU紧密结合,降低了中断延时,让新进中断可以得到高效处理。

可参考《ARM®Cortex TM-M3技术参考指南》来获取NVIC操作的详细描述。

6.3中断源
表6.1列出了每一个外设功能所对应的中断源。

每一个外围设备可以有一条或几条中断线连接到向量中断控制器。

多个中断源也可以共用一条中断线。

除过ARM内核指定的某些标准外,哪一条中断线连接到哪一个中断源是无关紧要的或没有优先级的。

表6.1连接到向量中断控制器(VIC)的中断源。

STM32中NVIC(嵌套向量中断控制)的理解

STM32中NVIC(嵌套向量中断控制)的理解

STM32中NVIC(嵌套向量中断控制)的理解NVIC,中文名嵌套中断向量控制器,是Cortex-M3 系列控制器内部独有集成单元,与CPU 结合紧密,降低中断延迟时间并且能更加高效处理后续中断。

举个例子,比如火车站买票,那些火车站的规章制度就是NVIC,规定学生和军人有比一般人更高优先级,它们则给你单独安排个窗口,同学与同学之间也有区别,那就是你也得排队,也就是你的组别(抢断优先级)和你的排队序号(响应优先级)决定你何时能买到票。

抢断优先级,顾名思义,能再别人中断是抢占别人中断,实现中断嵌套。

响应优先级则只能排队,不能抢在前面插别人的对,即不能嵌套。

STM32 中指定优先级的寄存器为4 位,其定义如下:第0 组:所有4 位用于指定响应优先级第1 组:最高1 位用于指定抢占式优先级,最低3 位用于指定响应优先级第2 组:最高2 位用于指定抢占式优先级,最低2 位用于指定响应优先级第3 组:最高3 位用于指定抢占式优先级,最低1 位用于指定响应优先级第4 组:所有4 位用于指定抢占式优先级以上定义也称作中断优先级分组,相关内容在STM32 固件库的misc.h 文件中有详细定义。

基础了解了就可以对中断进行操作了。

第一步:使用void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup)函数对优先级分组配置。

NVIC_PriorityGroup 可以配置为NVIC_PriorityGroup_0 => 选择第0 组NVIC_PriorityGroup_1 => 选择第1 组NVIC_PriorityGroup_2 => 选择第2 组NVIC_PriorityGroup_3 => 选择第3 组NVIC_PriorityGroup_4 => 选择第4 组例如:NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0)配置为0 组。

第六章嵌套向量中断

第六章嵌套向量中断

概述
LPC1700系列ARM具有4路外部中断,可以设置为2种类型: 边沿触发: 上升沿触发 下降沿触发 • 电平触发: 高电平触发 低电平触发
外部中断输入
• 边沿触发中断
下降沿触发类型中断的请求和清除时序。 T2时刻,中断信号有下降沿产生,中断控制器向 T1 时刻,CPU执行完成中断控制器的中断服务程序, CPU 发出中断请求。 清除中断,中断信号回复到高电平。
2. 能实现中断优先级管理。即当有多个中断源同时申请中断时,CPU 能够优先响应最紧急的中断申请。
3. 能实现中断嵌套。即当CPU正在为优先级较低的中断源服务时,具 有较高优先级的中断源提出中断申请,此时中断系统应当允许较 高优先级的中断源中断较低优先级的中断源,待较高优先级的中 断处理完成后,再接着处理较低优先级的中断。这种中断服务程 序再被中断的过程称为中断嵌套。一般的中断系统应能够处理多 级中断嵌套
寄存器
寄存器
中断使能设置寄存器 使能中断 决定当前使能的是哪个中断。 该寄存器的一个位对应一个中断(共32 个中断)。置位 中断使能设置寄存器的位可以使能相应的中断。 当挂起(pending)中断的使能位置位时,处理器会根据 其优先级将其激活。使能位清零时,虽然其中断信号有效 ,可以将中断挂起,但不管其优先级如何,该中断都不能 被激活。因此被禁能的中断可以当作一个被锁存的GPIO 位。用户无需调用中断就可以直接对它进行读取和清零操 作。 1= 使能中断 0= 禁能中断
相应位设置值 注意:在电平触发方式下,清除中断标志只有在引脚处于无效状态时才可 该寄存器控制着外部中断输入信号的有效触发方式,低四位分别对应 电平触发方式下:对应位为 0 时,低电平触发外部中断;对应位为1时, 设置该寄存器允许相应的外部中断将处理器从掉电模式唤醒。实现掉 若引脚上出现了符合要求的信号, EXTINT寄存器中对应的中断标志 设置说明 信号波形 极性控制寄存器 方式控制寄存器 实现。比如设置为低电平中断,则只有在中断引脚恢复为高电平后才能清 电唤醒不需要在向量中断控制器( 高电平触发外部中断。边沿触发方式下:对应位为 外部中断 3~0。对应位为 0时,电平触发外部中断;对应位为 VIC)中使能相应的中断。该寄存器的 0时,下降沿触发外部 1时,边沿 将被置位。向该寄存器的 EINT0 ~ EINT3 位写入 1 ,可将其清零。 (EXTPOLAR) (EXTMODE) 低四位( 中断;对应位为 触发外部中断。 EXTWAKE[3:0] 1时,上升沿触发中断。 )分别对应外部中断3~0。 除中断标志。 低电平触发 中断相关寄存器 控制寄存器 高电平触发 EXTPOLAR EXTWAKE EXTMODE EXTINT 下降沿触发 上升沿触发 7:4 —— 0(低) 0(电平) 3 2 1 0 1(高) 0(电平) EXTPOLAR3 EXTWAKE3 EXTMODE3 EINT3 EXTPOLAR2 EXTWAKE2 EXTMODE2 EINT2 EXTPOLAR1 EXTWAKE1 EXTMODE1 EINT1 EXTPOLAR0 EXTWAKE0 EXTMODE0 EINT0 0(下降) 1(边沿) 1(上升) 1(边沿)

中断嵌套的处理过程

中断嵌套的处理过程

中断嵌套的处理过程在我们的生活中,常常会遇到一些复杂的问题,需要我们不断地进行思考和处理。

有时候,这些问题会像迷宫一样,将我们困在其中,让我们无法找到正确的出口。

在这种情况下,我们需要学会中断嵌套的处理过程,以避免陷入无尽的循环中。

中断嵌套的处理过程可以理解为在处理一个问题的过程中,当我们发现自己陷入了一个循环或死胡同时,及时中断当前的思考方式,尝试新的思路和方法,以打破困境,找到解决问题的办法。

我们需要明确问题的核心,并将其拆解成更小的子问题。

这样做可以帮助我们更好地理解问题的本质,并找到解决问题的方向。

然后,我们需要对每个子问题进行分析和思考,寻找可能的解决方案。

在这个过程中,我们可以尝试不同的方法和角度,以寻找最佳的解决方案。

当我们在解决一个子问题的过程中遇到了困难,或者发现自己陷入了一个死胡同时,我们需要及时中断当前的思考方式。

这时,我们可以停下来,放松一下自己的大脑,转移一下注意力。

可以进行一些与问题无关的活动,比如散步、听音乐或者与朋友交流。

这样做可以帮助我们放松心情,重新调整思维方式。

在中断的过程中,我们可以尝试思考其他的问题,或者从其他的角度思考同一个问题。

这样做可以帮助我们打破思维的局限,寻找到新的解决方案。

同时,我们也可以寻求他人的帮助和建议,听取他们的观点和意见。

这样做不仅可以为我们提供新的思路,还可以促进我们的思维活跃。

当我们在中断嵌套的处理过程后,重新回到问题的解决过程中时,我们会发现自己的思维变得更加清晰,解决问题的能力也得到了提高。

我们可以重新审视之前的思考方式和解决方案,找出其中的问题和不足之处,并进行修正和改进。

通过不断地中断和调整,我们最终可以找到解决问题的最佳路径,并成功地解决问题。

中断嵌套的处理过程是一种寻找解决问题的新思路和方法的策略。

通过中断和调整,我们可以打破思维的局限,找到解决问题的新途径。

这种处理过程需要我们保持积极的心态和灵活的思维,同时也需要我们学会倾听他人的意见和建议。

单片机嵌套中断

单片机嵌套中断

分析嵌套中断1.引言所谓“中断”是处理事件的一个“过程”,这一过程一般是由计算机内部或外部某件紧急事件引起并向主机发出请求处理的信号,主机在允许的情况下响应请求,暂停正在执行的程序,保存好“断点”处的现场,转去执行中断处理程序,处理完中断服务程序后自动返回原断点处,继续执行原程序,这一处理过程称为“中断”。

以AT89S52为例,中断系统含有8个中断源,共有6个中断矢量:定时/计数器0、1、2,INT0、INT1和UART。

两级中断优先级,可实现两级中断嵌套。

用户可以很方便的通过软件实现对中断的控制。

既然系统含有8个中断源,就有可能出现数个中断源同时提出中断请求的情况,这样,设计人员必须事先根据它们的轻重缓急来为每个中断源确定CPU对其的响应顺序。

然而,对于中断优先级寄存器IP来说,只可能设定两级优先,即控制位为1时对应的中断源为高级中断,反之,控制位为0时对应的为低级中断。

这样就出现一个问题:如果一个中断正在执行,如何才能让它响应同级甚至是低级中断请求呢?2.中断多优先级的扩展根据AT89S52的结构特点,其中断系统中含有两个不可寻址的“优先级生效”触发器。

一个用于指出CPU是否正在执行高优先级的中断服务程序,这个触发器为1时,系统将屏蔽所有的中断请求;另一个则指出CPU是否正在执行低优先级中断服务程序,该触发器为1时,将阻止除高优先级以外的一切中断请求。

由此可见,若要响应同级甚至是低级中断请求,必须使得该“优先级生效”触发器清零。

但该触发器又是不可寻址的,所以无法用软件直接清零。

遍历系统所提供的111条指令,只有RETI可以达到此目的。

该指令可在CPU执行该指令时,一方面清除中断响应时所置位的“优先级生效”触发器,另一方面可从当前栈顶弹出断点地址送入程序计数PC,从而返回主程序。

一个系统若有n级中断,在MCU中就有n个中断请求触发器,总称为中断请求寄存器;与之对应的有n个中断屏蔽触发器,总称为中断屏蔽寄存器。

中断嵌套的概念

中断嵌套的概念

中断嵌套是指中断系统正在执行一个中断服务时,有另一个优先级更高的中断提出中断请求,这时会暂时终止当前正在执行的级别较低的中断源的服务程序,去处理级别更高的中断源,待处理完毕,再返回到被中断了的中断服务程序继续执行的过程。

简介其实就是更高一级的中断的“加塞”,处理器正在执行着中断,又接受了更急的另一件“急件”,转而处理更高一级的中断的行为!中断优先级定义优先级高的中断源可以中断优先级低的中断服务程序,这就形成了中断服务程序中套着中断服务程序的情况,即形成了所谓的中断嵌套。

MCU暂停现行程序而转去响应中断请求的过程称为中断响应;为使系统能及时响应并处理发生的所有中断,系统根据引起中断事件的重要性和紧迫程序,硬件将中断源分为若干个级别,称作中断优先级。

查询优先级中断的优先级有两个:查询优先级和执行优先级。

查询优先级是datasheet或书上的默认(IP寄存器不做设置,上电复位后为00H)的优先级:外部中断0> 定时/计数器0 > 外部中断1 > 定时/计数器1 > 串行中断或int0,timer0,int1,timer1,serial port 或 INT0、T0、INT1、T1、UART或PX0>PT0>PX1>PT1>PS>......其实都是查询优级。

首先查询优先级是不可以更改和设置的。

这是一个中断优先权排队的问题,是指多个中断源同时产生中断信号时,中断仲裁器选择对哪个中断源优先处理的顺序。

而这与是否发生中断服务程序的嵌套毫不相干。

当CPU查询各个中断标志位的时候,会依照上述5个查询优先级顺序依次查询,当数个中断同时请求的时候,会优先查询到高优查询先级的中断标志位,但并不代表高查询优先级的中断可以打断已经并且正在执行的低查询优先级的中断服务。

例如:当计数器0中断和外部中断1(按查询优先级,计数器0中断>外部中断1)同时到达时,会进入计时器0的中断服务函数;但是在外部中断1的中断服务函数正在服务的情况下,这时候任何中断都是打断不了它的,包括逻辑优先级比它高的外部中断0计数器0中断。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 2
中断信号
下降沿触发T1T2源自外部中断输入• 电平触发中断
低电平触发类型中断的请求和清除时序。 T3时刻, T2 时刻,中断控制器确认中断信号是低电平后,将向 CPU执行完成中断控制器的中断服务程序, T1时刻,中断信号开始由高电平转为低电平。 CUP发出中断请求。 清除中断,中断信号回复到高电平。
中断的具体行为
• 一个中断输入被认为有效后,就会被挂起。即使一段时间 后该中断的中断源取消了此次请求,挂起状态仍然会被保 存,直到此中断成为系统中最高的优先级时,就会得到处 理器的响应 • 但是,如果挂起中断在得到响应之前,其挂起状态被清除 了(通过修改PRIMASK 或FAULTMASK 寄存器),则此 次中断请求无效,中断的挂起状态在NVIC 的寄存器中是 可写的,用户通过修改相关寄存器可挂起一个中断,也可 清除一个中断。
中断源
每一个外围设备可以有一条或几条中断线连接到向量中断 控制器。多个中断源也可以共用一条中断线。除过ARM内 核指定的某些标准外,哪一条中断线连接到哪一个中断源 是无关紧要的或没有优先级的
寄存器
每个外部中断都在NVIC的下列寄存器中“挂号”: 使能与除能寄存器 挂起与“解挂”寄存器 优先级寄存器 活动状态寄存器 另外,下列寄存器也对中断处理有重大影响 异常掩蔽寄存器(PRIMASK, FAULTMASK以及 BASEPRI) 向量表偏移量寄存器 软件触发中断寄存器 优先级分组位段
3 2 1
中断信号
低电平触发
T1 T2
T3
外部中断输入
• 外部中断源
LPC1700系列微控制器几乎所有的外设部件都可以 产生中断。其中外部中断含有4个独立的中断输入。
外部中断源34 (EINT0) 嵌套 向量 中断 控制 器 (NVIC)
外部中断源35 (EINT1) 外部中断源36 (EINT2) 外部中断源37 (EINT3)
中断挂起清除寄存器 清除挂起中断 决定当前正在挂起哪个中断 该寄存器的一个位对应一个中断(共32 个中断)。置位 中断挂起清除寄存器的位可以让相应的挂起中断变为不激 活状态。 写中断挂起清除寄存器操作对那些已经激活的中断没有影 响,除非这些中断也正处于挂起状态。
外部中断输入
概述
LPC1700系列ARM具有4路外部中断,可以设置为2种类型: 边沿触发: 上升沿触发 下降沿触发 • 电平触发: 高电平触发 低电平触发
外部中断输入
• 边沿触发中断
下降沿触发类型中断的请求和清除时序。 T2时刻,中断信号有下降沿产生,中断控制器向 T1 时刻,CPU执行完成中断控制器的中断服务程序, CPU 发出中断请求。 清除中断,中断信号回复到高电平。
第三,CPU内部应处在开中断(允许中断)状态。
第四,CPU至少要在当前指令执行完成时才可能响应中断。
异常/中断
系统异常是Cortex-M3内核自带的一些异常,比如复位、 总线Fault和SysTick等等 外设中断是指制造CPU的厂家加入的,比如串口、定时器 中断等等 异常和中断都可以“中断”正常执行的代码流 区别在于: 异常是Cortex-M3内核产生的“中断”信号,在执行指令 或访问存储器时产生的,对Cortex-M3 内核来说是“同 步”的 而中断是Cortex-M3内核外部(片上外设或外部中断信号 )产生的“中断”信号中断请求信号一般来自内核的外部 ——片上外设或外扩的设备等,对Cortex-M3 内核来说 是“异步”的。
中断的具体行为
当某中断的服务例程开始执行时,就称此中断进入了“活 跃”状态,并且其悬起位会被硬件自动清除。在一个中断 活跃后,直到其服务例程执行完毕,并且返回(亦称为中 断退出)后,才能对该中断的新请求予以响应(单实例) 。当然,新请求在得到响应时,亦是由硬件自动清零其悬 起标志位。中断服务例程也可以在执行过程中把自己对应 的中断重新悬起
相应位设置值 注意:在电平触发方式下,清除中断标志只有在引脚处于无效状态时才可 该寄存器控制着外部中断输入信号的有效触发方式,低四位分别对应 电平触发方式下:对应位为 0 时,低电平触发外部中断;对应位为1时, 设置该寄存器允许相应的外部中断将处理器从掉电模式唤醒。实现掉 若引脚上出现了符合要求的信号, EXTINT寄存器中对应的中断标志 设置说明 信号波形 极性控制寄存器 方式控制寄存器 实现。比如设置为低电平中断,则只有在中断引脚恢复为高电平后才能清 电唤醒不需要在向量中断控制器( 高电平触发外部中断。边沿触发方式下:对应位为 外部中断 3~0。对应位为 0时,电平触发外部中断;对应位为 VIC)中使能相应的中断。该寄存器的 0时,下降沿触发外部 1时,边沿 将被置位。向该寄存器的 EINT0 ~ EINT3 位写入 1 ,可将其清零。 (EXTPOLAR) (EXTMODE) 低四位( 中断;对应位为 触发外部中断。 EXTWAKE[3:0] 1时,上升沿触发中断。 )分别对应外部中断3~0。 除中断标志。 低电平触发 中断相关寄存器 控制寄存器 高电平触发 EXTPOLAR EXTWAKE EXTMODE EXTINT 下降沿触发 上升沿触发 7:4 —— 0(低) 0(电平) 3 2 1 0 1(高) 0(电平) EXTPOLAR3 EXTWAKE3 EXTMODE3 EINT3 EXTPOLAR2 EXTWAKE2 EXTMODE2 EINT2 EXTPOLAR1 EXTWAKE1 EXTMODE1 EINT1 EXTPOLAR0 EXTWAKE0 EXTMODE0 EINT0 0(下降) 1(边沿) 1(上升) 1(边沿)
异常类型
Cortex-M3 在内核水平上搭载了一个异常响应系统,支 持11 种系统异常和240 个外部中断输入,如表2.9 所列 。其中,编号1~15 对应的是系统异常,大于等于16 的则 全是外部中断。除了个别异常有固定的优先级外,其它异 常的优先级都是可编程的。系统异常和外部中断通过不同 的寄存器组进行控制。
嵌套向量中断
中断的概念
• CPU正在执行程序时,单片机外部或内部发生的某一事件 ,请求CPU迅速去处理。 • CPU暂时中止当前的工作,转到中断服务处理程序处理所 发生的事件。 • 处理完该事件后,再回到原来被中止的地方,继续原来的 工作,这称为中断。 • CPU处理事件的过程,称为CPU的中断响应过程。
1 2 3 2 1 4 3
管脚 连接控制
外部中断 极性控制
EXTPOLAR
外部中断 方式控制
EXTMODE
中断标志
EXTINT
CPU 其它部件
PINSELx
• 寄存器汇总
中断信号波形与设置方式 外部中断标志寄存器(EXTWAKE) (EXTINT) :: : 外部中断唤醒寄存器 外部中断方式控制寄存器 外部中断极性控制寄存器 (EXTMODE) (EXTPOLAR) :
对事件的整个处理过程,称为中断处理(或中断服务,ISR)。
主程序
执行主 程序 中断请求 中断响应
执行 中断 处理 程序
中断返回
继续执行 主程序
中断方式优点:大大地提高了CPU的工作效率。
能够实现中断处理功能的部件称为中断系统
中断系统需要解决的问题:
1. 能实现中断响应、中断处理(服务)、中断返回和中断屏蔽。这 是中断系统最基本的功能。
中断的具体行为
• 如果在执行某中断的服务函数期间,中断源一直保持请求 信号有效,该中断就会在其服务程序返回后再次被挂起,
中断的具体行为
同样,若中断在服务例程执行过程中释放了请求,但在服 务例程返回前又发出了新的请求信号,则处理器会记住此 动作,将再次挂起该中断
中断的具体行为
如果中断在得到响应之前,其请求信号以脉冲的形式出现 若干次,则被视为只有一次请求
2. 能实现中断优先级管理。即当有多个中断源同时申请中断时,CPU 能够优先响应最紧急的中断申请。
3. 能实现中断嵌套。即当CPU正在为优先级较低的中断源服务时,具 有较高优先级的中断源提出中断申请,此时中断系统应当允许较 高优先级的中断源中断较低优先级的中断源,待较高优先级的中 断处理完成后,再接着处理较低优先级的中断。这种中断服务程 序再被中断的过程称为中断嵌套。一般的中断系统应能够处理多 级中断嵌套
寄存器
寄存器
中断使能设置寄存器 使能中断 决定当前使能的是哪个中断。 该寄存器的一个位对应一个中断(共32 个中断)。置位 中断使能设置寄存器的位可以使能相应的中断。 当挂起(pending)中断的使能位置位时,处理器会根据 其优先级将其激活。使能位清零时,虽然其中断信号有效 ,可以将中断挂起,但不管其优先级如何,该中断都不能 被激活。因此被禁能的中断可以当作一个被锁存的GPIO 位。用户无需调用中断就可以直接对它进行读取和清零操 作。 1= 使能中断 0= 禁能中断
NVIC 功能
2.向量中断支持 当开始响应一个中断后,Cortex-M3 会自动定位一张向 量表,根据中断号从表中找出相应中断的入口地址,然后 跳转过去执行 3.动态优先级调整支持 优先级在中断运行期间可以通过软件进行修改。在中断服 务例程执行完成前,中断是被锁定的,无法进行深度激活 ,避免了意外重入的风险。 4.中断延迟大大缩短 Cortex-M3 为了缩短中断延迟,引入了多个新特性。包 括中断现场的自动保护与恢复,“咬尾中断”和“晚到中 断”机制的支持 5 中断可屏蔽 通过设置BASEPRI、PRIMASK 和FAULTMASK 等寄 存器, 既可屏蔽优先级低于某个阈值的中断,也可以屏 蔽所有中断,保证时间关键的任务能在最后期限前完成。
系统异常是Cortex-M3 内核支持的基本异常,与具体的 芯片无关,而外部中断则是与芯片相关的,芯片厂商会根 据需要和用途设计中断源数目(1-240)和优先级的位数 。LPC1700 系列Cortex-M3 支持35 个外部中断和32 个 中断优先级。
相关文档
最新文档