STM32基础之中断--外部中断

article/2025/9/12 5:24:13

EXTI简介

EXTI(External interrupt/event controller)—外部中断/事件控制器,管理了控制器的 19个中断/事件线。每个中断/事件线都对应有一个边沿检测器,可以实现输入信号的上升沿检测和下降沿的检测。EXTI 可以实现对每个中断/事件线进行单独配置,可以单独配置为中断或者事件,以及触发事件的属性。

EXTI功能框图

在这里插入图片描述

  1. 输入线,EXTI 控制器有 19 个中断/事件输入线,这些输入线可以通过寄存器设置为任意一个 GPIO,也可以是一些外设的事件。输入线一般是存在电平变化的信号。
  2. 一个边沿检测电路,它会根据上升沿触发选择寄存(EXTI_RTSR)和下降沿触发选择寄存器(EXTI_FTSR)对应位的设置来控制信号触发。边沿检测电路以输入线作为信号输入端,如果检测到有边沿跳变就输出有效信号 1 给编号 3 电路,否则输出无效信号0。而 EXTI_RTSR 和 EXTI_FTSR 两个寄存器可以控制器需要检测哪些类型的电平跳变过程,可以是只有上升沿触发、只有下降沿触发或者上升沿和下降沿都触发。
  3. 或门电路,它一个输入来自编号 2 电路,另外一个输入来自软件中断事件寄存器(EXTI_SWIER)。EXTI_SWIER允许我们通过程序控制就可以启动中断/事件线,这在某些地方非常有用。我们知道或门的作用就是有 1 就为 1,所以这两个输入随便一个有有效信号 1就可以输出 1 给编号 4和编号 6电路。
  4. 与门电路,它一个输入是编号 3 电路,另外一个输入来自中断屏蔽寄存器(EXTI_IMR)。与门电路要求输入都为 1 才输出 1,导致的结果是如果 EXTI_IMR 设置为 0 时,那不管编号 3 电路的输出信号是 1 还是 0,最终编号 4 电路输出的信号都为 0;
    如果EXTI_IMR设置为1时,最终编号4电路输出的信号才由编号3电路的输出信号决定,这样我们可以简单的控制 EXTI_IMR 来实现是否产生中断的目的。编号 4 电路输出的信号会被保存到挂起寄存器(EXTI_PR)内,如果确定编号 4 电路输出为 1 就会把 EXTI_PR 对应位置 1。
  5. 将 EXTI_PR 寄存器内容输出到 NVIC 内,从而实现系统中断事件控制。
    接下来我们来看看绿色虚线指示的电路流程。它是一个产生事件的线路,最终输出一个脉冲信号。
    产生事件线路是在编号3电路之后与中断线路有所不同,之前电路都是共用的。
  6. 与门电路,它一个输入来自编号 3 电路,另外一个输入来自事件屏蔽寄存器(EXTI_EMR)。如果 EXTI_EMR设置为 0时,那不管编号 3电路的输出信号是 1还是 0,最终编号 6 电路输出的信号都为 0;如果 EXTI_EMR 设置为 1 时,最终编号 6 电路输出的信号才由编号 3 电路的输出信号决定,这样我们可以简单的控制 EXTI_EMR 来实现是否产生
    事件的目的。
  7. 脉冲发生器电路,当它的输入端,即编号 6 电路的输出端,是一个有效信号 1 时就会产生一个脉冲;如果输入端是无效信号就不会输出脉冲。
  8. 脉冲信号,就是产生事件的线路最终的产物,这个脉冲信号可以给其他外设电路使用,比如定时器 TIM、模拟数字转换器 ADC等等,这样的脉冲信号一般用来触发 TIM 或者 ADC开始转换。

中断

在这里插入图片描述
17——EXTI线16连接到PVD输出
18——EXTI线17连接到RTC闹钟事件
19——EXTI线18连接到USB唤醒事件

(由于外部中断EXTI5——EXTI9公用了一个中断(EXTI10——EXTI15类似)所以要区分不同的中断源需要进行相应的判断。如上EXTI9_5_IRQHandler中,通过取读EXTI->PR寄存器来判断中断的来源。)

代码讲解

  1. 初始化相应的GPIO管脚
  2. 配置外部中断源并进行中断源和GPIO的连接
  3. 编写相应中断源的中断处理程序

程序代码:

初始化相应的GPIO管脚
GPIO_InitTypeDef GPIO_InitTStruct;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC,ENABLE);

GPIO_InitTStruct.GPIO_Pin = GPIO_Pin_0;
GPIO_InitTStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA,&GPIO_InitTStruct);

GPIO_InitTStruct.GPIO_Pin = GPIO_Pin_13;
GPIO_Init(GPIOC,&GPIO_InitTStruct);

配置外部中断源并进行中断源和GPIO的连接
EXTI_InitTypeDef EXTI_InitTStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);
EXTI_InitTStruct.EXTI_Line = EXTI_Line0;
EXTI_InitTStruct.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitTStruct.EXTI_Trigger = EXTI_Trigger_Rising; //按下
EXTI_InitTStruct.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitTStruct);

GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource13);
EXTI_InitTStruct.EXTI_Line = EXTI_Line13;
EXTI_InitTStruct.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitTStruct.EXTI_Trigger = EXTI_Trigger_Falling; //松开
EXTI_InitTStruct.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitTStruct);

编写相应中断源的中断处理程序
void EXTI0_IRQHandler(void)
{
if( EXTI_GetITStatus(EXTI_Line0) != RESET )
{
LED1_TOGGLE; //小灯电平转换
}
EXTI_ClearITPendingBit(EXTI_Line0);
}

void EXTI15_10_IRQHandler(void)
{
if( EXTI_GetITStatus(EXTI_Line13) != RESET )
{
LED2_TOGGLE; //小灯电平转换
}
EXTI_ClearITPendingBit(EXTI_Line13);
}

#define digitalTOGGLE(p,i)     {p->ODR ^=i;}
#define LED1_TOGGLE            digitalTOGGLE(LED1_GPIO_PORT,LED1_GPIO_PIN)
#define LED2_TOGGLE            digitalTOGGLE(LED2_GPIO_PORT,LED2_GPIO_PIN)

http://chatgpt.dhexx.cn/article/FkjXdV6e.shtml

相关文章

stm32外部中断

中断 中断概念程序中断是指在计算机执行现行程序的过场中,出现某些急需处理的异常情况或特殊请求,CPU暂停中断现行程序,而专区对这些异常情况或特殊情况进行处理,在处理完毕后CPU又自动返回到现行程序的断点处,继续执…

【STM32学习笔记】(13)——外部中断详解

EXTI 简介 EXTI(External interrupt/event controller)—外部中断/事件控制器,管理了控制器的 20 个中断/事件线。每个输入线可以独立地配置输入类型(脉冲 或挂起)和对应的触发事件(上升沿或下降沿或者双边沿都触发)。EXTI 可以实现对每个中断…

STM32 外部中断

目录 一、简单介绍外部中断 二、外部中断结构图 三、外部中断配置 一、简单介绍外部中断 中断即打断,实至CPU再执行当前程序时,由于系统出现了某种需要处理的紧急情况,CPU暂停正在执行的程序,转而去执行另一段特殊程序来处…

(十四)STM32——外部中断(EXTI)

目录 学习目标 内容 介绍 配置 代码 运行结果 总结 学习目标 本节内容我们将介绍一下外部中断,STM32F4 的每个 IO 都可以作为外部 中断的中断输入口,这点也是 STM32F4 的强大之处。本节我们将使用 STM32F4 的 IO 口作为外部中断输入,…

STM32-外部中断详解

目录 前言 一、外部中断是什么? 二、STM32外部中断概述 1. STM32的外部中断线 2. 外部中断线与IO引脚对应关系 3. 中断向量与服务函数 三、STM32外部中断库函数配置 1. 常用库函数 2. 库函数配置一般步骤 总结 前言 本章讲解STM32的另一个重要的外…

矩阵卷积运算的具体过程,很简单

最近在看图像处理,卷积运算这一块也查了很多,但是感觉都写的太复杂,我这里简单的写一下卷积到底是一个什么计算过程。 假设有一个卷积核h,就一般为3*3的矩阵: 有一个待处理矩阵x: h*x的计算过程分为三步 …

一、什么是卷积

CNN基础: 实现对图像的高准确率识别离不开一种叫做卷积神经网络的技术。卷积神经网络主要是应用于计算机视觉任务当中,但是他处理的任务不只是局限于图像,其实语音识别是也可以使用卷机神经网络。 什么是卷积? 我们人眼看到的和…

线性卷积

持续更新&#xff0c;敬请指正 1. 线性卷积的基本理论 线性卷积是对线性移不变&#xff08;LSI&#xff09;系统的输入输出关系的描述&#xff0c;体现系统的特性。 线性卷积的表达式为 一般情况&#xff0c;现实的系统为因果系统&#xff0c;有k<0时&#xff0c;恒有h(k)…

图像的卷积

图像的卷积 写在前面什么是卷积图像的卷积操作怎么将卷积运用到我们的图像处理上呢&#xff1f;图像卷积没什么用的卷积核 通过卷积实现高斯滤波什么是高斯滤波怎么使用卷积实现高斯滤波 写在结尾 写在前面 前段时间因为一个二维码识别项目&#xff0c;接触到了很多图像处理的…

对卷积的定义和意义的通俗解释

对卷积的困惑 卷积这个概念&#xff0c;很早以前就学过&#xff0c;但是一直没有搞懂。教科书上通常会给出定义&#xff0c;给出很多性质&#xff0c;也会用实例和图形进行解释&#xff0c;但究竟为什么要这么设计&#xff0c;这么计算&#xff0c;背后的意义是什么&#xff0…

卷积矩阵及其运算实例

矩阵的卷积运算主要用在图像处理中&#xff0c;假设输入信号为x[m,n]&#xff0c;激活响应为h[m,n]&#xff0c;则其卷积定义为&#xff1a; 不过在图像处理中这里的激活响应&#xff08;也称为核&#xff09;h[m,n]通常是一个3乘3矩阵&#xff0c;其下标如下图所示 其余下标的…

循环卷积和线性卷积(矩阵视角)

文章目录 循环卷积循环矩阵&#xff08;Circulant Matrices&#xff09;循环矩阵与循环卷积的关系 线性卷积 循环卷积 循环矩阵&#xff08;Circulant Matrices&#xff09; C [ c 0 c 1 ⋯ c N − 1 c N − 1 c 0 ⋱ ⋮ ⋮ ⋱ ⋱ c 1 c 1 ⋯ c N − 1 c 0 ] ∈ R N N (1) \…

【CV】卷积和逆卷积(转置卷积)详解

【CV】卷积和逆卷积&#xff08;转置卷积&#xff09;详解 文章目录 【CV】卷积和逆卷积&#xff08;转置卷积&#xff09;详解1. 卷积与转置卷积的关系2. 普通卷积3. 转置卷积3.1 形象化转置卷积过程3.2 转置卷积总结 4. 转置卷积函数4.1 转置卷积函数详解4.2 一般与特殊4.2.1…

什么是卷积?

理解1&#xff1a; 作者&#xff1a;果程C 链接&#xff1a;https://www.zhihu.com/question/22298352/answer/50940942 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 对于初学者&#xff0c;我推荐用复利的例子来理…

【图像处理】卷积算法

本文索引&#xff1a; 文章目录 # 一、 什么是卷积&#xff1f; 在图像处理中&#xff0c;卷积操作指的是使用一个卷积核对图像中的每个像素进行一系列操作。 卷积核&#xff08;算子&#xff09;是用来做图像处理时的矩阵,图像处理时也称为掩膜&#xff0c;是与原…

matlab 矩阵卷积

卷积的表达式&#xff1a; y(n)x(n)*h(n)sigma{x(m)h(n-m)} y(n)x(n)*sigma{deta(n-m)} 对应信号系统的卷积冲激函数&#xff0c;系统的结果就是信号和其本身的线性移位 结果元素的个数&#xff0c;x(n)的长度是n,h(n)的长度是m,则结果的序列长度就是nm-1 和信号处理的过程是…

卷积的理解

之前&#xff0c;习惯把记录和总结的知识点放到云笔记上&#xff0c;但发现CSDN这个博客注册好久了&#xff0c;但却没有往上面放文章&#xff0c;所以决定把以前的笔记整理一下&#xff0c;放到这里来&#xff0c;以便交流学习。 关于信号的卷积 最初认识卷积来源于《信号与…

卷积的含义

本文章为学习笔记 学习内容&#xff1a;b站up主王木头学科学的视频从“卷积”、到“图像卷积操作”、再到“卷积神经网络”&#xff0c;“卷积”意义的3次改变 假设一个人在一天中持续不断地吃东西&#xff0c;同时也在消化吃下去的食物&#xff0c;就有这样两条曲线&#xf…

(n,k,N)卷积码的生成矩阵

文章目录 卷积码卷积码编码器卷积码生成矩阵子生成元和生成元子生成矩阵和生成矩阵生成矩阵的作用 举例 ( n , 1 , N ) (n,1,N) (n,1,N)卷积码 ( n , k , N ) (n,k,N) (n,k,N)卷积码 卷积码 ( n , k , N ) (n,k,N) (n,k,N)卷积码是将每 k k k个信息比特作为一组&#xff0c;编码…

线性卷积运算

一、卷积定义 卷积是两个变量在某范围内相乘后求和的结果。如果卷积的变量是g(n)序列和h(n)&#xff0c;则卷积的结果 y ( n ) g ( n ) ∗ h ( n ) ∑ i − ∞ ∞ g ( i ) h ( n − i ) y(n) g(n) * h(n) \sum_{i -\infty}^{\infty}g(i)h(n-i) y(n)g(n)∗h(n)i−∞∑∞​…