Cortex-M3 的 NVIC(嵌套向量中断控制器)不直接控制整个异常向量表,但可以管理向量表中与中断相关的部分行为。以下是 NVIC 对异常向量表的具体控制范围和相关机制:
1. NVIC 直接控制的部分
NVIC 主要管理 外部中断(IRQ) 和部分 系统异常 的行为,但对向量表本身的存储位置和内容没有直接控制权。其控制范围包括:
控制对象 | NVIC 的管理能力 |
---|---|
外部中断(IRQ0-IRQn) | - 使能/禁用中断(通过 ISER /ICER 寄存器)- 设置优先级(通过 IPR 寄存器)- 挂起/清除中断状态(通过 ISPR /ICPR 寄存器) |
部分系统异常 | - SysTick、PendSV、SVC 等可编程优先级异常的优先级配置 - 使能/禁用 SysTick 中断 |
中断触发 | - 支持软件触发中断(通过 NVIC_SetPendingIRQ() ) |
关键点:
- NVIC 不负责存储向量表(向量表由编译器/链接脚本定位在 Flash 起始地址)。
- NVIC 无法修改向量表中的函数地址(向量表是只读的,烧录时固定)。
2. 与向量表相关的 NVIC 间接控制
虽然 NVIC 不直接控制向量表内容,但通过以下机制影响异常处理流程:
功能 | NVIC 的作用 |
---|