1. STM32中断机制深度解析
中断是嵌入式系统中最核心的机制之一,它允许处理器在执行常规程序时,能够及时响应来自硬件或软件的紧急事件。在STM32微控制器中,中断系统设计得尤为精密,包含以下几个关键组成部分:
中断源:STM32的中断源异常丰富,主要包括:
- 外部中断(EXTI):对应GPIO引脚的电平变化
- 定时器中断:包括更新事件、捕获/比较事件等
- 通信接口中断:USART、SPI、I2C等通信事件
- 模拟外设中断:ADC转换完成、DMA传输完成等
中断优先级:STM32采用嵌套向量中断控制器(NVIC),支持多达16个可编程优先级级别。优先级分为抢占优先级和子优先级两个维度,高抢占优先级的中断可以打断低优先级的中断服务程序。
实际项目中,建议将实时性要求高的中断(如电机控制PWM)设置为高抢占优先级,而将非关键中断(如调试串口)设置为低优先级。
中断处理流程:
- 中断触发:外设或外部信号满足中断条件
- 现场保护:CPU自动将关键寄存器压栈
- 跳转执行:根据向量表跳转到对应的中断服务程序
- 中断服务:执行用户编写的中断处理代码
- 中断返回:恢复现场并返回到被中断的程序
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 外部中断实战项目详解
2.1 项目需求分析
本实验要实现两个独立的功能:
- 红色LED以4秒为周期,亮2秒灭2秒(使用定时器实现)
- 当按下KEY1按键时,绿色LED状态反转(使用外部中断实现)
这种设计模拟了嵌入式系统中常见的场景:后台周期性任务(LED闪烁)与实时事件响应(按键中断)的协同工作。
2.2 硬件电路设计
典型连接方案:
- 红色LED:连接PC13(或其他GPIO),串联220Ω限流电阻
- 绿色LED:连接PC14,串联220Ω限流电阻
- 按键KEY1:连接PA0,配置为上拉输入,按键按下时接地
实际布线时,建议在按键两端并联0.1μF电容以消除抖动,避免多次误触发中断。
3. CubeMX工程配置详解
3.1 时钟树配置
首先配置系统时钟为最高性能(如72MHz),确保定时器精度:
- 选择HSE作为时钟源
- 配置PLL倍频参数
- 设置AHB、APB1、APB2分频系数
3.2 GPIO配置
- LE
