STM32-外部中断浅析
本篇解释了STM32中断原理
MCU为什么需要中断
中断,是嵌入式系统中很重要的一个功能,在系统运行过程中,当出现需要立刻处理的情况时,暂停当前任务,转而处理紧急任务,处理完毕后,恢复之前的任务。
中断的优势:
在MCU和外设之间进行平衡
MCU的处理速度远高于外设,如果没有中断机制,系统将不得不定期检查外部设备状态,这是一种资源浪费。中断机制避免了不必要的轮询,仅在设备就绪时才进行处理。
快速响应外部事件:
在实时系统中,中断机制使得计算机能够即时响应外部事件,很多场景下,信号不会等待MCU处理完才消失,如果单个时间窗口没有对信号进行采集,原始信号就被新的信号覆盖了,因此中断对于实时数据处理至关重要。
STM32 如何实现中断


外部中断控制器框图
上图为STM32的外部中断控制器框图,可以从右至左来理解这个框图,从输入线为起点,信号从IO口到达边沿检测电路,边沿检测电路可以通过两个寄存器进行配置。
这两个寄存器用于设置中断的触发条件(上升沿触发,下降沿触发,上升沿下降沿同时触发),可以理解为这里就是设置条件,一旦输入满足条件,边沿检测电路就放行信号,否则不做任何动作。
接着往左,软件中断寄存器和边沿检测电路的输出通过OR门连接在了一起,这也意味着可以通过软件来触发这条输入线的中断。即使外部条件未满足,软件中断事件寄存器被设置,也能触发中断。这个经常被用于通过软件实现故障注入,以测试系统的功能是否满足需求。
接着往左,触发的中断信号会指向请求挂起寄存器,这里就等于高速NVIC,我要中断,请批准。
而它左侧的中断屏蔽寄存器则是用于设置,要不要开启对中断的响应。
当中断屏蔽寄存器没有被开启时,即使有对应的中断,NVIC也不会响应这个中断请求。
如果一路畅通无阻,信号就会进入NVIC中断控制器,在经过优先级排序后被MCU进行处理了。
往下看,会看到中断请求信号与事件屏蔽寄存器通过AND门连接在一起,这里是用于以中断触发事件。即可以通过脉冲发生器快速的去控制其他外设,比如点亮LED灯,拉低某个PIN脚的电平。
至此,中断信号的输入到中断请求的输出就梳理清楚了。
接下来看看在处理中断信号输入中STM32做了哪些设计,
AFIO
外部中断/事件线路映像(AFIO)
AFIO在STM32中主要完成选择中断引脚和引脚功能的重映射两种功能。由于芯片空间有限,为了更好的提高效率节省资源,并不是每一根引脚都有其对应的中断线,他们是共用的关系。
1.中断引脚选择

在MCU无法将每一个外部引脚都连接至内核的情况下,PIN脚以组的形式共用中断线(图中的EXTI0),可以看到PA0-PG0都连接至EXTI0,AFIO通过配置寄存器来选择具体哪个引脚连接至中断线。
2.引脚功能的重映射

STM32中,部分引脚能够通过AFIO进行重定义,以实现当前引脚下所能配置的其他功能,这一部分内容暂且不表。
NVIC
嵌套向量中断控制器(NVIC)是外设和MCU之间的桥梁,负责接收来自外设的中断,并根据中断优先级交给MCU进行处理
相关文章:
STM32-外部中断浅析
本篇解释了STM32中断原理 MCU为什么需要中断 中断,是嵌入式系统中很重要的一个功能,在系统运行过程中,当出现需要立刻处理的情况时,暂停当前任务,转而处理紧急任务,处理完毕后,恢复之前的任务…...
Spring-Data-Elasticsearch
简介 Spring Data for Elasticsearch 是 Spring Data 项目的一部分,该项目旨在为新数据存储提供熟悉且一致的基于 Spring 的编程模型,同时保留特定于存储的特性和功能。 Spring Data Elasticsearch 项目提供了与 Elasticsearch 搜索引擎的集成。Spring…...
代码随想录二刷7.22|977.有序数组的平方
暴力解法: ——如果想暴力解决这个问题的话,可以像题目那样,先将每一个元素平方,然后再排序 双指针: ——从题目中找到的信息:这是一个非递减顺序的整数数组,从例子中,可以容易看…...
redis介绍与布署
redis remote dictionary server(远程字典服务器) 是一个开源的,使用c语言编写的非关系型数据库,支持内存运行并持久化,采用key-value的存储形式。 单进程模型意味着可以在一台服务器上启动多个redis进程,…...
PMON的解读和开发
提示:龙芯2K1000PMON相关记录 文章目录 1 PMON的发展和编译环境PMONPMON2000 2 PMON2000的目录结构3 Targets目录的组成4 PMON编译环境的建立5 PMON2000的框架6 异常向量表7 Pmon的空间分配8 PMON的汇编部分(starto.S或sbdreset.S)的解读Start.SC代码部分dbginit 9 …...
初识c++(构造函数,析构函数,拷贝构造函数,赋值运算符重载)
一、类的默认函数 默认成员函数就是用户没有显式实现,编译器会自动生成的成员函数称为默认成员函数。 #include<iostream> using namespace std; class Date { public:Date(){_year 1;_month 1;_day 1;cout << _year << "/" <&…...
CANoe:为什么两个VLAN接口不能设置同一个网络的IP地址呢?
经常玩CANoe的人应该配置过TCP/IP Stack中网络节点的网卡信息,基本的信息包含:MAC地址、IP地址、子网掩码、默认网关、MTU值、IPv6地址。 如果你想让发送出去的报文携带VLAN tag,可以在网卡上添加VLAN tag信息。 此时你就能得到两个新的网卡V…...
SpringBoot新手快速入门系列教程七:基于一个低配centoos服务器,如何通过宝塔面板部署一个SpringBoot项目
1,如何打包一个项目 通过IDEA自带的命令行,执行 ./gradlew clean build 2,检查生成的JAR文件 进入 build/libs 目录,你应该会看到一个类似 helloredis-0.0.1-SNAPSHOT.jar 的文件。 3:运行生成的JAR文件 你可以在…...
性能测试的流程(企业真实流程详解)(二)
性能测试的流程 1.需求分析以及需求确定(指标值,场景,环境,人员) 一般提出需求的人员有:客户,产品经理,项目组领导等 2.性能测试计划和方案制定 基准测试: 负觋测试: 压力测试: 稳定性测试: 其他:配置测试…...
使用sklearn的基本流程
scikit-learn,通常简称为 sklearn,是一个开源的Python库,是基于 Python 编程语言的一个非常流行的机器学习库。它建立在 NumPy 和 SciPy 这两个科学计算库之上,并与 Matplotlib 配合使用,为数据预处理、模型训练、评估…...
力扣题解(乘积为正数的最长子数组长度)
1567. 乘积为正数的最长子数组长度 已解答 中等 给你一个整数数组 nums ,请你求出乘积为正数的最长子数组的长度。 一个数组的子数组是由原数组中零个或者更多个连续数字组成的数组。 请你返回乘积为正数的最长子数组长度。 本题要求乘积为正数,而整…...
PPTP、L2TP、IPSec、IPS 有什么区别?
随着互联网的发展,保护网络通信的安全越来越重要。PPTP、L2TP、IPSec、IPS是常见的网络安全协议和技术,在保护网络通信安全方面发挥着不同的作用和特点。下面介绍PPTP、L2TP、IPSec、IPS之间的区别。 点对点隧道协议(PPTP)是一种用…...
SpringBoot注解--11--@JSONField @JsonProperty
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一个问题:后端实体类isXXX开头的属性,传到前端后自动去掉is解决方法: JsonProperty和JSONField1.简介2.注解的区别2.1 底层框架不…...
C语言 | Leetcode C语言题解之第221题最大正方形
题目: 题解: int maximalSquare(char** matrix, int matrixSize, int* matrixColSize){int dp[301][301]{0};int wid0;if(matrixSize0&&matrixColSize[0]0){return 0;}for(int i0;i<matrixSize;i){for(int j0;j<matrixColSize[0];j){if(m…...
AI数据服务如何驱使AI商业化,实现在各行业落地融合
AI技术经历数十载的发展,正在加速向各行各业渗透。近年来深度学习加速了人工智能技术的商业化落地的同时,也带来了大量AI算法训练需求,推动AI数据服务市场的快速增长。作为AI快速发展的“基石”,AI数据服务AI数据服务如何驱使AI在…...
户用光伏项目开发流程
1、收集业主信息 管理业主基本信息,包括但不限于联系方式、地址、房屋信息等。 2、业主开卡 每户都需要办理银行卡,用于电费结算和划转。 3、合同签约 业主开卡完成之后,平台方发起签约(支持线上签约),…...
C++ 函数返回值是引用类型使用场景
目录 1、希望返回函数内部的局部静态变量或全局变量 2、希望通过函数返回一个对象的成员变量 3、希望实现链式操作 4、避免对象的拷贝 5、需要注意的事项 在C中,函数的返回值可以是引用类型的情况主要有以下几种: 1、希望返回函数内部的局部静态变…...
CUDA原子操作
代码 #include <cuda_runtime.h> #include <stdio.h>__global__ void atomicAddAndGet(int *result, int *valueToAdd) {// 原子加法int addedValue atomicAdd(result, *valueToAdd);// 通过原子操作后读取值,确保是加法后的值addedValue *valueToAd…...
08.C2W3.Auto-complete and Language Models
往期文章请点这里 目录 N-Grams: OverviewN-grams and ProbabilitiesN-gramsSequence notationUnigram probabilityBigram probabilityTrigram ProbabilityN -gram probabilityQuiz Sequence ProbabilitiesProbability of a sequenceSequence probability shortcomingsApproxi…...
【linux】log 保存和过滤
log 保存 ./run.sh 2>&1 | tee -a /home/name/log.txt log 过滤 import os import re# Expanded regular expression to match a wider range of error patterns error_patterns re.compile(# r(error|exception|traceback|fail|failed|fatal|critical|warn|warning…...
乡村景区智慧垂钓破局增收!巨有科技激活乡村“渔乐”经济
垂钓作为国民级休闲活动,拥有超1.2亿爱好者,是乡村文旅中极具潜力的黄金业态。然而,多数乡村钓场仍停留在“一根竿、一个塘”的粗放运营阶段,面临计费混乱、管理成本高、体验同质化、增收乏力等困境。巨有科技聚焦乡村场景&#x…...
边缘AI闭环数控系统:基于IIoT的轻量级CNC智能改造实践
1. 项目概述:这不是在改装一台机床,而是在给金属切削装上“神经系统”“AI-Driven Machining: Building a Closed-Loop CNC System with IIoT Feedback (Building the CNC)”——这个标题里没有一个词是虚的。它不是讲怎么用AI生成G代码,也不…...
索尼IMX811如何重塑工业视觉与专业影像的边界
突破像素极限,定义成像新高度在影像技术飞速发展的今天,高分辨率始终是专业领域不懈追求的目标。索尼半导体解决方案公司重磅推出的IMX811中画幅CMOS图像传感器,以2.47亿有效像素的惊人规格,为行业带来了颠覆性的突破。这款传感器…...
从RSSI走向信道探测,蓝牙设备的“距离感知”能力已至“厘米级”
长期以来,物联网(IoT)无线连接技术的发展重心主要聚焦于通信性能、通信功耗与组网效率等方面;然而,随着智能家居、数字车钥匙、工业自动化、智慧门禁、资产管理以及地理围栏等应用的快速扩张,行业正在提出一…...
Go语言整洁架构:分层设计
Go语言整洁架构:分层设计 1. 分层结构 internal/domain/ # 领域实体usecase/ # 用例adapter/ # 适配器handler/ # HTTP处理2. 总结 整洁架构强调业务逻辑的独立性和依赖方向的正确性。...
微波遥感杂谈五(微波辐射计)
前言微波辐射计是通过被动的接收各个高度传来的温度辐射的微波信号来判断温度、 湿度曲线,能定量测量目标(如地物和大气各成分)的低电平微波辐射的高灵敏度接收装置。目前机载微波辐射计实测温度分辨率达0.02K,星载微波辐射计温度分辨率达 0.2࿵…...
巴别鸟vs坚果云:企业云盘同步机制踩坑与实战配置
干企业网盘这行,最怕听到用户说"同步慢"。我们2019年上线第一版云盘时,同步1GB的CAD图纸包要40分钟,用户骂完就跑。踩了三年坑才知道,"能同步"和"同步好用"根本是两回事。 本文从踩坑实录加配置实战…...
手写NumPy版RBM:从能量函数到吉布斯采样的可调试实现
1. 项目概述:这不是又一个“RBM扫盲帖”,而是一次亲手拆解神经网络祖师爷级模型的实操复盘Restricted Boltzmann Machine(受限玻尔兹曼机),简称RBM,不是教科书里那个被反复引用却没人真去跑通的抽象符号&am…...
硬件工程选型解析:钡特电源VB6-48S03MD与金升阳URB4803YMD-6WR3属工业标准模块电源
在工业硬件研发、设备调试与批量量产过程中,小功率隔离供电模块的稳定性、封装规范性与工况适配性,是硬件研发工程师重点核查的核心参数,直接决定工控终端、通信设备与电力监测装置的运行稳定性。在6W级48V转3.3V主流供电方案中,钡…...
Unity重型战士Mecanim动画包:开箱即用的战斗动画解决方案
1. 这套动画包到底解决了什么实际问题?在Unity项目开发中,我见过太多团队卡在“角色动不起来”这一步——不是程序写不出状态机,而是美术资源交付后,Animator Controller里一堆红色警告:Missing Avatar、Clip not mapp…...
