ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

005.STM32标准库学习之中断系统解读

2026/8/7 2:35:59 拓冰建站 浏览量
005.STM32标准库学习之中断系统解读

引言:中断——嵌入式系统的“实时响应”灵魂

在嵌入式系统中,中断是实现实时响应、多任务并发和低功耗的核心机制。STM32基于ARM Cortex-M3内核,拥有一套成熟且强大的中断管理系统。理解这套系统,是编写稳定、高效嵌入式程序的关键。

本文将从中断来源分类切入,逐步深入到中断向量表的组织、NVIC控制器的寄存器级原理、优先级分组的精细配置,最后总结出中断编程的标准化四步流程。

第一部分:中断来源与向量表

B1. 异常类型:系统异常与外部中断

STM32的中断并非单一类型,而是分为内核级外设级两大类。

1. 系统异常(System Exceptions)—— 内核“内部”的紧急事件

系统异常是由Cortex-M3内核内部产生的事件,与芯片外设无关。它们反映了CPU核心自身的状态或调试需求。

来源:内核外设(如SysTick、SCB)以及内核运行时的故障(如访问非对齐地址、执行未定义指令)。

特点

  • 由内核直接管理

  • 中断号较小(编号1~15)

  • 优先级分组与外部中断共享,但部分异常有固定优先级(如Reset、NMI)

常见的系统异常

异常名称异常编号优先级(数值越小越高)说明
Reset1-3(固定最高)系统上电或复位后最先执行
NMI2-2不可屏蔽中断,用于电源、时钟等关键错误
HardFault3-1(可编程)处理其他故障未使能时的统一入口
SVCall11可编程由SVC指令触发,常用于操作系统上下文切换
SysTick15可编程内核SysTick定时器触发,RTOS心跳的典型选择

辨析:系统异常虽然常被称为“异常”,但在Cortex-M3中,“异常”与“中断”是同一个概念——即所有打断主程序的事件统称为异常。本章中“系统异常”与“外部中断”只是为了区分来源,并不代表中断机制不同。

2. 外部中断(External Interrupts)—— 外设“外部”的请求

外部中断是由STM32芯片上的各种外设(GPIO、定时器、USART等)产生的中断请求。这些外设通过自身事件向NVIC发送中断信号。

特点

  • 外设级,每个外设内部可能包含多个中断请求

  • 中断号范围较大(CM3中从16开始,STM32F1系列最多60个)

  • 可独立使能/挂起/清除,优先级可配置

常见外部中断来源

外设常见中断事件
EXTIGPIO引脚上升沿、下降沿或双边沿检测
TIM更新中断(溢出)、捕获/比较中断
USART接收缓冲区非空(RXNE)、发送缓冲区空(TXE)、空闲帧检测
SPI/I2C传输完成、接收缓冲区非空、错误