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 主要管理的就是内核中断,SysTickPendSVSVC 这三个内核中断。


相关推荐
猫猫的小茶馆1 天前
【ARM】从零封装STM32标准库
汇编·arm开发·stm32·单片机·嵌入式硬件·架构
liujing102329291 天前
stm32 开发的 c_cpp_properties.json 配置
c语言·stm32·嵌入式硬件
d111111111d1 天前
STM32平衡车工具-匿名助手+虚拟串口如何使用。
笔记·stm32·单片机·嵌入式硬件·学习
xingzhemengyou11 天前
STM32 Cortex-M3和Cortex-M4内核差异
stm32
森旺电子1 天前
信号量核心API函数详细介绍
freertos
小尧嵌入式1 天前
STM32中OTA介绍及使用
开发语言·stm32·单片机·嵌入式硬件
会编程是什么感觉...1 天前
单片机 - STM32CubeMX HAL库开发部分
stm32·单片机·嵌入式硬件
TheNextByte11 天前
如何轻松地将音乐从Mac传输到Android ?
android·stm32·macos
快乐的划水a1 天前
嵌入式时间测量方法总结
c++·stm32·单片机
Zeku1 天前
20251224 - 嵌入式 Linux 开发中的MQTT指南
stm32·freertos·linux驱动开发·linux应用开发