前言

大家好,这里是 Hello_Embed。前面我们用 “循环查询” 的方式处理 GPIO 输入(如按键、光敏传感器),但这种方式有个明显缺陷:如果循环中其他程序耗时较长,可能会错过输入信号(比如按键按下未被检测到)。为此,我们需要引入 “中断” 机制 —— 让硬件事件主动 “打断” CPU,实现高效响应。本篇先理解中断的基本概念和工作流程,下一篇深入 STM32 的中断体系结构。

一、为什么需要中断?

在循环查询模式中,CPU 需要不断检查引脚状态(如while(1)中反复调用HAL_GPIO_ReadPin)。如果循环中还有其他耗时操作(如复杂计算),当按键按下时,CPU 可能正忙于其他任务,导致按键动作被 “忽略”(次数丢失)。
中断的优势:无需 CPU 主动查询,当事件发生(如按键按下)时,硬件自动通知 CPU 暂停当前任务,优先处理事件,处理完成后再回到原任务 —— 就像生活中 “被门铃打断看书,开门后继续看书” 一样自然。

二、中断的基本概念

中断是指 “CPU 在执行程序过程中,被外部或内部事件打断,转而去处理该事件,处理完成后再返回原程序继续执行” 的机制。其核心过程可概括为:保存现场→处理中断→恢复现场

  • 生活类比
    你正在看书(执行主程序),门铃突然响起(中断事件):
    1. 你夹上书签(保存现场:记录当前看到的页码);
    2. 去开门(处理中断:响应门铃事件);
    3. 回来后从书签处继续看书(恢复现场:回到被打断的位置)。
三、从硬件层面理解中断:CPU 与 “异常”

在计算机中,中断属于 “异常” 的一种 ——“异常” 是指任何打断 CPU 正常执行流程的事件。下图展示了 CPU 可能遇到的各类异常:
请添加图片描述

  • 常见异常类型

    • 未定义指令异常:CPU 执行了无法识别的指令,可能导致卡死;
    • 数据访问异常:CPU 读取 / 写入内存时,内存地址无效或受保护;
    • 复位异常:按下复位键,CPU 重启(最彻底的异常);
    • 中断:由外部硬件(如按键、定时器、串口)触发的异常(是我们编程中最常用的异常类型)。
  • 优先级处理:当多个异常同时发生时,CPU 会根据预设的优先级,先处理优先级高的异常。

  • 核心逻辑:无论哪种异常,CPU 都会在检测到后,跳转到一个固定地址执行对应的处理程序 —— 这个地址称为 “异常向量”,而跳转动作由硬件自动完成。

四、中断的处理流程

中断从初始化到执行的完整流程可分为 6 步,涵盖软件配置和硬件自动操作:

  1. 初始化(软件配置)
    • 设置中断源:让硬件(如按键引脚)具备产生中断的能力(例如配置引脚为 “中断触发模式”);
    • 配置中断控制器:设置中断的优先级(当多个中断同时发生时,决定处理顺序);
    • 使能 CPU 总中断:打开 CPU 对中断的响应开关(相当于 “允许被打扰”)。
  2. CPU 执行主程序
    中断初始化完成后,CPU 正常执行主程序(如循环处理其他任务)。
  3. 中断事件产生
    当触发条件满足(如按键按下),中断源(按键引脚)向中断控制器发送中断请求信号。
  4. CPU 检测中断
    CPU 每执行完一条指令,都会主动检查是否有中断请求 —— 这一步由硬件自动完成,无需程序员干预。
  5. CPU 响应中断
    若检测到中断请求,CPU 立即暂停当前程序,准备处理中断。
  6. 执行中断服务程序(ISR)
    • 对于不同的异常 / 中断,CPU 会跳转到对应的 “异常向量地址”(该地址通常只包含一条跳转指令);
    • 从异常向量地址跳转到具体的中断处理函数(由程序员编写),完成三件事:
      1. 保存现场:将 CPU 寄存器的当前值存入栈中,确保后续能恢复;
      2. 处理中断:根据中断源(如判断是哪个按键按下)执行具体操作;
      3. 恢复现场:从栈中取出寄存器值,回到被中断的主程序继续执行。

注意:步骤 3~5(中断产生、检测、响应)由硬件自动完成,程序员主要关注步骤 1(初始化)和步骤 6 中的 “处理中断” 部分。

中断流程总结

请添加图片描述
从图中可清晰看到:中断的触发、跳转至处理函数等核心环节由硬件主导,程序员的工作集中在 “配置中断” 和 “编写中断服务程序” 上。

结尾

本文介绍了中断的基本概念、引入原因和处理流程,核心是理解 “硬件主动通知 CPU” 的机制如何解决循环查询的效率问题。下一篇,我们将聚焦 STM32 的中断体系结构深入理解中断的作用,后续再写代码来进行实战。
Hello_Embed 继续带你从理论到实战,逐步掌握 STM32 的中断技术,敬请期待~

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐