【物联网学习笔记】中断

第一章 中断核心基础概念

先搞懂核心名词,是理解中断机制的前提,所有术语均对应课件核心定义。

  1. 中断通俗理解:CPU 正在执行主程序时,收到紧急的中断请求,会暂停当前主程序,跳转去处理中断事件;处理完成后,再回到主程序被打断的位置继续执行。
  2. 中断向量 中断服务程序(处理中断事件的函数)在内存中的入口地址。由于 CPU 随时可能收到中断请求,因此中断处理程序必须常驻内存固定空间,其入口地址就叫中断向量。
  3. 中断向量表存放芯片所有中断向量的连续存储区。处理器通过向量表可以自动定位中断程序的入口,大幅缩短中断响应的时间。
  4. STM32 中断向量表关键地址 STM32 内部闪存起始地址为0x08000000,中断向量表从此处开始排布:
    • 0x08000000:栈顶地址
    • 0x08000004:复位中断向量(中断向量表起始核心地址)
    • 后续其他中断向量地址:0x08000004 + n,依次排列

第二章 STM32 程序启动与中断跳转基础流程

清晰梳理从芯片上电复位,到主程序运行,再到中断触发执行的完整链路,解决初学者 "程序到底怎么跑起来、中断怎么插进来" 的核心疑问。

  1. 复位启动 :STM32 复位后,从0x08000000处取出复位中断向量的地址,跳转执行复位中断服务程序。
  2. 进入主程序 :复位中断服务程序执行完成后,最终跳转至 C 语言的main函数(main函数通常为死循环,是一个永不返回的函数)。
  3. 中断触发main函数执行过程中,若发生中断请求,STM32 硬件机制会强制将 PC 指针拉回中断向量表。
  4. 中断执行:根据中断源,从中断向量表中找到对应中断服务程序的入口地址,跳转执行。
  5. 中断返回 :中断服务程序执行完毕后,程序返回至main函数,继续执行被打断的主程序。

第三章 中断优先级(核心重点・初学者高频易错区)

中断优先级通过8 位宽度的优先级配置寄存器配置,理论可配置范围 0~255,实际可用优先级数量由芯片设计商决定(常见 STM32 仅使用高 4 位 bit7~bit4,最多支持 16 级可编程优先级)。

3.1 核心优先级规则

优先级数值越小,优先级越高(初学者最容易记反的核心点)。

3.2 优先级的两个核心维度

表格

维度 核心作用 关键特性
抢占优先级 决定中断能否嵌套 高抢占优先级的中断,可以打断正在执行的低抢占优先级中断,实现中断嵌套
响应优先级 同抢占优先级下的中断仲裁 仅在两个中断抢占优先级相同时生效,无法触发中断嵌套

3.3 中断优先级仲裁顺序(优先级从高到低,不可颠倒)

  1. 先判断抢占优先级:抢占优先级越高(数值越小),越优先处理,且可嵌套低抢占优先级中断;
  2. 抢占优先级相同时,再判断响应优先级:响应优先级越高(数值越小),越优先处理;
  3. 抢占优先级、响应优先级均相同时,最后看中断向量表排位:表中排位越靠前的中断,越优先处理。

第四章 中断嵌套

4.1 定义

中断系统正在执行一个中断服务程序时,收到另一个抢占优先级更高的中断请求,会暂时终止当前低优先级的中断服务,先处理高优先级中断;高优先级中断处理完毕后,再返回继续执行被打断的低优先级中断服务,这个过程就是中断嵌套。

4.2 中断嵌套核心铁则(必须牢记)

  1. 只有抢占优先级才能决定中断嵌套,响应优先级完全不支持中断嵌套;
  2. 后发生的高抢占优先级中断,可以打断先发生的低抢占优先级中断;
  3. 后发生的中断,若抢占优先级低于 / 等于正在执行的中断,必须等待当前中断处理完毕后,才能被执行。

4.3 典型场景示例

  • 可嵌套场景:A 中断抢占优先级 1,B 中断抢占优先级 2。正在执行 B 中断时,A 中断触发,A 会打断 B,先执行 A,A 执行完再回来执行 B。
  • 不可嵌套场景:A、B 中断抢占优先级相同,正在执行 A 时,B 触发,B 必须等 A 执行完才能执行。
  • 同优先级同时触发:A、B 中断同时触发,抢占优先级相同,A 的响应优先级更高,先执行 A,再执行 B。

第五章 完整中断处理全流程

整个流程分为进入中断、中断处理、退出中断三大阶段,对应课件核心步骤,清晰标注硬件 / 软件执行的动作。

5.1 进入中断(核心由硬件自动完成)

  1. 中断源发出中断请求,硬件自动判断处理器是否允许中断、该中断是否被屏蔽,若条件满足,打断当前正在运行的程序;
  2. 处理器自动将当前核心寄存器(PC、xPSR、R0-R3、R12、LR)的内容压入堆栈,保存现场(保证中断返回后能正常继续执行原程序);
  3. 根据中断向量号,到中断向量表中查找对应中断服务程序的入口地址,跳转执行。

5.2 中断处理(核心由软件执行)

  1. 执行用户编写的中断服务程序(函数格式:xxx_Handler(void));
  2. 执行过程严格遵循中断优先级与中断嵌套规则。

5.3 退出中断(硬件 + 软件配合完成)

  1. 中断服务程序执行完毕后,将堆栈中保存的寄存器现场信息弹出,恢复到原来的寄存器中;
  2. 程序返回至原先被中断的位置,继续执行被打断的程序。

注意:本类开发板及竞赛少用中断,故无例程

相关推荐
零涂毕业设计20 分钟前
毕业设计模块开发-OLED显示屏(IIC协议0.96寸)STM32 ESP32 FPGA Linux驱动免费分享
linux·stm32·单片机·嵌入式·esp32·fpga·oled
厦门辰迈智慧科技24 分钟前
管网遥测终端机赋能城市安全的核心价值
物联网·遥测终端机·管网遥测终端机·排水管网遥测终端·管网遥测终端
七仔啊43 分钟前
modbus快速入门
物联网
谙弆悕博士1 小时前
信息系统项目管理师教程(第4版)笔记——第 2 章 信息技术发展
笔记·职场和发展·软考高级·软考·高项·项目经理
阿龙的工作记录1 小时前
深入理解Linux设备驱动模型
linux·嵌入式硬件·工作记录
ye150127774552 小时前
220V转5V1A隔离芯片WT5602
单片机·嵌入式硬件·其他·硬件工程
武汉万象奥科2 小时前
AGV导航控制器方案 | 基于HD-RK3576系列核心板的算控融合一体化平台
arm开发·嵌入式硬件·arm核心板·单板机
wp123_13 小时前
【硬件选型笔记】TONEVEE MVL4020-1R2M 与Coilcraft XAL4020-122MEC 大电流功率电感参数深度解析
笔记
aaaameliaaa3 小时前
指针之总结
c语言·笔记·算法
ye150127774553 小时前
DC24V-100V转3.3V500mA隔离芯片WT5602
单片机·嵌入式硬件·其他·硬件工程