外部中断/事件我的理解是可以将单片机的IO口全部设置为外部中断口,我们可以根据触发哪个IO口中断,去执行相应的中断处理函数。这个其实很简单,51一般有2个外部中断口,而stm32将其扩展,每个IO口都可以作为外部中断口。
外部中断配置也很简单,只需要打开相应的IO口配置,时钟,打开stm32f10x_conf.h里的 #include "stm32f10x_exti.h" ,配置EXIT和中断处理函数即可。下面是简单的实例(基于3.0库):
void GPIO_Configuration(void)//配置GPIOC_5口作为外部中断口
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode= GPIO_Mode_IN_FLOATING ;
GPIO_Init(GPIOC, &GPIO_InitStructure);
}
void EXTI_Configuration(void)
{
EXTI_InitTypeDef EXTI_InitStructure;
EXTI_InitStructure.EXTI_Line = EXTI_Line5; //外部中断线
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//中断模式
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;//中断触发方式
EXTI_InitStructure.EXTI_LineCmd = ENABLE;//打开中断
EXTI_Init(&EXTI_InitStructure);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource5); //选择 GPIO管脚用作外部中断线路
}
void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); // 抢占式优先级别
NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;//指定中断源
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; // 指定响应优先级别1
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
//中断处理函数
void EXTI9_5_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line5) != RESET)
{
//添加中断处理程序
EXTI_CleaRFlag(EXTI_Line5);
EXTI_ClearITPendingBit(EXTI_Line5);
}
}
关键字:STM3 外部中断 事件控制器 EXTI
引用地址:
STM32的学习心得之外部中断/事件控制器(EXTI)
推荐阅读最新更新时间:2024-03-16 14:28
【STM32】3-外部中断实验(EXTI)步骤及解析
一、外部中断介绍 1.1 EXTI 简介 STM32F10x外部中断/事件控制器(EXTI)包含多达 20 个用于产生事件/中断请求的边沿检测器。EXTI的每根输入线都可单独进行配置,以选择类型(中断或事件)和相应的触发事件(上升沿触发、下降沿触发或边沿触发),还可独立地被屏蔽。 1.2 EXTI 结构框图 1.3 外部中断/事件线映射 STM32F10x的EXTI具有20个中断/事件线,如下: 二、外部中断配置步骤 要使用外部中断我们就需要先配置它,通常都需经过这几步:(EXTI相关库函数在stm32f10x_exti.c和stm32f10x_exti.h文件中) (1)使能IO口时钟,配置IO口模式为输入 (2)
[单片机]
STM32中EXTI,EXTI和NVIC的关系
关于EXTI 1.什么是EXTI? EXTI(External interrupt/event controller)—外部中断/事件控制器,管理了控制器的 20个中断/事件线。每个中断/事件线都对应有一个边沿检测器,可以实现输入信号的上升沿检测和下降沿的检测。EXTI 可以实现对每个中断/事件线进行单独配置,可以单独配置为中断或者事件,以及触发事件的属性。 先看EXTI框图: 1.1产生中断线路流程 ①输入线,EXTI 控制器有 20 个中断/事件输入线,可以通过寄存器设置为任意一个 GPIO,也可以是一些外设的事件,输入线一般是存在电平变化的信号。 ②边沿检测电路,EXTI 可以对触发方式进行选择,通过上升沿触发选择寄
[单片机]
f4 外部中断的例子同f1略有不同
1.使能SYSSCFG和对应GPIO时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOx, ENABLE); 2.配置对应GPIO为输入模式 GPIO_InitStructure.GPIO_Mode =GPIO_Mode_IN; GPIO_InitStructure.GPIO_PuPd =GPIO_PuPd_NOPULL; GPIO_InitStructure.GPIO_Pin =GPIO_Pin_x; GPIO_Init(GPIOx,&GPIO_I
[单片机]
[单片机框架][bsp层][cx32l003][bsp_exti] EXTI配置和使用
一、 主体不同 内部中断:断是一个算法指令,是由软中断指令启动的中断。 外部中断:是单片机实时地处理外部事件的一种内部机制。 二、机制不同 内部中断:执行除法指令时,出现除数为0或商超过寄存器所能表达的范围,则产生类型为0 的内部中断。是优先级最高的内部中断。 外部中断:当某种外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理;中断处理完毕后.又返回被中断的程序处,继续执行下去。 /******************************************************************************** * @file bsp_exti.
[单片机]
做单片机设计,STM32 GPIO外部中断你必须知道
一、STM32中断分组: STM32 的每一个GPIO都能配置成一个外部中断触发源,这点也是 STM32 的强大之处。STM32 通过根据引脚的序号不同将众多中断触发源分成不同的组,比如:PA0,PB0,PC0,PD0,PE0,PF0,PG0为第一组,那么依此类推,我们能得出一共有16 组,STM32 规定,每一组中同时只能有一个中断触发源工作,那么,最多工作的也就是16个外部中断。STM32F103 的中断控制器支持 19 个外部中断/事件请求。每个中断设有状态位,每个中断/事件都有独立的触发和屏蔽设置。STM32F103 的19 个外部中断为: 线 0~15:对应外部 IO 口的输入中断。 线 16:连接到 PVD 输出。
[单片机]
基于STM32H7 EXTI+SPI+DMA双缓冲应用演示
最近有STM32用户咨询---如何基于STM32H7系列芯片用EXTI0中断同步触发SPI DMA并实现DMA双缓冲功能。当然,在论坛上也有发布类似咨询帖。其实,老早之前我算是未雨绸缪地在本公众号分享了有关使用DMAMUX模块通过EXTI同步触发其它DMA请求的文章和关于DMA双缓冲应用原理介绍与参考实现代码。 STM32 MCU家族中里很多系列内置DMAMUX模块,该模块可以基于某些特定事件,比如某些EXTI事件、定时器触发输出、DMA完成事件来生成DMA请求;有了它,DMA请求与DMA通道的关联可以实时编程,不再事先硬件锁定DMA请求与DMA响应通道的连接逻辑。我这里不对DMAMUX做详细介绍,有需要的请阅读STM32系列
[单片机]
单片机外部中断线的作用
这张图是一条外部中断线或外部事件线的示意图,图中信号线上划有一条斜线,旁边标志19字样的注释,表示这样的线路共有19套。图中的蓝色虚线箭头,标出了外部中断信号的传输路径。 首先外部信号从编号1的芯片管脚进入,经过编号2的边沿检测电路,通过编号3的或门进入中断挂起请求寄存器,最后经过编号4的与门输出到NVIC中断检测电路,这个边沿检测电路受上升沿或下降沿选择寄存器控制,用户可以使用这两个寄存器控制需要哪一个边沿产生中断,因为选择上升沿或下降沿是分别受2个平行的寄存器控制,所以用户可以同时选择上升沿或下降沿,而如果只有一个寄存器控制,那么只能选择一个边沿了。 接下来是编号3的或门,这个或门的另一个输入是软件中断/事件寄存器,
[单片机]
s3c2440外部中断
上文用到了pwm控制蜂鸣器,实现了蜂鸣器频率的改变,有一点不好就是蜂鸣器一直响,可以用一个交互的方式来关闭蜂鸣器。这里就选择按键,开发板上一共4个按键,对应这4个外部中断EINT0,EINT1,EINT2和EINT4(为什么不是EINT0~3呢,让人蛋疼) 要使用外部中断,首先要初始化外部中断。外部中断跟外部引脚F和G复用。要把相应的引脚配置为中断模式: 配置完引脚后,还需要配置具体的中断功能。我们要打开某一中断的屏蔽,这样才能响应该中断,相对应的寄存器为INTMSK 有些位对应着多个外部中断; 由于存在位对应着多个外部中断,如上图 EINT4~7 EINT8~23 对
[单片机]