1. 中断函数组织方式:模块化与集中式管理的工程实践
在STM32F103嵌入式开发中,中断服务函数(ISR)的组织方式并非仅关乎代码风格,而是直接影响项目可维护性、团队协作效率和长期演进能力。许多初学者将中断函数直接写在对应外设驱动模块中——例如把TIM2中断处理逻辑放在tim.c里,USART1中断放在usart.c中。这种做法在单功能小实验中看似简洁,但当系统扩展至包含10+个外设、多个定时器、多路串口、ADC采样及外部中断时,模块边界迅速模糊:tim.c中混入了LED闪烁逻辑,usart.c里耦合了协议解析状态机,exti.c又意外承担了按键消抖任务。此时,任何一次中断行为变更都可能引发跨模块连锁修改,调试成本呈指数级上升。
更本质的问题在于中断响应路径的不可见性。当一个异常行为出现(如某LED闪烁周期突变为原值两倍),开发者需在全部外设源文件中逐个grep中断函数名,再比对NVIC配置、中断使能状态与实际执行逻辑。这种“大海捞针”式排查严重拖慢迭代节奏。而集中式中断管理的核心价值,正在于将所有中断入口点显式收敛到单一物理位置,形成清晰的“中断地图”。
STM32标准外设库(SPL)在user/目录下预置的stm32f10x_it.c文件,正是为解决此问题而设计。该文件名中的it即interrupt缩写,其存在本身即宣告了一种工程约定:所有中断向量表映射的C语言实现必须在此统