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

【西门子杯工业嵌入式-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. 类比说明

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

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

七、小结与启示

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

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

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

相关文章:

  • 软件测试用例篇——概念
  • JavaSec-SpringBoot框架
  • Python 接口:从协议到抽象基 类(定义并使用一个抽象基类)
  • go语言map扩容
  • 数据结构测试模拟题(4)
  • PySide6 GUI 学习笔记——常用类及控件使用方法(多行文本控件QTextEdit)
  • 1.认识Spring
  • 第3章:图数据模型与设计
  • 运行示例程序和一些基本操作
  • [ACTF2020 新生赛]Include 1(php://filter伪协议)
  • AI数据分析在体育中的应用:技术与实践
  • 从零设计一个智能英语翻译API:架构与实现详解
  • 计算机组成与体系结构:补码数制一(Complementary Number Systems)
  • 信息最大化(Information Maximization)
  • 大模型在创伤性脑出血全周期预测与诊疗方案中的应用研究
  • leetcode刷题日记——二叉搜索树中第 K 小的元素
  • 从认识AI开始-----AutoEncoder:生成模型的起点
  • Web前端基础
  • ELK日志管理框架介绍
  • XSS(跨站脚本攻击)详解
  • 女网友叫我一起做优惠券网站/郑州网站推广效果
  • 如何开淘宝店做国外网站/京东关键词优化技巧
  • 做短租类型的网站/百度一下百度主页官网
  • 做网站baidunongmin/留号码的广告网站不需要验证码
  • 商丘行业网站建设开发公司/微信营销推广
  • 拉萨网站建设价格/公关公司提供的服务有哪些