FreeRTOS 学习:(十七)“外部中断”和“内核中断”的差异,引入 FreeRTOS 中断管理
| 上一篇 | 下一篇 |
|---|---|
| 可调用 FromISR 相关 API 函数的中断优先级范围 |
“外部中断”和“内核中断”的差异
1)首先,简单介绍一下这两种中断:
- 外部中断
指由 STM32 芯片上的外设(如 USART、TIM、EXTI、ADC 等)产生的中断。这里的“外部”是相对于 CPU 内核而言,并非仅指“芯片引脚输入”。例如 USART 中断也是“外部中断”。 - 内核中断
指由 ARM Cortex-M 内核 自身定义的系统级异常,如 SysTick、PendSV、HardFault 等。它们是架构级的,与具体芯片无关。
2)优先级配置寄存器的区别:
-
外部中断
NVIC->IPR[n](每个 IRQn 对应一个字节) -
内核中断
SCB->SHP[n](对应 SHPR1/2/3,共 12 字节)
3)常见内核中断列表(部分,完全对应中断向量表):
| 异常名 | IRQn | 说明 |
|---|---|---|
| Reset | -15 | 系统复位 |
| NMI | -14 | 不可屏蔽中断 |
| HardFault | -13 | 严重错误处理 |
| MemManage | -12 | MPU 访问违规(若支持) |
| BusFault | -11 | 总线访问错误 |
| UsageFault | -10 | 使用错误(如除零) |
| SVC | -5 | 系统调用(常用于 RTOS) |
| PendSV | -2 | 挂起系统调用(RTOS 上下文切换) |
| SysTick | -1 | 系统滴答定时器(常用作 RTOS tick) |
⚠️ 注意:Reset、NMI、HardFault 优先级固定且最高,无法通过软件降低。
手册中的中断向量表,其中红色框内的是系统中断(内核中断):

FreeRTOS 主要管理的就是内核中断,SysTick、PendSV、SVC 这三个内核中断。
