当前位置:文档之家› 第六章嵌套向量中断

第六章嵌套向量中断

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 个 中断优先级。
相关主题