1. STM32外部中断系统深度解析:从信号路径到优先级调度
在嵌入式系统开发中,中断机制是连接物理世界与软件逻辑的核心桥梁。当一个按键被按下、ADC转换完成、串口数据到达或定时器溢出时,CPU需要立即响应这些异步事件,而非被动轮询。STM32F1系列作为工业级主流MCU,其外部中断(EXTI)系统设计精巧、层次清晰,但初学者常因概念混淆而陷入调试困境——为何中断反复触发?为何高优先级中断未能抢占?为何PB12按键触发的却是EXTI15_10_IRQHandler?本文将摒弃视频教学中的口语化表达,以工程师视角逐层拆解EXTI硬件架构、信号流、寄存器配置逻辑及中断调度机制,还原一个真实可复现的工程实现闭环。
1.1 EXTI硬件结构:19条独立中断线与共享向量的物理本质
STM32F103系列芯片内部集成19个外部中断/事件线路(EXTI Line 0–15对应GPIO引脚,EXTI Line 16–18对应PVD、RTC Alarm、USB Wakeup等专用外设)。关键在于:这19条线路在硬件上完全独立,但共享同一套控制寄存器组。查阅《STM32F103xx参考手册》第135页可知,每条EXTI线均包含以下核心模块:
- 输入驱动器:来自GPIOx_PINy的电平信号首先进入施密特触发器进行波形整形,消除抖动干扰;
- 边沿检测电路:由
EXTI_RTSR(上升沿触发选择寄存器)和EXTI_FTSR(下降沿触发选择寄存器)联合控制。例如,若需PB12引脚下降沿触