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处必须包含一张向量表,用于初始时的异常分配。

&nb

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

被折叠的 条评论
为什么被折叠?



