1. STM32外部中断机制的工程化解析
在嵌入式系统开发中,中断并非简单的“打断执行”这一表层概念所能概括。它是一套由硬件电路、寄存器配置与软件响应共同构成的精密协同机制。当一个按键被按下,或一个串口数据帧抵达,抑或一个定时器计数溢出时,系统必须在微秒级时间内完成信号感知、状态判断、上下文保存、服务函数调度与状态恢复。这套机制的底层逻辑,正是STM32F1系列芯片中断子系统的设计哲学。本节将剥离教学视频的口语化外壳,以工程师视角,逐层拆解EXTI(External Interrupt/Event Controller)的硬件结构、寄存器映射关系与软件协同逻辑,为后续所有外设中断的工程实践奠定坚实基础。
1.1 外部中断线(EXTI Line)的物理映射与复用机制
STM32F1系列芯片定义了19条独立的外部中断线(EXTI0–EXTI18),其中前16条(EXTI0–EXTI15)与GPIO端口存在明确的映射关系。这种映射并非绑定到单一引脚,而是基于引脚编号(Pin Number)的跨端口复用。其核心规则是:所有端口上编号为N的引脚,均共享同一条EXTI线EXTI_N。
这意味着:
- EXTI0 同时连接 PA0、PB0、PC0、PD0、PE0 等所有端口的第0号引脚;
- EXTI1 同时连接 PA1、PB1、PC1、PD1、PE1 等所有端口的第1号引脚;
- …
- EXTI15 同时连接 PA15、PB15、PC15、PD15、PE15 等所有端口的第15号引脚。
该设计极大提升了引脚资源的灵活性。例如,若项目中PA0已被US