向量中断(Vector Interrupt)是一种中断处理机制,它允许处理器根据中断发生的类型(即中断源)跳转到预先设定好的内存地址(称为中断向量地址)来执行相应的中断服务程序(ISR)。这种机制使得处理器能够快速准确地响应中断事件,无需在每个中断到来时查询中断源。
在ARM Cortex-M系列微控制器(包括STM32)中,向量中断是通过中断向量表来实现的。中断向量表是一个存储在固定地址(通常为闪存的起始地址)的表,每个表项对应一个中断源,表项的值是一个地址,指向该中断服务程序的入口点。
例如,在STM32中,中断向量表的前几个表项通常对应复位、NMI(不可屏蔽中断)、硬故障、总线故障等内核异常,后面的表项则对应着各外围设备产生的中断。当某中断发生时,处理器会自动读取中断向量表中对应中断源的地址,然后跳转执行该地址处的ISR。
启用向量中断的优点在于:
- 快速响应:处理器能直接跳转到对应的中断服务程序,无需额外查询中断源,减少了中断响应延迟。
- 易于管理:中断服务程序的组织结构清晰,便于调试和维护。
在编写STM32程序时,开发者通常会在启动文件(如`startup_stm32f103xb.s`)中初始化中断向量表,并在C代码中编写对应的中断服务程序,以便在中断发生时执行相应的处理逻辑。