【STM32】外部中断(上)

【STM32】外部中断

  • 前言
  • 一、中断系统
    • 1.1 什么是中断
    • 1.2 中断优先级
    • 1.3 中断嵌套
    • 1.4 中断执行流程
  • 二、NVIC
    • 2.1NVIC基本结构
    • 2.2 NVIC优先级分组
  • 三、EXTI
    • 3.1 EXTI 外部中断(Extern Interrupt)
    • 3.2 EXTI基本结构
    • 3.3 AFIO复用IO口
    • 3.4 EXTI内部框图

前言

【STM32】外部中断(上)这部分主要讲解了,对中断系统、NVIC、EXTI的基础知识的介绍,剩余实验部分放在【STM32】外部中断(下)中讲解。

一、中断系统

1.1 什么是中断

  • 中断系统是管理和执行中断的逻辑结构,外部中断是众多能产生中断的外设之一。
  • 在主程序运行的过程中,出现了特定的中断触发的条件(中断源),使CPU暂停了正在运行的程序,转而去处理中断程序,处理完后返回原来被暂停的位置继续运行。STM32的中断:68个可屏蔽中断通道,包含EXTI、TIM、ADC、USART、SPI、I2C、RTC等多个外设。
  • 例如:
    1)对于外部中断,引脚发生电平跳变
    2)对定时器来说,定时时间到了
    3)对串口通信来说,接收到了数据

1.2 中断优先级

当有多个中断源同时申请中断时,CPU 会根据中断源的轻重缓急进行裁决,优先响应更加紧急的中断源。

1.3 中断嵌套

当一个中断程序正在运行时,又有新的更高优先级的中断源申请中断,CPU 再次暂停当前的中断程序,转而去处理新的中断程序,处理完成后依次返回。

1.4 中断执行流程

在这里插入图片描述
程序由硬件电路自动跳转到中断程序中
在这里插入图片描述

二、NVIC

使用NVIC统一管理中断,每个中断通道都拥有16个可编程的优先等级,可对优先级进行分组,进一步设置抢占优先级和响应优先级。(NVIC就是STM32用来管理中断,分配优先级的)

2.1NVIC基本结构

NVIC(嵌套中断向量控制器)是一个内核外设,,CPU的小助手
在这里插入图片描述
一个外设可能有多个中断通道

2.2 NVIC优先级分组

NVIC的中断优先级由优先级寄存器的4位(0 - 15)决定,这4位可以进行切分,分为高n位的抢占优先级和低(4 - n)位的响应优先级。(优先级数值越小,越先响应)
抢占优先级高的可以中断嵌套,响应优先级高的可以优先排队,抢占优先级和响应优先级均相同的按中断号排队。(任何时候都跟优先级高的先响应)
在这里插入图片描述
区分0的含义:0位代表无这一优先级,取值为0代表最高。

三、EXTI

3.1 EXTI 外部中断(Extern Interrupt)

  • EXTI 可以监测指定 GPIO 口的电平信号,当其指定的 GPIO 口产生电平变化时,EXTI 将立即向 NVIC 发出中断申请,经过 NVIC 裁决后即可中断 CPU 主程序,使 CPU 执行 EXTI 对应的中断程序。
  • 简单来说:引脚电平变化申请中断。
  • 支持触发方式:上升沿,下降沿,双边沿,软件触发。
  • 支持所有 GPIO 口,但相同的 Pin 不能同时触发中断(PA1 和 PB1 不能同时用,后面AFIO有解释)。
  • 通道数:16 个 GPIO_Pin,PVD 输出,RTC 闹钟,USB 唤醒,以太网唤醒。
  • 触发方式:
    中断响应:申请中断,让 CPU 执行中断函数。
    事件响应:当外部中断检测到引脚变化时,中断信号就不会通向 CPU 了,而是通到其它外设,用来触发其它外设的操作(ADC,DMA),属于外设之间联合工作。

3.2 EXTI基本结构

在这里插入图片描述

3.3 AFIO复用IO口

在这里插入图片描述

3.4 EXTI内部框图

在这里插入图片描述
外部中断触发完整流程:

  • 1. 输入与边沿检测
    输入线接收外部信号(如GPIO引脚电平变化),边沿检测电路依据上升沿触发选择寄存器下降沿触发选择寄存器的配置(位为1表示使能对应沿检测),判断输入信号是否产生有效边沿(上升沿、下降沿或双边沿)。若检测到有效边沿,输出高电平;否则输出低电平。

  • 2. 软件触发与或操作
    软件中断/事件寄存器可通过软件写入(对应位设为1),主动生成中断/事件请求。边沿检测电路的输出与软件中断/事件寄存器的输出进入或门,只要其中一个为高电平,或门输出就为高电平,产生中断/事件请求信号。

  • 3. 挂起与屏蔽(中断路径)
    或门输出的高电平使请求挂起寄存器对应位置1,标记有未处理的中断请求。同时,中断屏蔽寄存器的输出(位为1表示允许中断,为0表示屏蔽)与请求挂起寄存器的输出进入与门。只有当两者均为高电平时,与门输出高电平,中断请求才会被允许传递至NVIC。

  • 4. 事件触发路径(并行逻辑)
    或门输出的高电平还会与事件屏蔽寄存器的输出(位为1表示允许事件,为0表示屏蔽事件)进入另一组与门。若与门输出高电平,信号会通过脉冲发生器,触发其他外设(如ADC启动转换、DMA开始传输等)执行操作,此过程不涉及CPU中断响应,属于外设间的事件联动。

  • 5. 向NVIC传递中断
    经中断路径与门允许的中断请求,通过“至NVIC中断控制器”的通路发送给嵌套向量中断控制器(NVIC)。NVIC根据各中断的优先级配置(抢占优先级和响应优先级),裁决是否响应以及响应的顺序,若响应则暂停当前CPU执行的程序,转去执行对应的中断服务程序。

关于【STM32】外部中断(上)的讲解就到这里,希望对你有所帮助,感谢观看ovo!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/97497.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/97497.shtml

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

相关文章

TimeDP Learning to Generate Multi-Domain Time Series with Domain Prompts论文阅读笔记

TimeDP Learning to Generate Multi-Domain Time Series with Domain Prompts 摘要 在跨域时序数据生成任务中,提出使用”时间序列语义原型“模块定义时间序列原型来表示时间序列基,每个原型向量作为“词”表示一些基本的时间序列特征。应用原型分配模块…

Ubuntu安装NVIDIA显卡驱动

清理旧驱动 sudo apt purge nvidia* libnvidia* sudo apt autoremovesudo find /etc -name *nvidia* -exec sudo rm -rf {} sudo rm -rf /usr/local/cuda*禁用 nouveau echo blacklist nouveau options nouveau modeset0 | sudo tee /etc/modprobe.d/blacklist-nouveau.conf…

硬件工程师成长之路:从入门到精通的技术旅程

文章目录前言第一阶段:基础知识的积累理论知识储备动手实践第二阶段:专业技能的提升PCB设计嵌入式系统开发第三阶段:专业方向的选择射频(RF)工程电源设计高速数字电路FPGA/ASIC设计第四阶段:工程管理与视野…

PyTorch 张量(Tensor)详解:从基础到实战

1. 引言在深度学习和科学计算领域,张量(Tensor) 是最基础的数据结构。PyTorch 作为当前最流行的深度学习框架之一,其核心计算单元就是张量。与 NumPy 的 ndarray 类似,PyTorch 张量支持高效的数值计算,但额…

CPTS---Hospital

端口扫描 nmap -A -p- -n -Pn -T4 10.10.11.241 22/tcp open ssh OpenSSH 9.0p1 Ubuntu 1ubuntu8.5 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 256 e1:4b:4b:3a:6d:18:66:69:39:f7:aa:74:b3:16:0a:aa (ECDSA) |_ 256 96:c1:dc:d8:97:20:95:e7:01:5…

【贪心算法】day5

📝前言说明: 本专栏主要记录本人的贪心算法学习以及LeetCode刷题记录,按专题划分每题主要记录:(1)本人解法 本人屎山代码;(2)优质解法 优质代码;&#xff…

软考中级【网络工程师】第6版教材 第4章 无线通信网 (上)

考点分析: 重要程度:⭐⭐⭐ 选择题考查1 ~ 3分,案例分析可能考查填空和简答 高频考点:802.11信道与频段、CSMA/CA、无线网络优化、无线认证、无线配置步骤 新教材变化:新增4G/5G、删除无线城域网 本章将详述蜂窝移动通信系统、无线局域网以及无线个人网的体系结构和实用技…

vscode+EIDE+Clangd环境导入keil C51以及MDK工程

我最近一直在使用vscodeclangd的编译环境替代了vscode自带的c/c插件。感觉clangd的环境更加优秀,能够更好找到函数、全局变量等定义调用等。如果使用keil C51以及MDK环境开发51单片机或者STM32单片机就需要使用到了EIDE这个插件这个插件现在能够自动生成compile_com…

FTP - 学习/实践

1.应用场景 主要用于学习和使用FTP服务,同时研究其架构实现, 以及日常开发中的使用。 FTP(文件传输协议)是一种用于网络文件传输的标准协议,基于客户端-服务器模型运行,通过控制通道(端口21)和…

【瑞吉外卖】手机号验证码登录(用QQ邮件发送代替)

目录 介绍 一、获取授权码 二、前端代码修改 三、后端代码修改 ①pom依赖 ②yml配置 ③控制层 ④业务层 ⑤工具类 介绍 本文介绍了QQ邮箱验证码登录功能的实现步骤: 获取QQ邮箱授权码并配置;前端修改登录页面,增加验证码发送接口调…

为什么要用 Markdown?以及如何使用它

在处理大量文档时,尤其是在构建知识库、进行文档分析或训练大语言模型(LLM)时,将各种格式的文件(如 PDF、Word、Excel、PPT、HTML 等)转换为统一的 Markdown 格式,能够显著提高处理效率和兼容性…

订餐后台管理系统-day06菜品分类模块

菜品分类显示我们需要先实现分类操作,因为没有菜品分类,我们无法准确知道当前菜品属于哪个分类,在前端显示时,需要根据分类显示数据先显示分类列表页面准备路由manage_bp.route(/food/cat/list) def food_cat_list():# 默认页面从…

More Effective C++ 条款20:协助完成返回值优化(Facilitate the Return Value Optimization)

More Effective C 条款20:协助完成返回值优化(Facilitate the Return Value Optimization)核心思想:返回值优化(RVO)是编译器消除函数返回时临时对象的一种重要优化技术。通过编写适合RVO的代码&#xff0c…

《HelloGitHub》第 113 期

兴趣是最好的老师,HelloGitHub 让你对开源感兴趣!简介HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。github.com/521xueweihan/HelloGitHub这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 Python、Java…

萌宝喂养日志-我用AI做喂养记录小程序1-原型设计

准备工作 首先,注册硅基流动账号,并配置Trae开发工具。 ↓现在注册有2000 万 Tokens 的免费额度↓。 硅基流动统一登录 具体可以看我这篇文章:Trae接入自有Deepseek模型,不再排队等待-CSDN博客 实践 设计原型图 我想开发一…

工业产品营销:概念、原理、流程与实践指南

摘要 工业产品营销是针对B2B市场的专业化推广活动,旨在满足企业客户的生产和运营需求。本文详细阐述了工业产品营销的概念与特点,分析其核心原理,包括客户需求驱动、价值传递和关系管理。营销过程涵盖市场调研、细分定位、策略制定、执行、转化及售后服务六个步骤,并提供品…

【读书笔记】《人体微生物的奥秘》

Follow Your Gut:人体微生物的奥秘 引言:从蚊子到微生物 夏天来临,许多人又开始纠结为什么有些人特别招蚊子。有人说是血型问题,有人说是皮肤嫩度,还有人归结于基因。但今天要分享的一本书,虽然标题看似讨论…

【Matplotlib学习】驾驭画布:Matplotlib 布局方式从入门到精通完全指南

目录驾驭画布:Matplotlib 布局方式从入门到精通完全指南一、 核心理念:理解 Figure 和 Axes二、 布局方式大全:从简单到复杂类别一:自动创建与基础单图布局类别二:规律网格布局 - 主力军类别三:复杂网格布局…

【C#】在一个任意旋转的矩形(由四个顶点定义)内绘制一个内切椭圆

核心点:在一个任意旋转的矩形(由四个顶点定义)内绘制一个内切椭圆 实现步骤 计算矩形中心:作为旋转中心点 创建椭圆路径:在未旋转状态下定义椭圆 应用旋转变换:使用矩阵绕中心点旋转路径 绘制变换后的路…

洛谷 P2052 [NOI2011] 道路修建-普及/提高-

P2052 [NOI2011] 道路修建 题目描述 在 W 星球上有 nnn 个国家。为了各自国家的经济发展,他们决定在各个国家之间建设双向道路使得国家之间连通。但是每个国家的国王都很吝啬,他们只愿意修建恰好 n−1n - 1n−1 条双向道路。 每条道路的修建都要付出一定…