STM32 外部中断/事件控制器EXTI

最新更新时间:2022-01-13来源: eefocus关键字:STM32  外部中断  事件控制器  EXTI 手机看文章 扫描二维码
随时随地手机看文章

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


如下图所示,为EXTI的功能框图。EXTI有两个功能,一个是产生中断,一个是产生事件,下面我们将对这两个功能进行讲解。

1.中断产生

如上图所示,红色虚线指示的是一个产生中断的线路,最终流入到NVIC中断控制器内。


编号1是输入线,可以指定到任意的GPIO,也可以是一些外设事件,输入线一般是存在电平变化的信号。


编号2是边缘检测电路,用来检测输入线的信号是否存在指定的电平变化,如上升沿、下降沿或任意两者都可,由EXTI_RTSR 和 EXTI_FTSR两个寄存器设置检测哪些电平变化过程。


编号3是一个或门,输入信号来自边沿检测电路,另外一个信号来自软件中断事件寄存器(EXTI_SWIER)。我们可以从软件或硬件产生中断/事件。


编号4是一个与门,编号3电路产生信号且中断屏蔽寄存器(EXTI_IMR)开启后,出书信号到NVIC中


2.事件产生

编号7是脉冲发生器电路,线路6产生信号1时本线路产生一个脉冲信号,该脉冲信号可以给其他外设电路使用,比如定时器TIM、ADC等等。


产生中断线路目的是把输入信号输入到NVIC,进一步会运行中断服务函数,属于软件级别的;而产生事件目的就是传输一个脉冲信号给其他外设使用,属于电路级的传输,属于硬件级的。


中断事件线

EXTI有20个中断/事件线,每个GPIO都可以被设置成输入线

image.png

image.png

EXTI初始化

HAL库函数的EXTI初始化非常简单,配置好IO口的模式,然后配置中断源、中断优先级、使能中断


1) HAL_NVIC_SetPriority:该函数负责 EXTI 中断/事件线选择,可选 EXTI0 至 EXTI25,配置优先级。


2) HAL_NVIC_EnableIRQ:该函数负责控制使能中断。


编程要点


1) 初始化用来产生中断的 GPIO;


#define KEY1_INT_GPIO_PORT                GPIOA

#define KEY1_INT_GPIO_CLK_ENABLE()        __HAL_RCC_GPIOA_CLK_ENABLE();

#define KEY1_INT_GPIO_PIN                 GPIO_PIN_0

#define KEY1_INT_EXTI_IRQ                 EXTI0_IRQn

#define KEY1_IRQHandler                   EXTI0_IRQHandler


2) 初始化 EXTI,配置 NVIC;


 /**

  * @brief  配置 PA0 为线中断口,并设置中断优先级

  * @param  无

  * @retval 无

  */

void EXTI_Key_Config(void)

{

    GPIO_InitTypeDef GPIO_InitStructure; 

 

    /*开启按键GPIO口的时钟*/

    KEY1_INT_GPIO_CLK_ENABLE();

    KEY2_INT_GPIO_CLK_ENABLE();

 

    /* 选择按键1的引脚 */ 

    GPIO_InitStructure.Pin = KEY1_INT_GPIO_PIN;

    /* 设置引脚为输入模式 */ 

    GPIO_InitStructure.Mode = GPIO_MODE_IT_RISING;    

    /* 设置引脚不上拉也不下拉 */

    GPIO_InitStructure.Pull = GPIO_NOPULL;

    /* 使用上面的结构体初始化按键 */

    HAL_GPIO_Init(KEY1_INT_GPIO_PORT, &GPIO_InitStructure); 

 

    /* 配置 EXTI 中断源 到key1 引脚、配置中断优先级*/

    HAL_NVIC_SetPriority(KEY1_INT_EXTI_IRQ, 0, 0);

    /* 使能中断 */

    HAL_NVIC_EnableIRQ(KEY1_INT_EXTI_IRQ);

}


3) 编写中断服务函数;


void KEY1_IRQHandler(void)

{

  //确保是否产生了EXTI Line中断

if(__HAL_GPIO_EXTI_GET_IT(KEY1_INT_GPIO_PIN) != RESET) 

{

// LED1 取反

LED1_TOGGLE;

    //清除中断标志位

__HAL_GPIO_EXTI_CLEAR_IT(KEY1_INT_GPIO_PIN);     

}  

}


关键字:STM32  外部中断  事件控制器  EXTI 编辑:什么鱼 引用地址:STM32 外部中断/事件控制器EXTI

上一篇:GPIO功能框图--以STM32F429为例
下一篇:STM32基本定时器 HAL库

推荐阅读最新更新时间:2023-09-21 00:04

解决烧录问题:Jlink的三线制SWD方式连接STM32芯片无法识别
网上找到此文章解决了j-flash只能连接后不能烧录的问题,希望遇到相同问题的小伙伴,可以用同样的办法解决: 前段时间,做了一块板子,调试接口只留了三个口SWD、SWCLK、GND,在使用Jlink的SWD方式调试的时候发现无法连接。使用ST-link的时候可以连接,无奈楼主的ST-link的链接方式相当的不可靠,时而能识别时而不能识别:当然我的ST-link是山寨版的。 那么问题来了:为什么通过20针全部连接的方式可以调试,而三针的方式就不行了呢? 古人云知之为知之,不知Google之,Google不让用,那就问度娘好了。 通过查阅网上资料发现,jlink的20针,不光有调试的功能还有供电和检测电压的功能。 下面是jl
[单片机]
解决烧录问题:Jlink的三线制SWD方式连接<font color='red'>STM32</font>芯片无法识别
STM32 学习笔记_TIME定时器详解1
STM32 单片机的定时器的确很强大,参考说明书中就占了一百多页,占参考手册1/4 有多了。 STM32的定时器分了好几个类别,各个类别针对功能作用都不大相同。 分有: 一、高级定时器 二、通用定时器 三、基本定时器 四、看门狗定时器 五、SysTick定时器 其中看门狗定时器和SysTick定时器本篇笔记阐述,这里主要记下对平时使用定时器作用的计时计数器的一些自己的理解。 按照参考手册中的定义 高级定时器 通用定时器基本定时器,这三个定时器成上下级的关系,即基本定时器有的功能通用定时器都有,而且还增加了向下、向上/向下计数器、PWM生成、输出比较、输入捕获等等功能;而高级定时器又包含了通用定时
[单片机]
<font color='red'>STM32</font> 学习笔记_TIME定时器详解1
STM32 时钟树图的简单分析
STM32 0.说在前面的前面: 关于MCU(微控制单元(Microcontroller Unit)又称单片微型计算机,简称:单片机 1.说在前面: 时钟系统对于单片机的意义就相当于人类的心跳,时钟系统可以给予单片机一组精准的时序,让单片机可以稳定的工作,同时,可以只开启所使用的时钟,实现低功耗; 2.部分C语言的内容补充 1.#ifdef的用法(在头文件上使用) 预编译指令,用于宏定义,如果使用#ifdef,当某条件实现的时候对一组语句进行编译 #ifndefxxxxx#define xxxxx#endif xxxxxx 2.extern 关键字 置于变量和函数前,表示变量和函数可以定义在别的文件上,然而在另外一个文件中进行引
[单片机]
<font color='red'>STM32</font> 时钟树图的简单分析
意法完成STM32控制器底层软件部署
   意法半导体 (ST)完成了将其免费底层应用程序编程接口(Low-LayerApplicationProgrammingInterface,LLAPI)软件,导入支持所有的 STM32 微控制器(MCU)的 STM32 Cube软件包中。LLAPI软件让专业的开发人员,能够在方便好用的STMCube环境内开发应用,使用ST验证的软件,对最低到寄存器级的代码进行优化,从而缩短产品上市时间。下面就随嵌入式小编一起来了解一下相关内容吧。   在所有的 STM32 Cube组合内,整合LLAPI和硬件抽象层(HardwareAbstractionLayer,HAL)软件,让开发人员能够完全自由地选择外部周边的控制方式。他们可以选择利
[嵌入式]
基于STM32设计的智能家居控制系统(华为云IOT)
1. 功能介绍 随着 物联网 技术的快速发展, 智能家居 控制系统 成为了人们追求便捷、舒适和安全生活的重要组成部分。为了满足用户对 智能 家居的需求,设计了一款基于华为云物联网平台的智能家居控制系统, 硬件 采用了 STM32 和 ESP8266 的组合,实现了设备的上云连接。 传统的家居控制系统存在一些不足,比如需要人工操作、无法实现远程控制等。而我们的智能家居控制系统,通过与华为云物联网平台的连接,可以实现远程控制各种电器开关,并且可以远程收集家里煤气、天然气、烟雾、光照度、温度湿度等信息,为用户提供更加智能化和便捷的家居体验。 智能家居控制系统具有以下主要特点和功能: 远程控制:通过与华为云物联网平台的连接,用户可以
[单片机]
基于<font color='red'>STM32</font>设计的智能家居控制系统(华为云IOT)
关于STM32正交编码器边沿的理解
STM32中的TIM_EncoderInterfaceConfig()函数。其配置的定时器有编码器接口等功能,一般是定时器的通道1和通道2才能作为编码器的输入口,对应编码器输出的两项。 TIMx参数就是使用哪个定时器作为编码器接口的捕捉定时器。 一般一个编码器占用一个定时器。 TIM_EncoderMode参数是模式,是单相计数(只能反映速度)还是两相计数(速度和方向)。 TIM_IC1Polarity和TIM_IC2Polarity参数就是通道1、2的捕捉极性。 但是一般来说,STM32对应的都是两相计数,一项计数容易误判,也就是说,你可以按一路计数,但是接线时好像两相的编码线A,B都是需要接上的,否则容易误判。
[单片机]
关于<font color='red'>STM32</font>正交编码器边沿的理解
STM32——C语言数据类型
在编程过程中,不同的CPU,其数据类型的意义各不相同,所以一定要注意相应变量数据类型的定义和转换,否则在计算中可能会出现不确定的错误。 (一)C语言中的种类数据 整型:int short long 实型:float double STM32中的数据类型非常的多,常用的变量,文件中的定义如下: /* exact-width signed integer types */ typedef signed char int8_t; typedef signed short int int16_t; typedef signed int int32_t; typede
[单片机]
不一样的STM32“脱机”烧录器
用SBC给STM32F746Discovery烧写程序。SBC就是单板电脑的意思,也可以叫卡片电脑(神奇的ARM小电脑),他是一个统称;常见的SBC有树莓派、Friendly ARM、香橙派、栗子派、Firefly等。 硬件的接法很简单,就像上面那样,把STM32Discovery的板载ST-Link V2的USB接口接到SBC的USB接口上就好了。 过去,我们如果要给STM32单片机烧写程序,需要用到桌面电脑,或者笔记本电脑。这些都是X86平台的,非常不方便。所以,我们今天要来个骚操作,DIY一个小作品,用栗子派代替传统的X86电脑,把它做成一台小型的STM32烧录器。借助Linux系统的SSH服务,间接地也实现了远程烧
[单片机]
不一样的<font color='red'>STM32</font>“脱机”烧录器

推荐帖子

从51到ARM. 32位嵌入式系统入门
谢谢大家,祝大家学习愉快!从51到ARM.32位嵌入式系统入门
zhuizhu12345 ARM技术
【家中宝】 esp32s2 lvgl跑起来之lcd io配置
【家中宝】esp32s2lvgl跑起来之lcdio配置1,具体参考:D:\2022dk\esp32-s2-kaluga-1\components\board\include\board_kaluga_v1_3.h2,背面的SW3SW4全部ON也可以SW3T1-T5OFF其他ON具体看原理图:3,idf.pymenuconfig配置。4,flash改为4m。5,保存编译下载。6,谢谢鼓励。 【家中宝】esp32s2lvgl跑起
damiaa DigiKey得捷电子技术专区
集成电路原装、散新和翻新的区别
dongnengshiji Microchip MCU
【sensorTile评测】之六----BlueMicrosystem2评测
之前评测中已经下载了评测要用到的所有软件开发包。这次要用到的就是其中的 en.Bluemicrosystem2_firmware.zip 把它解压缩至IAR的安装目录下(你也可以把它解压缩至其他目录下) 到相应路径下打开项目文件,重新编译。 编译后发现16个错误,都是因为缺少bluenrg_gatt_aci.h造成的 图一 实际上这个文件在下面路径下是存在的: 安装目录\en.Bluemicrosyst
yang_alex 意法半导体-低功耗射频
开关稳压器和LDO稳压器对电源的效率了解
在降压转换过程中最常利用的是开关稳压器和LDO稳压器,但缺点在于尺寸太大,LDO如电压偏离值很大时,转换效率就骤降,开关电容稳压器为新兴技术,结合开关电容器和LDO优点,可整合至可携式应用中。设法降低核心处理器的供电电压是手持式装置的全新技术趋势之一,而在降压的同时,也必须兼顾以更高效率延长电池寿命的需求。目前这些装置裡有多种新功能都有降压转换需求,如应用处理器、记忆体和射频(RF)设计等,从负载和空间参数两项考量来看,目前在此类应用上最流行的解决方案,即採开关稳压器和低压降(LDO
qwqwqw2088 模拟与混合信号
汽车线束和快速样件
有定制汽车测试线束或者快速样件的可以找我哦 汽车线束和快速样件
买线束找阿琛 汽车电子
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2023 EEWORLD.com.cn, Inc. All rights reserved