NVIC简介
NVIC,可嵌套的向量中断控制器。是Cortex-M3不可分割的一部分,它与CM3内核的逻辑紧密耦合。NVIC与CM3内核同声相应,同气相求,相辅相成,里应外合,共同完成对中断的响应。
NVIC的寄存器以存储器映射的方式来访问,除了包含控制寄存器和中断处理的控制逻辑之外,NVIC还包含了MPU的控制寄存器、SysTick定时器以及调式控制。
NVIC共支持1至240个外部中断输入(通常外部中断写作IRQs,这里的“外部”是指CM3内核外部)。此外NVIC还支持一个永垂不朽的不可屏蔽中断(NMI)输入。
NVIC的访问地址是0xE000_E000。所有NVIC的中断控制/状态寄存器都只能在特权级下访问。不过有一个例外————软件触发中断寄存器可以在用户级下访问以产生软件中断。
中断配置基础
每个外部中断都在NVIC的下列寄存器中“挂号”:
- 使能与除能寄存器
- 悬起与解悬寄存器
- 优先级寄存器
- 活动状态寄存器
另外,下列寄存器也对中断处理有重大影响。
- 异常掩蔽寄存器(PRIMASK、FAULTMASK、BASEPRI)
- 向量表偏移量寄存器
- 软件触发中断寄存器
- 优先级分组位段
中断的使能与除能
CM3中可以有240对使能位/除能位,每个中断拥有一对。
这240个对子分布在8对32位寄存器中(最后一对没用完)。
欲使能一个中断,你需要写1到对应的SETENA位中;欲除能一个中断,你需要写1到对应的C