当前位置: 首页 > backend >正文

【西门子杯工业嵌入式-4-什么是外部中断】

西门子杯工业嵌入式-4-什么是外部中断

  • 一、中断的基本概念
    • 1. 什么是中断
    • 2. 生活中的中断示例
    • 3. MCU 中的中断机制
  • 二、NVIC 嵌套向量中断控制器
    • 1. NVIC 简介
    • 2. NVIC 的作用
    • 3. 中断向量表
  • 三、中断优先级机制
    • 1. 中断优先级的含义
    • 2. 抢占与响应优先级
    • 3. 优先级分组配置
  • 四、外部中断(EXTI)
    • 1. 外部中断简介
    • 2. EXTI 线连接规则
    • 3. 触发方式
    • 4. 中断/事件模式
  • 五、外部中断配置流程(代码实战)
    • 1. 外部中断初始化步骤
    • 2. 中断服务函数编写
    • 3.实际效果
  • 六、使用注意事项
    • 1. 中断函数中的限制
    • 2. 类比说明
  • 七、小结与启示

链接: B站视频

一、中断的基本概念

1. 什么是中断

类比:看书时被门铃打断,处理后继续读书。

中断是一种处理紧急事务后回到原任务的机制。

2. 生活中的中断示例

接电话暂停看电视

炒菜时水开关火

开车时加油

3. MCU 中的中断机制

主程序:常规执行任务

中断:响应突发事件(如按键、数据接收)

中断处理后自动回到原来的程序继续执行

二、NVIC 嵌套向量中断控制器

1. NVIC 简介

属于 ARM Cortex-M 系列的核心组件

支持系统异常和多达 91 个外部中断

2. NVIC 的作用

可编程优先级控制

向量式中断管理

自动保存/恢复处理器状态

支持中断嵌套(高优先级中断可打断低优先级)

3. 中断向量表

每个中断源都有对应中断服务函数地址

三、中断优先级机制

1. 中断优先级的含义

类比:学校广播中的 VIP 插队系统

分为抢占优先级和响应优先级

2. 抢占与响应优先级

抢占优先级:决定是否能中断其他中断

响应优先级:在相同抢占等级下决定响应顺序
在这里插入图片描述

3. 优先级分组配置

GD32F470 支持四位优先级(如分组2:2位抢占 + 2位响应)

数字越小优先级越高(0 比 1 更高)

四、外部中断(EXTI)

1. 外部中断简介

由外部信号(如按键)触发

支持 EXTI0 ~ EXTI22,共 23 条中断线

2. EXTI 线连接规则

EXTIx 可对应多个 GPIOx.y(如 EXTI2 可连接到 PE2、PB2…)

同时只能启用一个 GPIO 作为中断源

3. 触发方式

上升沿:低变高

下降沿:高变低

双边沿:任一电平变化

4. 中断/事件模式

中断模式:触发中断请求

事件模式:用于触发其他外设(如 DMA、定时器)

✅ 先说中断模式(Interrupt Mode)——打断 CPU,执行函数
✔ 本质:
中断模式是 打断 CPU 当前在执行的程序,强制 CPU 去执行你提前写好的 中断服务函数(ISR)。
🧠 类比:
你在认真看书(CPU 在跑主程序),突然快递来了(GPIO 下降沿触发),你必须停下来看是谁敲门(CPU 跳进 ISR 去处理),处理完快递再回来继续读书。

🚫 再看事件模式(Event Mode)——不打断 CPU,只是发个信号
✔ 本质:
事件模式不会打断 CPU。它只是让某个外设知道:“嘿,某件事发生了,你可以开始干活了。”
这个事件可以被 DMA、定时器、ADC、其他外设当作触发条件。
CPU 全程不会跳出主程序,也不会进入什么 ISR。
🧠 类比:
你在看书(CPU 忙自己的事),你订了个自动咖啡机(DMA)。当门铃响(GPIO 上升沿)的时候,它自动开始冲咖啡(搬运数据),你什么也不用做。

五、外部中断配置流程(代码实战)

1. 外部中断初始化步骤

配置 GPIO 为输入模式

使用 syscfg_exti_line_config() 绑定 EXTI 线与引脚

使用 exti_init() 配置中断线、模式、触发方式

使用 nvic_irq_enable() 配置 NVIC 通道及优先级

清除中断标志位 exti_interrupt_flag_clear()
在这里插入图片描述

2. 中断服务函数编写

在服务函数中判断是否触发了中断标志位

翻转 LED 灯状态

清除中断标志位
在这里插入图片描述

3.实际效果

在这里插入图片描述

在这里插入图片描述
主函数为右边红灯不断闪烁
中断为按下按键左边的绿色翻转,不影响右边红色

六、使用注意事项

1. 中断函数中的限制

中断服务函数应尽量短小精悍

不应执行耗时任务或复杂逻辑

2. 类比说明

中断就像救护车,不能顺便送外卖

是稀缺的系统资源,仅用于紧急事务

七、小结与启示

理解中断机制是写好嵌入式程序的关键

中断使得系统响应外部事件更及时、更高效

实际开发中要合理使用中断优先级和中断服务函数设计

http://www.xdnf.cn/news/12780.html

相关文章:

  • Cursor生成Java的架构设计图
  • 第二十六章 流程控制: case分支
  • 一键亮灯高级和弦触发自动鼓机:特伦斯自动挡钢琴开启音乐创作的全新时代
  • B站Miachael_ee——蓝牙教程笔记
  • 【论文解读】Toolformer: 语言模型自学使用工具
  • C++图书管理
  • MySQL 8.0 绿色版安装和配置过程
  • 属于我的“龙场悟道”
  • 桌面图标无法对齐!
  • 解密LSTM(长短期记忆网络):让机器拥有记忆力的魔法网络
  • 软件测试与军用标准详细框架
  • Java异步编程难题拆解与技术实践
  • 【AI论文】推理健身房(REASONING GYM):基于可验证奖励的强化学习推理环境
  • vue3 创建图标 按钮
  • Kafka 消息模式实战:从简单队列到流处理(一)
  • Linux安全机制:从SELinux到Intel SGX的堡垒
  • 轻创业技术方案:基于格行双目摄像头的代理系统设计!低成本创业项目有哪些?2025轻资产创业项目排行榜前十名!0成本创业项目推荐!格行代理项目靠谱吗?
  • 力扣hot100---152.乘积最大子数组
  • Java泛型中的通配符详解
  • Springboot项目中minio的使用场景、使用过程(仅供参考)
  • 13-Oracle 23ai Vector Search VECTOR数据类型和实操
  • groovy:java 发送一封带有附件的邮件
  • 利用qcustomplot绘制曲线图
  • audio-ovrlipsync-viseme-reference 口型同步 唇形同步 插件
  • Linux系统 - 线程 -6- 线程安全函数和可重入函数
  • Qt的学习(一)
  • Hash类型
  • 题海拾贝:P1091 [NOIP 2004 提高组] 合唱队形
  • WSF07N10 MOSFET 在铲皮机中的应用
  • WebFuture 系统升级提示外键约束的问题处理