NVIC与中断控制•NVIC概览•中断配置基础•中断使能与除能•中断的悬起与解悬•中断建立全过程的演示•软件中断•再论SysTick定时器NVIC概览正如前文已经多次提到的,向量中断控制器,简称NVIC,是Cortex‐M3不可分离的一部分,它与CM3内核的逻辑紧密耦合,有一部分甚至水乳交融在一起
NVIC与CM3内核同声相应,同气相求,相辅相成,里应外合,共同完成对中断的响应
NVIC的寄存器以存储器映射的方式来访问,除了包含控制寄存器和中断处理的控制逻辑之外,NVIC还包含了MPU的控制寄存器、SysTick定时器以及调试控制
本章中,我们将体检NVIC的中断处理控制逻辑
MPU与调试控制逻辑在后续章节中讨论
NVIC共支持1至240个外部中断输入(通常外部中断写作IRQs)
具体的数值由芯片厂商在设计芯片时决定
此外,NVIC还支持一个“永垂不朽”的不可屏蔽中断(NMI)输入
NMI的实际功能亦由芯片制造商决定
在某些情况下,NMI无法由外部中断源控制
NVIC的访问地址是0xE000_E000
所有NVIC的中断控制/状态寄存器都只能在特权级下访问
不过有一个例外——软件触发中断寄存器可以在用户级下访问以产生软件中断
所有的中断控制/状态寄存器均可按字/半字/字节的方式访问
此外,有几个中断屏蔽寄存器也与中断控制密切相关,它们是第三章中讲到的“特殊功能寄存器”,只能通过MRS/MSR及CPS来访问
中断配置基础每个外部中断都在NVIC的下列寄存器中“挂号”:•使能与除能寄存器•悬起与“解悬”寄存器•优先级寄存器•活动状态寄存器另外,下列寄存器也对中断处理有重大影响•异常掩蔽寄存器(PRIMASK,FAULTMASK以及BASEPRI)•向量表偏移量寄存器•软件触发中断寄存器•优先级分组位段中断的使能与除能中断的使能与除能分别使用各自的寄存器来控制——