STM32学习——EXTI外部中断
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外部中断相关推荐
- STM32(五)——EXTI外部中断
文章笔记源于--江科大自化协的视频 一. 中断系统 中断 : 在主程序运行过程中,出现特定的中断触发条件,使得CPU暂停当前正在运行的程序,而去处理中断程序,完成后,又返回原来被暂停的位置继续工作 中 ...
- STM32笔记——EXTI外部中断
目录 一.概述 二.主要外设介绍 2.1 AFIO复用IO口 2.2 EXTI简介 EXTI框图: 2.3 NVIC中断优先级分组 三.EXTI外部中断整体结构 四.实验程序 4.1 对射式红外传感器 ...
- 面向应用学习stm32(4)-EXTI外部中断
前导:本文的目的与,意在于面向应用的学习单片机,故不会涉及太多的原理知识,例如寄存器之类的. 主要目的在于面向应用的学习单片机,学会单片机的基础用法,开发板采取野火的指南者f103. 作者大二小白,写 ...
- STM32学习:外部中断
文章目录 一.STM32外部中断 1.基本知识 2.中断设计流程 二.硬件配置 1.proteus仿真电路搭建 2.CubeMX硬件配置 3.配置中断 1.寻找中断虚函数 2.中断回调函数编写 3.p ...
- STM32学习笔记(三)丨中断系统丨EXTI外部中断(对射式红外传感器计次、旋转编码器计次)
本篇文章包含的内容 一.中断系统 1.1 中断的定义 1.2 中断优先级 1.3 中断的嵌套 1.4 STM32中的中断系统 1.4.1 STM32的中断资源 1.4.2 嵌套中断向量控制器 NVIC ...
- STM32中断—EXTI外部中断
5. 中断 本文来自于<STM32--江科大>的笔记整理. 中断系统 中断:在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处 ...
- STM32 EXTI外部中断/事件
一.EXTI外部中断/事件功能框图 1.中断线路:①-②-③-④-⑤ ①输入线:有19个中断/事件输入线(联网型有20个),通过寄存器将这些输入线设置为任意一个GPIO. ②边沿检测电路:选择上升沿触 ...
- 28.EXTI外部中断原理与配置
EXTI外部中断原理与配置 参考资料 开发板配套资料 <STM32Fx开发指南-HAL库版本>-第x章 外部中断实验 STM32Fxxx官方资料: <STM32Fxx中文参考手册&g ...
- 02、【江科大自化协stm32F103c8t6】笔记之【入门32单片机及EXTI外部中断初始化参数配置】
----------接着上一篇笔记写 四.返回值函数 五.EXTI外部中断 1.配置RCC 2.配置GPIO 3.配置AFIO 4.配置EXTI 5.配置NVIC 中断函数 四.返回值函数 uint8 ...
最新文章
- 算法笔记_157:算法提高 c++_ch02_01(Java)
- full GC排查案例
- 小米手环导出心率_这个功能有意思,小米11支持指纹检测心率,没有手环也不怕...
- 在ASP.NET中清除页面状态
- h3c交换机堆叠(IRF)配置三步完成
- 用PLSQL解决世界最难数独(不到1毫秒)
- 【Unity3D】分离路面导航
- 【2020 Java基础快速学习路线】写了很久,这是一份最适合普通大众、非科班的路线
- static关键字分析(含解析图)
- 多步攻击场景构建和攻击链提取方法
- 三星A5显示服务器未响应,三星A5手机死机了 屏幕一直亮着 按什么键都没反应==求解答...
- 共享姨妈巾出来了成为共享家族中的热门产品
- 背景颜色渐变 background
- android 蓝牙传输到苹果手机,使用蓝牙文件交换将文件从Android传输到Mac | MOS86
- 进阶训练赛(四)题解
- docker快速部署
- mybatis中type-aliases-package的用法
- iMonitor 365 远程监控软件怎样管理员工电脑?
- 美国网红python微博_GitHub - dataabc/weiboPR: 用python判断微博用户的影响力
- GIS坐标系统(二):地理坐标
热门文章
- 2021年甘肃省高考成绩一分一段表查询,2021年甘肃高考一分一段表公布查询时间 什么时候出...
- Python保存dict字典类型数据到Mysql,并自动创建表与列
- python使用pillow下载网络图片到本地预览
- python旋转matplotlib绘制的三维图
- 用c语言实现循环神经网络,浅谈LSTM循环神经网络
- php 条码打印控件,jQuery插件jquery-barcode实现条码打印的方法
- uniapp 子组件 props拿不到数据_谈一谈使用 webpack 开发时,Vue 组件之间的数据传递...
- php查询mongo数据库效率,2000000万数据库 MongoDB 查询速度慢
- java mongodb 聚合函数_MongoDB的聚合函数 Aggregate
- 20175126《Java程序设计》第四周学习总结