每一个GPIO如何配置成一个外部中断触发源

畅学单片机 ? 2018-01-25 08:44 ? 次阅读

STM32中断分组

心博天下娱乐平台 www.syycw.cn STM32 的每一个GPIO都能配置成一个外部中断触发源,这点也是 STM32 的强大之处。STM32 通过根据引脚的序号不同将众多中断触发源分成不同的组,比如:PA0,PB0,PC0,PD0,PE0,PF0,PG0为第一组,那么依此类推,我们能得出一共有16 组,STM32 规定,每一组中同时只能有一个中断触发源工作,那么,最多工作的也就是16个外部中断。STM32F103 的中断控制器支持 19 个外部中断/事件请求。每个中断设有状态位,每个中断/事件都有独立的触发和屏蔽设置。STM32F103 的19 个外部中断为:

线 0~15:对应外部 IO 口的输入中断。

线 16:连接到 PVD 输出。

线 17:连接到 RTC 闹钟事件。

线 18:连接到 USB 唤醒事件。

外部中断的配置过程

1.配置触发源GPIO口

因为GPIO口作为触发源使用,所以将GPIO口配置成输入模式,触发模式有以下几种:

a.GPIO_Mode_AIN ,模拟输入(ADC模拟输入,或者低功耗下省电)

b.GPIO_Mode_IN_FLOATING ,浮空输入

c.GPIO_Mode_IPD ,带下拉输入

d.GPIO_Mode_IPU ,带上拉输入

GPIO_InitTypeDef GPIO_InitStructure;//定义结构体

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);//使能时钟

GPIO_InitStructure.GPIO_Pin= GPIO_Pin_2;//选择IO口 PE2

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//设置成上拉输入

GPIO_Init(GPIOE, &GPIO_InitStructure);//使用结构体信息进行初始化IO口

2.使能AFIO复用时钟功能

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);

3.将GPIO口与中断线映射起来

GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource2);

4.中断线上进行中断初始化

EXTI_InitTypeDef EXTI_InitStructure;//定义初始化结构体

EXTI_InitStructure.EXTI_Line=EXTI_Line2; //中断线的标号 取值范围为EXTI_Line0~EXTI_Line15

EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//中断模式,可选值为中断 EXTI_Mode_Interrupt 和事件 EXTI_Mode_Event。

EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;//触发方式,可以是下降沿触发 EXTI_Trigger_Falling,上升沿触发 EXTI_Trigger_Rising,或者任意电平(上升沿和

下降沿)触发EXTI_Trigger_Rising_Falling

EXTI_InitStructure.EXTI_LineCmd = ENABLE;

EXTI_Init(&EXTI_InitStructure);//根据结构体信息进行初始化

5.中断优先级配置

NVIC_InitTypeDef NVIC_InitStructure;//定义结构体

NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn; //使能外部中断所在的通道

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02; //抢占优先级 2,

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02; //子优先级 2

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能外部中断通道

NVIC_Init(&NVIC_InitStructure); //根据结构体信息进行优先级初始化

6.外部中断服务函数的编写

外部中断函数分别为:

EXPORT EXTI0_IRQHandler

EXPORT EXTI1_IRQHandler

EXPOR T EXTI2_IRQHandler

EXPORT EXTI3_IRQHandler

EXPORT EXTI4_IRQHandler

EXPORT EXTI9_5_IRQHandler

EXPORT EXTI15_10_IRQHandler

中断线 0-4 每个中断线对应一个中断函数,中断线 5-9 共用中断函数 ,EXTI9_5_IRQHandler,中断线 10-15 共用中断函数 EXTI15_10_IRQHandler。

void EXTI2_IRQHandler(void)

{

if(EXTI_GetITStatus(EXTI_Line2)!=RESET)//判断某个线上的中断是否发生

{

中断逻辑…

EXTI_ClearITPendingBit(EXTI_Line2); //清除 LINE 上的中断标志位

}

}

使用按键进行外部中断的时候,一般都需要进行按键延时消抖以及松手检测的相关处理,中断函数可以参看以下代码:

void EXTI2_IRQHandler(void)

{

delay_ms(10);//延时消抖

if(KEY2==0) //按键真的被按下

{

LED0=!LED0;

}

while(KEY2!=0);//等待松手

EXTI_ClearITPendingBit(EXTI_Line2); //清楚中断标志位

}

当然,如果你的按键是允许长按功能的,那么就进行别的逻辑操作,这里不作研究。


畅学单片机 技术专区

原文标题:STM32GPIO外部中断总结

文章出处:【微信号:changxuemcu,微信公众号:畅学单片机】欢迎添加关注!文章转载请注明出处。

关注电子发烧友微信

有趣有料的资讯及技术干货

下载发烧友APP

打造属于您的人脉电子圈

关注发烧友课堂

锁定最新课程活动及技术直播
收藏 人收藏
分享:

评论

相关推荐

需要做一套水质监测系统,想请问一下各位大神有研究得能提供一下方案不

发表于 04-08 17:03 ? 104次阅读
需要做一套水质监测系统,想请问一下各位大神有研究得能提供一下方案不

STM32Note初识单片机

本连载将以STM32F103为例为学习嵌入式系统开发搭建一个基础知识框架。 初识单片机系列将会介绍单....

发表于 04-08 10:00 ? 16次阅读
STM32Note初识单片机

基于STM32芯片的一款智能台灯

随着现代科学技术的不断发展,生活用品的智能化程度也越来越普及,人们对一些家居物品的人性化、智能化设计....

的头像 21ic电子网 发表于 04-08 08:48 ? 298次阅读
基于STM32芯片的一款智能台灯

STM32 GPIO工作原理及LED电路原理

STM32F103ZET6:共144个引脚,7组IO口,每组16个IO口7*16=112个IO口(这....

发表于 04-07 11:50 ? 136次阅读
 STM32 GPIO工作原理及LED电路原理

基于STM32的家庭服务机器人系统工作原理及设计

为解决当前大部分家庭服务机器人不具备行走功能或只具有简单的避障能力等问题,本文设计一种基于STM32....

的头像 电子发烧友网工程师 发表于 04-06 08:26 ? 385次阅读
基于STM32的家庭服务机器人系统工作原理及设计

基于STM32的伺服压力机控制系统设计

伺服压力机的基本结构及对控制系统的要求与传统压力机比较,伺服压力机取消了原有压力机的飞轮和离合器,保....

的头像 电子发烧友网工程师 发表于 04-06 08:07 ? 229次阅读
基于STM32的伺服压力机控制系统设计

STM32的串口中断配置

STM32的串口中断配置,也是很简单的. 首先是配置UART的GPIO口 首先是配置UART的GPI....

的头像 电子发烧友网工程师 发表于 04-06 07:24 ? 200次阅读
STM32的串口中断配置

基于STM32单片机的DLP1700显示电路、光路系统改进设计

传统的数字微镜显示技术的信号输入端是由DVI接口提供图像信号和行场同步信号,由MSP430单片机对D....

的头像 电子发烧友网工程师 发表于 04-06 02:58 ? 174次阅读
基于STM32单片机的DLP1700显示电路、光路系统改进设计

这样做为什么会导致占空比改变?

发表于 04-05 17:28 ? 87次阅读
这样做为什么会导致占空比改变?

Keil MDK3.20的stm32调试方法

要点: (1)程序的下载地址改到RAM空间中 (2)程序的debug之前要设定SP,PC指针到R....

发表于 04-04 11:49 ? 70次阅读
Keil MDK3.20的stm32调试方法

基于STM32的数字PDA系统软件系统设计

数字PDA系统整体由硬件电路和软件系统2部分组成,硬件电路由低功耗ARM微控制器STM32ZET6控....

发表于 04-04 11:25 ? 79次阅读
基于STM32的数字PDA系统软件系统设计

stm32 LCD12864 串口无显示

发表于 04-03 23:41 ? 226次阅读
stm32   LCD12864 串口无显示

请问像4054那样的充电ic,如何用单片机读取chrg端口充电状态

发表于 04-03 15:57 ? 176次阅读
请问像4054那样的充电ic,如何用单片机读取chrg端口充电状态

Alexa语音服务软件扩展STM32Cube

X-CUBE-AVS扩展套件包含一组用于STM32F7系列微控制器的库和应用示例,充当支持Alexa....

的头像 设计idea 发表于 04-03 13:41 ? 1606次阅读
Alexa语音服务软件扩展STM32Cube

STM32进入和退出睡眠模式

要求系统按如下方式进入和退出睡眠模式:在系统启动2秒后,将RTC在3秒钟之后配置为产生一个报警事件,....

发表于 04-03 11:43 ? 48次阅读
STM32进入和退出睡眠模式

STM32开放式开发环境手册

发表于 04-03 10:50 ? 152次阅读
STM32开放式开发环境手册

用于STM32Cube的Alexa语音服务软件扩展

发表于 04-03 10:44 ? 235次阅读
用于STM32Cube的Alexa语音服务软件扩展

开始使用STM32Cube的Alexa语音服务软件扩展

发表于 04-03 10:43 ? 196次阅读
开始使用STM32Cube的Alexa语音服务软件扩展

STM32单片机--PWM输出

采用定时器2的通道2,使PA1输出频率1K,占空比40的PWM波形,用PA8随意延时取反led灯,指....

的头像 电子发烧友网工程师 发表于 04-03 08:54 ? 85次阅读
STM32单片机--PWM输出

单片机STM32时钟图文理解

如输出到称为HCLK、FCLK的时钟,还直接输出到SDIO外设的SDIOCLK时钟、存储器控制器FS....

的头像 21ic电子网 发表于 04-03 08:45 ? 204次阅读
单片机STM32时钟图文理解

RT-Thread Nano 3.0.3 的基本功能及如何下载与使用

RT-Thread是一个高度可配置的嵌入式实时操作系统,配置文件是rtconfig.h。Nano就是....

的头像 RTThread物联网操作系统 发表于 04-02 15:58 ? 134次阅读
RT-Thread Nano 3.0.3 的基本功能及如何下载与使用

求Labview开发STM32的工具包和licence

发表于 04-01 11:29 ? 131次阅读
求Labview开发STM32的工具包和licence

适配Nano-PCB的 便携式口袋ARM开发板 3D打印数据及机加工数据

发表于 03-30 16:21 ? 278次阅读
适配Nano-PCB的 便携式口袋ARM开发板 3D打印数据及机加工数据

STM32三种BOOT模式介绍

内置SRAM,既然是SRAM,自然也就没有程序存储的能力了,这个模式一般用于程序调试。假如我只修改了....

的头像 MCU开发加油站 发表于 03-30 16:09 ? 345次阅读
STM32三种BOOT模式介绍

STM32_IAP详解(有代码,有上位机)

 和app中分别放置两套中断向量表,当iap代码中将app烧写到flash中之后,跳转到app的中断....

的头像 单片机爱好者 发表于 03-30 15:58 ? 155次阅读
STM32_IAP详解(有代码,有上位机)

stm32如何制作一个读取U盘文件系统的工程

发表于 03-30 15:29 ? 271次阅读
stm32如何制作一个读取U盘文件系统的工程

STM32内存管理以及STM32中的堆栈

这个是MDK编译之后能够得到的每个段的大小,也就能得到占用相应的FLASH和RAM的大小,但是还有两....

的头像 嵌入式ARM 发表于 03-29 13:45 ? 322次阅读
STM32内存管理以及STM32中的堆栈

基于stm32的PWM输出呼吸灯(包括stm32呼吸灯代码)

本文主要介绍了基于stm32的pwm呼吸灯设计与实现。使用定时器来控制I/O口输出PWM波形,从而驱....

的头像 沈丹 发表于 03-28 16:23 ? 324次阅读
基于stm32的PWM输出呼吸灯(包括stm32呼吸灯代码)

STM32学习—如何选择各个电路部分的主要芯片

最小系统:考虑到小车的主控板可以作为今后做四轴或其他更高级的机器人的基础电路,所以主控选择了STM3....

的头像 玩转单片机 发表于 03-27 09:59 ? 403次阅读
STM32学习—如何选择各个电路部分的主要芯片

STM32片内FLASH被异常改写的问题分享

到此问题毫无进展,只好求助ST芯片设计人员做进一步确认,看看芯片是否真的坏了。同时,又请客户的硬件工....

的头像 ST MCU 信息交流 发表于 03-26 11:24 ? 272次阅读
STM32片内FLASH被异常改写的问题分享

STM32的存储器映射详解

存储器映射是指把芯片中或芯片外的FLASH,RAM,外设,BOOT,BLOCK等进行统一编址。

的头像 MCU开发加油站 发表于 03-23 15:24 ? 333次阅读
STM32的存储器映射详解

IAR在STM32的配置方法

FWLib-用来存放所需固件库的头文件;2).StartUp-用来存放STM32的启动代码,添加co....

的头像 MCU开发加油站 发表于 03-20 15:52 ? 333次阅读
IAR在STM32的配置方法

(纯干货)使用STM32测量频率和占空比的几种方法

本文详细介绍了使用STM32测量频率和占空比的几种方法。

的头像 单片机爱好者 发表于 03-13 15:43 ? 785次阅读
(纯干货)使用STM32测量频率和占空比的几种方法

用STM32测量频率和占空比的几种方法

在内存复制过程中,面对大数据量的转移时利用DMA。所以,我们使用输入捕获事件触发DMA来搬运寄存器而....

的头像 玩转单片机 发表于 03-13 10:02 ? 1544次阅读
用STM32测量频率和占空比的几种方法

stm32使用中出现的警告

使用keill编写了一个程序 ? ?如下:? ??uint8_t Count_Init(uint16....

发表于 03-09 09:45 ? 72次阅读
stm32使用中出现的警告

基于STM32的三轴数字罗盘HMC5883L模块的测试方案

最近买了个数字罗盘模块,调通后发现很不错,非常灵敏,测试的时候精度在1°以内。连续测量模式下,最快测....

发表于 03-08 08:40 ? 268次阅读
基于STM32的三轴数字罗盘HMC5883L模块的测试方案

意法半导体的新STM32让物联网设备快速连接云服务

意法半导体的新STM32探索套件简化移动网至云端连接,并提供免费试用的第三方服务,让物联网设备能够通....

发表于 03-02 16:44 ? 344次阅读
意法半导体的新STM32让物联网设备快速连接云服务

一文了解stm32使用DMA模块的相关操作

CPU最重要的工作室进行数据运算,从加减乘除到一些高级的运算,包括浮点、积分、微分、FFT等。CPU....

的头像 MCU开发加油站 发表于 02-27 11:18 ? 3340次阅读
一文了解stm32使用DMA模块的相关操作

关于STM32的 一个TIM1 的PWM程序和PWM简单使用

高级定时器与通用定时器比较类似,下面是一个TIM1 的PWM 程序,TIM1是STM32唯一的高级定....

发表于 02-24 14:39 ? 516次阅读
关于STM32的 一个TIM1 的PWM程序和PWM简单使用

STM32定时器产生PWM彻底应用

这次学习STM32花了很长时间,一个礼拜多,也有颇多收获,学习过程也有颇多曲折。这次的任务是:用ST....

发表于 02-11 11:26 ? 418次阅读
STM32定时器产生PWM彻底应用

STM32基础PWM输出

目的:基础PWM输出,以及中断配合应用。输出选用PB1,配置为TIM3_CH4,是目标板的LED6控....

发表于 02-10 16:47 ? 196次阅读
STM32基础PWM输出

STM32的GPIO输入编程实例之读取按键状态

按键的一端与STM32的GPIO(PH15)相连,另外一端接地,且PH15外接一个1K电流大小的上拉....

的头像 畅学单片机 发表于 02-10 11:08 ? 950次阅读
STM32的GPIO输入编程实例之读取按键状态

stm32寄存器版矩阵键盘库函数(附详细注释)

新系列采用LQFP64、LQFP100和LFBGA100三种封装,不同的封装保持引脚排列一致性,结合....

发表于 02-09 11:48 ? 179次阅读
stm32寄存器版矩阵键盘库函数(附详细注释)

stm32矩阵键盘原理图及程序介绍

STM32F0 系列产品基于超低功耗的 ARM Cortex-M0 处理器内核,整合增强的技术和功能....

的头像 beanxyy 发表于 02-09 11:30 ? 1170次阅读
stm32矩阵键盘原理图及程序介绍

STM32的GPIO输出编程实例之点亮三色LED

本实验通过STM32的三个GPIO口驱动三色LED的三个通道,将GPIO设置为推挽输出模式,采用灌电....

的头像 畅学单片机 发表于 02-07 11:14 ? 2045次阅读
STM32的GPIO输出编程实例之点亮三色LED

串口通信协议stm32

串口通信指串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用....

发表于 02-01 16:22 ? 302次阅读
串口通信协议stm32

基于STM32实现孤立词语音识别系统

语音识别是机器通过识别和理解过程把人类的语音信号转变为相应文本或命令的技术,其根本目的是研究出一种具....

发表于 01-31 19:23 ? 467次阅读
基于STM32实现孤立词语音识别系统

一款基于stm32的毕业设计方案

设计选用STM32单片机作控制器,设计温度单反馈的控制系统,对电加热水器内水的温度进行控制。通过PT....

发表于 01-29 14:22 ? 981次阅读
一款基于stm32的毕业设计方案

基于stm32的电子秤方案大全(二款stm32的电子秤设计方案)

 电子秤(英文名:electronic balance)是衡器的一种,是利用胡克定律或力的杠杆平衡原....

发表于 01-29 12:05 ? 700次阅读
基于stm32的电子秤方案大全(二款stm32的电子秤设计方案)

基于stm32的8m晶振不起振的原因解析

晶振不起振原因分析: (1) PCB板布线错误; (2) 单片机质量有问题; (3....

的头像 畅学单片机 发表于 01-26 15:41 ? 1762次阅读
基于stm32的8m晶振不起振的原因解析

提供多主机功能,STM32的I2C通信简析

在传输数据的时候,SDA线必须在时钟的高电平周期保持稳定,SDA的高或低电平状态只有在SCL 线的时....

的头像 MCU开发加油站 发表于 01-26 09:37 ? 3242次阅读
提供多主机功能,STM32的I2C通信简析

基于STM32的高性能低功耗的中文人机界面系统

本文选用了意法半导体公司基于ARM最新Cortex—M3内核的STM32F103RB作为主控芯片,通....

发表于 01-25 22:53 ? 387次阅读
基于STM32的高性能低功耗的中文人机界面系统

基于STM32F103的水动力测控系统设计的解决方案

测控系统是水动力实验中的重要测试设备。在实验中有压力、拉力、加速度等物理量通过传感器转换成电压值,需....

发表于 01-25 05:40 ? 302次阅读
基于STM32F103的水动力测控系统设计的解决方案

介绍如何通过意法的STM32 MCU实现用DMA完成多通道的AD采样功能

在嵌入式产品中有时候需要实现对外部的模拟量进行采样处理和记录,而这就需要使用到ADC功能,将外部的模....

的头像 贸泽电子设计圈 发表于 01-24 15:41 ? 1501次阅读
介绍如何通过意法的STM32 MCU实现用DMA完成多通道的AD采样功能

高集成度编程工具软件STM32代码烧录编程实战

如今ST推出了新的高集成度编程工具软件STM32CubeProgrammer,以后就不用这么麻烦了,....

的头像 ST MCU 信息交流 发表于 01-23 09:22 ? 2014次阅读
高集成度编程工具软件STM32代码烧录编程实战

STM32F407总线存储框架及应用设计

在使用过程中发现DMA1无法把GPIO的IDR数据传输到内存,调试过程中出现DMA1的数据流传输错误....

的头像 STM32单片机 发表于 01-22 09:22 ? 2417次阅读
STM32F407总线存储框架及应用设计

使用STM32快速开发AliOS Things硬件与软件环境

AliOS Things 是 AliOS 家族旗下的、面向 IoT 领域的、轻量级物联网嵌入式操作系....

的头像 STM32单片机 发表于 01-22 09:17 ? 2378次阅读
使用STM32快速开发AliOS Things硬件与软件环境

STM32调试SP3485技术总结

本文主要对STM32调试SP3485技术总结。使用的STM32芯片是STM32F103RB,使用的资....

发表于 01-17 15:56 ? 334次阅读
STM32调试SP3485技术总结

STM32的调试方式、更新程序、仿真以及补救措施

STM32支持JTAG和SWD两种调试方式,且默认状态下这两种调试功能都是开启的。

的头像 贸泽电子设计圈 发表于 01-17 14:55 ? 1204次阅读
STM32的调试方式、更新程序、仿真以及补救措施

用stm32控制4位数码管_stm32控制共阴数码管

本文主要介绍了stm32控制4位共阳数码管输出计数程序设计和stm32控制共阴数码管程序设计。首先我....

发表于 01-16 17:07 ? 815次阅读
用stm32控制4位数码管_stm32控制共阴数码管