Cortex-M3异常和中断(NVIC)

Cortex-M3内核通过NVIC(Nested Vector Interrupt Controller)处理异常和中断,包括系统异常和外部IRQ。NVIC支持11个系统异常和最多240个外部中断,其功能包括中断使能、优先级设置、活动状态管理等。NMI(不可屏蔽中断)通常与看门狗或电压监视功能关联。中断响应时,CM3使用向量表查表机制找到异常服务例程(ESR)的入口地址。NVIC的中断控制寄存器只能在特权级访问,而软件触发中断寄存器则可在用户级访问。中断嵌套时,NVIC和处理器自动管理堆栈,确保现场保护,但需注意堆栈容量以避免溢出。咬尾中断机制减少了中断延迟,提高了效率。晚到的高优先级异常在早期响应阶段可以中断当前处理,直接执行更高优先级的异常服务例程。
摘要由CSDN通过智能技术生成

Cortex-M3支持大量异常,包括16-4-1=11个系统异常,和最多240个外部中断——简称IRQ。具体使用了这240个中断源中的多少个,则由芯片制造商决定。由外设产生的中断信号,除了SysTick的之外,全都连接到NVIC的中断输入信号线。典型情况下,处理器一般支持16到32个中断,当然也有在此之外的。

作为中断功能的强化,NVIC还有一条NMI输入信号线。NMI究竟被拿去做什么,还要视处理器的设计而定。在多数情况下,NMI会被连接到一个看门狗定时器,有时也会是电压监视功能块,以便在电压掉至危险级别后警告处理器。NMI可以在任何时间被激活,甚至是在处理器刚刚复位之后。

当CM3内核响应了一个发生的异常后,对应的异常服务例程(ESR)就会执行。为了决定ESR的入口地址,CM3使用了“向量表查表机制”。这里使用一张向量表。向量表其实是一个WORD(32位整数)数组,每个下标对应一种异常,该下标元素的值则是该ESR的入口地址。向量表在地址空间中的位置是可以设置的,通过NVIC中的一个重定位寄存器来指出向量表的地址。在复位后,该寄存器的值为0。因此,在地址0处必须包含一张向量表,用于初始时的异常分配。

               

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值