打印
[应用方案]

嵌套向量中断控制器 (NVIC)

[复制链接]
1872|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
捉虫天师|  楼主 | 2016-9-30 16:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Cortex-M0提供中断控制器,作为异常模式的组成部分,称之为“嵌套向量中断控制器(NVIC)”。 它与处 理器内核紧密联系,并具有以下特性:  支持嵌套和向量中断  自动保存和恢复上下文  可动态改变优先级  简化的精确的中断延迟 NVIC对所有支持的异常按优先级排序并处理,所有异常在“处理模式“处理. NVIC结构支持具有四级优先 级的32个(IRQ[31:0])离散中断。 所有的中断和大多数系统异常可以配置为不同的优先级。当中断发生 时,NVIC将比较新中断与当前中断的优先级,如果新中断优先级高于当前中断,则新中断将代替当前 中断被处理。

当任何中断被响应时,中断服务程序(ISR)的起始地址从内存的向量表中取得。不需要由软件确定响 应哪个中断,也不要软件跳转到相应ISP的起始地址。当取得起始地址时,NVIC将自动保存处理器状 态,包括以下寄存器“PC, PSR, LR, R0~R3, R12” 的值到栈中。 在ISR结束时, NVIC 将从栈中恢复相关 寄存器的值,恢复正常操作, 因此处理器将花费更少的并且确定的时间去处理中断请求。

NVIC支持末尾连锁“Tail Chaining” ,有效处理尾对尾中断“back-to-back interrupts”, 即无需重复保存和 恢复当前状态从而减少从当前ISR结束切换到等待处理的ISR的延迟时间。NVIC还支持晚到“Late Arrival”,可以提升同时发生的ISR的效率。在当前ISR开始执行(保存处理器状态并获取起始地址阶 段)之前如果较高优先级中断请求发生,NVIC将立即选择处理更高优先级的中断,从而提高了实时 性。


沙发
捉虫天师|  楼主 | 2016-9-30 16:17 | 只看该作者
详情请参考“ARM® Cortex®-M0 Technical Reference Manual” 与 “ARM® v6-M Architecture Reference Manual”. DDI0432C_cortex_m0_r0p0_trm.pdf (461.17 KB)



使用特权

评论回复
板凳
捉虫天师|  楼主 | 2016-9-30 16:19 | 只看该作者
异常模式和系统中断 映射 6.2.9.1 下表列出了NuMicro™ M051系列支持的异常模型。 软件可以对其中一些异常以及所有中断设置4级优先 级。最高用户可配置优先级记为“0”,最低优先级记为“3”,所有用户可配置的优先级的默认值为“0”。 注 意:优先级“0”在整个系统中为第4优先级,排在“Reset”, “NMI” 与“Hard Fault”之后。


当任何中断被响应时,处理器会自动从内存的向量表中获取中断服务程序(ISR)的起始地址。对于 ARMv6-M, 向量表的基地址固定在0x00000000。向量表包括复位后栈指针的初始值,和所有异常处理 函数的入口地址。上一节的向量号(异常号)决定了异常处理函数在向量表中的入口顺序。

通过写相应中断使能设置寄存器或清使能寄存器位域,可以使能NVIC中断或禁用NVIC中断,这些寄存 器通过写1使能和写1清除为零,读取这两个寄存器均返回当前相应中断的使能状态。当某一个中断被禁 用时,中断声明将使该中断处于等待处理状态,然而,该中断不会被激活。如果某一个中断在被禁用时 处于激活状态,该中断就保持在激活状态,直到通过复位或异常返回来清除。清使能位可以阻止相关中 断被再次激活。 NVIC中断可以使用互补的寄存器对来挂起/解除挂起以使能/禁用这些中断,这些寄存器分别为SetPending寄存器与Clear-Pending寄存器,这些寄存器使用写1使能和写1清除的方式,读取这两种寄存器 都返回相应中断的当前挂起状态。Clear-Pending寄存器不会对处于激活状态的中断的执行状态产生任 何影响。 NVIC中断通过更新32位寄存器中的各个8位字段(每个寄存器支持4个中断)来分配中断的优先级。 与NVIC相关的通用寄存器都可以通过系统控制空间的内存区域访问

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

191

主题

3040

帖子

7

粉丝