【西门子杯工业嵌入式-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.pswp.cn/pingmian/83893.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Blocked aria-hidden on an element because its descendant retained focus.

问题出在 Element UI 的 el-table 组件 全选功能上,这是一个常见的无障碍(a11y)问题。这个错误提示与网页 accessibility(无障碍访问)相关,涉及 aria-hidden 属性的不当使用。 问题原因分析 1. Element U…

App/uni-app 离线本地存储方案有哪些?最推荐的是哪种方案?

以下是 UniApp 离线本地存储方案的详细介绍及推荐方案分析: 一、UniApp 离线本地存储方案分类 1. 基于 uni.storage 系列 API(跨端基础方案) API 及特点: 提供 uni.setStorage(异步存储)、uni.getStorag…

数据库系统概论(十七)超详细讲解数据库规范化与五大范式(从函数依赖到多值依赖,再到五大范式,附带例题,表格,知识图谱对比带你一步步掌握)

数据库系统概论(十七)超详细讲解数据库规范化与五大范式(从函数依赖到多值依赖,再到五大范式,附带例题,表格,知识图谱对比带你一步步掌握) 前言一、为什么需要规范化1. 我们先想一个…

交互标牌——视觉货币(数字)转换器项目及源码

一、作品简介 视觉货币(数字)转换器是我为交互标牌创客争霸赛设计的项目,项目的主要功能是能将所见的数字按照设定的公式转换成新的单位量,这里我主要演示的是货币转换,直接将摄像头对准价签,即可显示出转换…

React 第五十四节 Router中useRevalidator的使用详解及案例分析

前言 useRevalidator 是 React Router v6.4 引入的一个强大钩子,用于在数据路由(Data Router)中手动触发路由数据的重新验证(revalidation)。 它在需要主动刷新数据而不改变路由位置的场景中非常有用。 一、useReval…

“一代更比一代强”:现代 RAG 架构的演进之路

编者按: 我们今天为大家带来的文章,作者的观点是:RAG 技术的演进是一个从简单到复杂、从 Naive 到 Agentic 的系统性优化过程,每一次优化都是在试图解决无数企业落地大语言模型应用时出现的痛点问题。 文章首先剖析 Naive RAG 的基…

Flask-SQLAlchemy使用小结

链表查询 join方法允许你指定两个或多个表之间的连接条件,并返回一个新的查询对象,该对象包含了连接后的结果。 内连接 from sqlalchemy import join # 使用join函数 query db.session.query(User, Order).join(Order, User.id Order.user_id) res…

【python与生活】如何构建一个解读IPO招股书的算法?

构建一个基于Python的IPO招股书解读算法需要结合自然语言处理(NLP)技术和大型语言模型(LLM)。以下是一个完整的解决方案,使用LangChain框架和OpenAI的GPT模型: import os import re import pandas as pd f…

LangChain面试内容整理-知识点1:LangChain架构与核心理念

LangChain 是一个用于构建基于大型语言模型(LLM)的应用的框架,其架构采用模块化设计,核心理念是将语言模型与外部工具、数据源相结合,以实现复杂任务的分解与执行medium.com。整个框架可以理解为一系列可组合的组件,包括链(Chain)、智能体(Agent)、工具(Tool)和LLM…

13.MySQL用户管理

13.MySQL用户管理 目录 MySQL用户管理 用户 用户信息创建用户修改用户密码删除用户 数据库的权限 MySQL中的权限给用户授权回收权限 用户 用户信息 MySQL中的用户信息存储在默认数据库mysql的user表中。这个表记录了所有用户的详细信息,包括用户名、登录权限…

分布式Session处理的五大主流方案解析

在分布式环境下,Session 处理的核心挑战是确保用户请求在不同服务器间流转时能保持会话状态一致。以下是主流解决方案及优缺点分析: 🔐 一、集中存储方案(主流推荐) Redis/Memcached 存储 原理:将 Session…

【数据分析】什么是鲁棒性?

引言 —— 为什么我们需要“抗折腾”的系统? 当你乘坐的飞机穿越雷暴区时机体剧烈颠簸,自动驾驶汽车在暴雨中稳稳避开障碍物,或是手机从口袋摔落后依然流畅运行——这些场景背后,都藏着一个工程领域的“隐形守护者”:…

altium designer2024绘制stm32过程笔记x`

学习视频:【Altium Designer 1小时(貌似不够)速成(可能不止一小时*~* 但我觉得仨小时肯定够了---来自up猪的自信!!)】https://www.bilibili.com/video/BV17E411x7dR?p2&vd_sourcea756421e0aaa64b2bba352eabfa26ed…

Java 类型参数 T、R 、 O 、K、V 、E 、? 区别

在 Java 泛型和函数式编程中,T、R 和 O 都是类型参数(Type Parameters),它们的主要区别在于命名约定和上下文含义,而不是语言层面的区别。它们可以互换使用,但通常遵循一定的命名习惯以提高代码可读性。 1.…

Komiko 视频到视频功能炸裂上线!

Komiko 平台作为行业的创新先锋,近日宣布推出全新的视频到视频(Video-to-Video)功能,这一举措犹如一颗重磅炸弹,瞬间在漫画、动画和插画创作的世界里掀起了惊涛骇浪,进一步巩固了其作为 AI 驱动的一体化创作…

Protobuf 中的类型查找规则

a.proto syntax "proto2"; //protoc3生成代码兼容proto2语法 package pkgA; message Example { }ba.proto package pkgB.pkgA; message Example { }b.proto syntax "proto3"; //protoc3生成代码兼容proto2语法 package pkgB; import "test1/a.pr…

KMeans 算法深度解析:从原理到实战

一、算法概述:无监督学习的聚类利器​ 在机器学习的无监督学习领域,聚类算法是探索数据内在结构的重要工具。KMeans 算法作为划分式聚类的代表,因其简单高效的特性,成为数据科学家工具箱中的必备技能。该算法通过将 n 个数据点划…

Chrome 浏览器前端与客户端双向通信实战

Chrome 前端(即页面 JS / Web UI)与客户端(C 后端)的交互机制,是 Chromium 架构中非常核心的一环。下面我将按常见场景,从通道、流程、技术栈几个角度做一套完整的分析,特别适合你这种在分析和改…

Server2003 B-1 Windows操作系统渗透

任务环境说明: 服务器场景:Server2003(开放链接) 服务器场景操作系统:Windows7 1.通过本地PC中渗透测试平台Kali对服务器场景Windows进行系统服务及版本扫描渗透测试,并将该操作显示结果中Telnet服务对应的…

渗透实战PortSwigger靶场:lab13存储型DOM XSS详解

进来是需要留言的&#xff0c;先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码&#xff0c;输入的<>当成字符串处理回显到页面中&#xff0c;看来只是把用户输…