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 这三个内核中断。


相关推荐
Zw-awa7 小时前
C语言函数指针与宏实战:从回调、表驱动菜单到X-Macro,讲透嵌入式代码解耦
stm32
无敌贵点大王13 小时前
从寄存器层面重学STM32(9)——DMA理论
stm32·单片机·嵌入式硬件
Zw-awa1 天前
用两个按键做一个OLED菜单:先把选择和执行分开
stm32
Good白10191 天前
嵌入式:1.嵌入式入门|初识嵌入式、处理器、ARM与STM32
arm开发·stm32·嵌入式硬件
小李不想当小白1 天前
HAL库之UART(STM32 HAL库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
Dev_XH2 天前
【成品设计】基于物联网的旅游生态农业互动系统
stm32·单片机·嵌入式硬件·物联网·旅游
lzj_pxxw2 天前
STM32移植FreeRTOS(Cmake+CubeMX)
vscode·stm32·嵌入式硬件
Zw-awa2 天前
屏幕不止一种:OLED、LCD1602字符屏、TFT/IPS图形屏和串口屏怎么用,这与TTY和PTY又有什么关系
stm32
无敌贵点大王2 天前
从寄存器层面重学STM32(7)——定时器
stm32·单片机·嵌入式硬件
zhangzhangkeji2 天前
FreeRTos笔记(12c):从事件链表里删除节点 xTaskRemoveFromEventList、
freertos