EXTI简介

EXTI可以实现对外部输入信号的上升沿检测和下降沿的检测。EXTI可以实现对每个中断/事件线进行单独配置,可以单独配置为中断或者事件,以及触发事件的属性。

可以看到EXTI一共有20条信号线,即可同时检测来自20路的中断请求。

代码实现

(1)首先配置GPIO初始化结构体
GPIO要配置为浮空输入

void Key_Config(void)
{GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC,ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13;GPIO_Init(GPIOC,&GPIO_InitStructure);
}

(2)配置NVIC中断控制器

static void NVIC_Configuration(void)
{NVIC_InitTypeDef NVIC_InitStructure;/* 配置NVIC为优先级组1 */NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);/* 配置中断源:按键1 */NVIC_InitStructure.NVIC_IRQChannel =EXTI0_IRQn;/* 配置抢占优先级 */NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;/* 配置子优先级 */NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;/* 使能中断通道 */NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);/* 配置中断源:按键2,其他使用上面相关配置 */  NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;NVIC_Init(&NVIC_InitStructure);
}

(3)配置EXTI初始化结构体
记得打开时钟!

void EXTI_Key_Config(void)
{EXTI_InitTypeDef EXTI_InitStructure;/* 配置 NVIC 中断*/NVIC_Configuration();Key_Config();RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);/* 选择EXTI的信号源 */GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); EXTI_InitStructure.EXTI_Line = EXTI_Line0;/* EXTI为中断模式 */EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;/* 上升沿中断 */EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;/* 使能中断 */ EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStructure);/* 选择EXTI的信号源 */GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource13); EXTI_InitStructure.EXTI_Line = EXTI_Line13;/* EXTI为中断模式 */EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;/* 下降沿中断 */EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;/* 使能中断 */  EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStructure);
}

(4)编写中断服务函数

void EXTI0_IRQHandler(void)
{//确保是否产生了EXTI Line中断if(EXTI_GetITStatus(EXTI_Line0) != RESET) {// LED1 取反if(GPIO_ReadOutputDataBit(GPIOC,GPIO_Pin_2))GPIO_ResetBits(GPIOC,GPIO_Pin_2);elseGPIO_SetBits(GPIOC,GPIO_Pin_2);//清除中断标志位EXTI_ClearITPendingBit(EXTI_Line0);     }
}

Reference:野火教程

STM32学习——EXTI外部中断相关推荐

  1. STM32(五)——EXTI外部中断

    文章笔记源于--江科大自化协的视频 一. 中断系统 中断 : 在主程序运行过程中,出现特定的中断触发条件,使得CPU暂停当前正在运行的程序,而去处理中断程序,完成后,又返回原来被暂停的位置继续工作 中 ...

  2. STM32笔记——EXTI外部中断

    目录 一.概述 二.主要外设介绍 2.1 AFIO复用IO口 2.2 EXTI简介 EXTI框图: 2.3 NVIC中断优先级分组 三.EXTI外部中断整体结构 四.实验程序 4.1 对射式红外传感器 ...

  3. 面向应用学习stm32(4)-EXTI外部中断

    前导:本文的目的与,意在于面向应用的学习单片机,故不会涉及太多的原理知识,例如寄存器之类的. 主要目的在于面向应用的学习单片机,学会单片机的基础用法,开发板采取野火的指南者f103. 作者大二小白,写 ...

  4. STM32学习:外部中断

    文章目录 一.STM32外部中断 1.基本知识 2.中断设计流程 二.硬件配置 1.proteus仿真电路搭建 2.CubeMX硬件配置 3.配置中断 1.寻找中断虚函数 2.中断回调函数编写 3.p ...

  5. STM32学习笔记(三)丨中断系统丨EXTI外部中断(对射式红外传感器计次、旋转编码器计次)

    本篇文章包含的内容 一.中断系统 1.1 中断的定义 1.2 中断优先级 1.3 中断的嵌套 1.4 STM32中的中断系统 1.4.1 STM32的中断资源 1.4.2 嵌套中断向量控制器 NVIC ...

  6. STM32中断—EXTI外部中断

    5. 中断 本文来自于<STM32--江科大>的笔记整理. 中断系统 中断:在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处 ...

  7. STM32 EXTI外部中断/事件

    一.EXTI外部中断/事件功能框图 1.中断线路:①-②-③-④-⑤ ①输入线:有19个中断/事件输入线(联网型有20个),通过寄存器将这些输入线设置为任意一个GPIO. ②边沿检测电路:选择上升沿触 ...

  8. 28.EXTI外部中断原理与配置

    EXTI外部中断原理与配置 参考资料 开发板配套资料 <STM32Fx开发指南-HAL库版本>-第x章 外部中断实验 STM32Fxxx官方资料: <STM32Fxx中文参考手册&g ...

  9. 02、【江科大自化协stm32F103c8t6】笔记之【入门32单片机及EXTI外部中断初始化参数配置】

    ----------接着上一篇笔记写 四.返回值函数 五.EXTI外部中断 1.配置RCC 2.配置GPIO 3.配置AFIO 4.配置EXTI 5.配置NVIC 中断函数 四.返回值函数 uint8 ...

最新文章

  1. 算法笔记_157:算法提高 c++_ch02_01(Java)
  2. full GC排查案例
  3. 小米手环导出心率_这个功能有意思,小米11支持指纹检测心率,没有手环也不怕...
  4. 在ASP.NET中清除页面状态
  5. h3c交换机堆叠(IRF)配置三步完成
  6. 用PLSQL解决世界最难数独(不到1毫秒)
  7. 【Unity3D】分离路面导航
  8. 【2020 Java基础快速学习路线】写了很久,这是一份最适合普通大众、非科班的路线
  9. static关键字分析(含解析图)
  10. 多步攻击场景构建和攻击链提取方法
  11. 三星A5显示服务器未响应,三星A5手机死机了 屏幕一直亮着 按什么键都没反应==求解答...
  12. 共享姨妈巾出来了成为共享家族中的热门产品
  13. 背景颜色渐变 background
  14. android 蓝牙传输到苹果手机,使用蓝牙文件交换将文件从Android传输到Mac | MOS86
  15. 进阶训练赛(四)题解
  16. docker快速部署
  17. mybatis中type-aliases-package的用法
  18. iMonitor 365 远程监控软件怎样管理员工电脑?
  19. 美国网红python微博_GitHub - dataabc/weiboPR: 用python判断微博用户的影响力
  20. GIS坐标系统(二):地理坐标

热门文章

  1. 2021年甘肃省高考成绩一分一段表查询,2021年甘肃高考一分一段表公布查询时间 什么时候出...
  2. Python保存dict字典类型数据到Mysql,并自动创建表与列
  3. python使用pillow下载网络图片到本地预览
  4. python旋转matplotlib绘制的三维图
  5. 用c语言实现循环神经网络,浅谈LSTM循环神经网络
  6. php 条码打印控件,jQuery插件jquery-barcode实现条码打印的方法
  7. uniapp 子组件 props拿不到数据_谈一谈使用 webpack 开发时,Vue 组件之间的数据传递...
  8. php查询mongo数据库效率,2000000万数据库 MongoDB 查询速度慢
  9. java mongodb 聚合函数_MongoDB的聚合函数 Aggregate
  10. 20175126《Java程序设计》第四周学习总结