西门子杯工业嵌入式-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. 类比说明
中断就像救护车,不能顺便送外卖
是稀缺的系统资源,仅用于紧急事务
七、小结与启示
理解中断机制是写好嵌入式程序的关键
中断使得系统响应外部事件更及时、更高效
实际开发中要合理使用中断优先级和中断服务函数设计