Cortex-M3 NVIC可以控制异常向量表的哪些部分

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 的作用