【物联网学习笔记】中断

第一章 中断核心基础概念

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

  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. 程序返回至原先被中断的位置,继续执行被打断的程序。

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

相关推荐
炽烈小老头3 分钟前
【每天学习一点算法 2026/04/29】最长连续序列
学习·算法
库奇噜啦呼5 分钟前
【iOS】源码学习-类与对象底层原理
学习·ios·cocoa
Inhand陈工8 分钟前
智能驾驶数据高可靠上云实战:EC3320+IR315双路冗余方案
网络·物联网·自动驾驶·智能路由器·边缘计算·腾讯云·信息与通信
海雅达手持终端PDA12 分钟前
海雅达Model 10X:WiFi 6E 2×2 MIMO工业三防平板在生产制造和仓储管理中的应用优势
物联网·电脑·能源·制造·零售·交通物流·平板
时空自由民.12 分钟前
ESP32 IDF HTTP OTA升级流程原理
linux·单片机
不灭锦鲤26 分钟前
网络安全学习第98天
学习·安全
国产芯片设计27 分钟前
DIY实战|0.8寸WiFi自动授时电子钟,国产数码管驱动芯片方案分享
stm32·单片机·mcu·51单片机·硬件工程
LCMICRO-1331084774629 分钟前
长芯微LD73360完全P2P替代AD73360,是一款工业电能计量6通道模拟输入前端(AFE) 处理器
stm32·单片机·嵌入式硬件·fpga开发·硬件工程·模拟前端afe
阿Y加油吧29 分钟前
二刷 LeetCode:5. 最长回文子串 & 1143. 最长公共子序列 复盘笔记
笔记·算法·leetcode
summer__777733 分钟前
作业3:基于单片机的智能生活系统设计与未来应用设想——让生活更便捷与智慧
单片机·嵌入式硬件·生活