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库

推荐阅读最新更新时间:2024-11-10 10:59

windows下用J-link J-Flash下载STM32程序
打开“Option”—》“Project settings…”,进行烧写前的必要设置,如下图: 在“General”页,选择“USB”,如下图: 在“Target Interface”页,选择“JTAG”,JTAG速度设置为“Auto selection”,如下图 在“CPU”页,选择 开发板 的CPU型号:ST STM32F103VB,如下图: “FLASH”页不用设置,默认设置就可以了。 在“Production”页,我们把“Start application”选上,则在下载成功之后,程序会自动运行。 在设置完成后,我们点击“应用”和“确定”退出。在JLINK软件界面左边,将显示烧写
[单片机]
windows下用J-link J-Flash下载<font color='red'>STM32</font>程序
利用Proteus仿真STM32实现DHT11温湿度检测
1. 前言 Proteus是英国著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一 键切换到PCB设计,真正实现了从概念到产品的完整设计。是世界上唯一将电路仿真软件、PCB设计软 件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、 PIC10/12/16/18/24/30/DSPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系 列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MATLAB等多种编译 器。 前面文章介绍了Proteus的下载,安装,建立工程,完成LED灯仿真运行。这篇文章在这基础上增加串口
[单片机]
利用Proteus仿真<font color='red'>STM32</font>实现DHT11温湿度检测
STM32】HAL库 STM32CubeMX教程五----看门狗
前言: 今天我们来学习看门狗的配置与函数,看门狗可以有效解决程序的跑飞,在使用过程中比较常见,是防止芯片故障的有效外设,我们一起来学习下HAL库 STM32CubeMX的独立看门狗,窗口看门狗的使用。本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 所用工具: 1、芯片: STM32F407ZET6 2、STM32CubeMx软件 3、IDE: MDK-Keil软件 4、STM32F1xx/STM32F4xxHAL库 知识概括: 通过本篇博客您将学到: STM32CubeMX创建看门狗例程 独立看门狗,靠窗看门狗 工作原理 看门狗 在由单片机
[单片机]
【<font color='red'>STM32</font>】HAL库 STM32CubeMX教程五----看门狗
第66节:单片机外部中断的基础
开场白: 外部中断是单片机非常重要的内部资源,应用很广,它是单片机的高速开关感应器输入接口,它可以检测脉冲输入,可以接收红外遥控器的输入信号,可以检测高速运转的车轮或者电机圆周运动的反馈信号,可以检测输液器里瞬间即逝的水滴信号,可以接收模拟串口的数据信息,等等。 这一节要教大家两个知识点: 第一个:外部中断的初始化代码和中断函数的基本程序模板。 第二个:当系统存在两种中断以上时,如何设置外部中断0为最高优先级,实现中断嵌套功能。 具体内容,请看源代码讲解。 (1)硬件平台: 基于朱兆祺51单片机学习板。用S1按键作为模拟外部中断0的下降沿脉冲输入。原来S1按键是直接连接到P0^0口的,因此必须通过跳线把P0^0口连接到单
[单片机]
STM32通过PWM控制电机速度
做STM32智能小车的实验中会用到定时器PWM输出,来改变直流电机的转速。分享本文了解如何通过PWM实现对电机速度的控制。 PWM控制电机速度的基本原理 PWM(Pulse Width Modulation),也就是脉冲宽度调制。 PWM中有一个比较重要的概念,占空比:是一个脉冲周期内有效电平在整个周期所占的比例。 为了实现IO口上电压的持续性变化,可以调节PWM的占空比。这也能够使外设的功率进行持续性变化,最终控制直流电机转速的快慢。如何调节PWM波形的输出就是重点。 上图中的ARR是我们给定时器的一个预装载值,CCRx的上下变化是产生PWM波的关键。我们假设ARR大于CCRx的部分输出为高电平(即t1-t2、t3-t4、
[单片机]
<font color='red'>STM32</font>通过PWM控制电机速度
为什么学习STM32时还要学习汇编
不同的平台的汇编代码是不一样的,最早的汇编在50年代就发明了,比很多人的父母的年龄都大,老掉牙,不用学习怎么写汇编。一个公司有一个人知道怎么写汇编就够了。但要学习读汇编,为什么学习汇编? 1、性能 直接翻译为机器语言,性能最高。优秀的C语言效率只能达到汇编的80%左右。其他高级语言跟汇编一比差得更远。语言越高级性能越差。很多bootloader和BIOS用汇编写,汇编操作的是电脑,手机刚刚上电时,硬件和初始化的那些命令,它们的性能的要求比较高,效率高开机速度更快。 分析问题 个人认为,编程人与机器对话,我们写C,写JAVA,但是电脑并不认识这些语言,电脑只认识0和1;所以需要一个人来翻译这些语言,这个翻译官就是编译器,但是
[单片机]
为什么学习<font color='red'>STM32</font>时还要学习汇编
第17章 EXTI外部中断/事件控制器—零死角玩转STM32-F429系列
本章参考资料:《STM32F4xx中文参考手册》系统配置控制器以及中断和事件章节。 上一章节我们已经详细介绍了NVIC,对STM32F4xx中断管理系统有个全局的了解,我们这章的内容是NVIC的实例应用,也是STM32F4xx控制器非常重要的一个资源。学习本章时,配合《STM32F4xx中文参考手册》系统配置控制器以及中断和事件章节一起阅读,效果会更佳,特别是涉及到寄存器说明的部分。 特别说明,本书内容是以STM32F42xxx系列控制器资源讲解。 17.1 EXTI简介 外部中断/事件控制器(EXTI)管理了控制器的23个中断/事件线。每个中断/事件线都对应有一个边沿检测器,可以实现输入信号的上升沿检测和下降沿的检测
[单片机]
第17章 <font color='red'>EXTI</font>—<font color='red'>外部中断</font>/<font color='red'>事件</font><font color='red'>控制器</font>—零死角玩转STM32-F429系列
STM32 嵌入式学习入门 —— 窗口看门狗 & 独立看门狗
一、看门狗概述: 1.为什么需要看门狗? 在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的模块或者芯片,俗称“看门狗”(watchdog) 。STM32内置两个看门狗,提供了更高的安全性、时间的精确性和使用的灵活性。两个看门狗设备(独立看门狗/窗口看门狗)可以用来检测和解决由软件错误引起的故障。当计数器达到给定的超时值时,触发一个中断(仅适用窗口看门狗)或者产生系统复位。
[单片机]
<font color='red'>STM32</font> 嵌入式学习入门 —— 窗口看门狗 & 独立看门狗

推荐帖子

传说中很神的Wince6怎么这么慢?
传说中Wince6做了很多重大改进,效率大幅度提升。但是我最近从wince5转到Wince6之后,发现:在PXA270平台上,直接从wince6的MainStoneIII改来的BSP,速度明显比wince5慢很多。在板子上慢吧,咱先不提了,可能是BSP还没有优化好,是咱的水平太菜。问题是发现在ARM模拟器上运行程序也是奇慢无比,比wince5的模拟器慢很多,这是为什么?实在是百思不得其解啊!各位大侠,有没有遇到这个问题的,给俺解解惑。传说中很神的Wince6怎么这么慢?比较快的,慢的是那
KKKK111 WindowsCE
Vista下,下载NK.bin总是中途停止
我在WinXP下,用PB、EShell、以及一些TFTP工具,通过Ethernet或USBRNDIS,下载NK.bin到WinCE5设备(MarvellXSCAL),从来没有问题。可是,在windowsVista,我用这些工具,通过Ethernet或USBRNDIS,下载NK.bin到WinCE5设备,总是下到40%或50%左右,传输就终止了。然后PC端报timeout错误。我还用Vista下的TFTP指令,做了相同的操作,也取得了相同的失败结果。NK.bin也就不到19MB。有没
鹏晨 嵌入式系统
wifi网络授时时钟上架
通过网络自动或手动获取时间服务器的时间,可以手动调节亮度。散件发货,需要自己焊接,程序以烧好,发货周期有点长淘宝:https://item.taobao.com/item.htm?id=532735289183wifi网络授时时钟上架说明貌似太简陋了。最好有个清单,有个说明。提供源码吗,提供原理图吗?如何操作?有说明书吗?额看了看售价我放弃了{:1_133:} 原件的成本都要30多了wifi模块比较贵:tongue::tongue::tongue:要开
baomk 淘e淘
PCap01
PCap01那里有的买(总代理)?哪家可以申请样片?PCap01
cjq_enjoy 汽车电子
晶体管电路设计(上)(下)
本书共分上下二册。上册主要内容有晶体管工作原理,放大电路的性能、设计与应用,射极跟随器的性能与应用电路,小型功率放大电路的设计与应用,功率放大器的设计与制作,共基极电路的性能、设计与应用,视频选择器的设计与制作,共射-共基电路的设计,负反馈放大电路的设计,直流稳定电源的设计与制作,差动放大电路的设计,运算放大电路的设计与制作,下册则共分15章,主要介绍FET、功率MOS、开关电源电路等。本书面向实际需要,理论联系实际,通过具体的实验,通俗易懂地介绍晶体管电路设计的基础知识.铃木雅
tiankai001 下载中心专版
磁性元件老大难?看看下面这些资料,帮你顺利通关~
磁性元件经典书籍推荐:《开关电源中磁性元器件》南京航空航天大学自动化学院赵修科主编《开关电源磁性元件理论及设计》周洁敏、赵修科、陶思钰著北京航空航天大学出版社视频教程:开关电源中的磁性元件本系列介绍了磁的基本概念、电路中的磁元件、开关电源中磁性材料的基本参数、开关电源中常见的磁性材料、变压器中的分布参数及线圈、变压器损耗及热设计、高频开关电源磁芯的工作状态、直流滤波电感设计、反激变压器电感设计举例、高频变压器设计口碑好贴好资
木犯001号 电源技术
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved