1. STM32外部中断系统深度解析:从信号路径到优先级调度
在嵌入式系统开发中,中断机制是连接物理世界与程序逻辑的核心桥梁。当一个按键被按下、一个编码器发生旋转、或一个串口数据帧抵达时,CPU必须立即暂停当前任务,转而执行特定的响应逻辑——这种“打断-响应-返回”的机制,正是中断的本质。然而,许多开发者仅停留在HAL_GPIO_EXTI_Callback()函数的调用层面,对信号如何从引脚穿越层层硬件模块最终触发中断服务函数(ISR)缺乏系统性认知。本节将基于STM32F1系列芯片的硬件架构,逐级剖析外部中断(EXTI)的完整信号路径,揭示NVIC、中断向量表、优先级分组等关键概念的工程意义,为后续定时器编码器、串口接收等复杂中断场景打下坚实基础。
1.1 信号入口:GPIO输入驱动器与电平预处理
外部中断的起点始终是物理引脚。以视频中提及的PB12按键为例,当机械触点闭合,外部电压信号经PCB走线抵达MCU封装引脚。该信号首先进入GPIO端口B的第12位(GPIOB_Pin12)。此时,信号尚未具备数字逻辑特性,可能携带噪声、抖动或缓慢上升/下降沿。STM32的GPIO输入驱动器在此阶段完成三项关键预处理:
- 上下拉电阻配置:通过
GPIO_InitStruct.Pull = GPIO_PULLUP或GPIO_PULLDOWN设置,为悬空引脚提供确定的默认电平。对于按键应用,上拉配置(按键未按下时为高电平,按下时接地为低电平)是行业惯例,可避免浮空导致的误触发。 - 施密特触发器整形 </