当前位置: 首页 > article >正文

【STM32】外部中断

当程序正常运行执行main函数,此时如果外部中断来了,执行外部中断函数,实现相应的功能,然后就可以回到main.
一般stm32芯片每个引脚都有自己的外部中断,但是为了限制,会有一个中断线,对应一个中断线执行一个外部中断函数
PA0,PB0,PC0为中断线0

PA1,PB1,PC1为中断线1

我们实现PA7,按键1按下触发中断,然后使LED1(PB10)翻转

配置stmcubemx和上一篇一样

1.配置GPIO

使用灯和按键,所以要配置GPIOA,GPIOB,以及GPIOA,GPIOB模式初始化。
在这里插入图片描述
MY_LED声明
在这里插入图片描述

设置GPIOB
在这里插入图片描述

2.设置中断优先级分组

其实中断优先级分组已经设置好,HAL_Init();
在这里插入图片描述

在这里插入图片描述
这个函数就是设置中断优先级组的.
在这里插入图片描述
默认有5个中断优先级分组,中断优先级分抢占优先级和响应优先级,不同的优先级分组,抢占,响应占比不一样.不一定NVIC_PRIORITYGROUP_4 的优先级就高,只能说明该分组抢占优先级的范围为0-15,看具体怎么设置,两个中断,如果抢占优先级相同的话,就比较响应优先级谁小,谁的优先级就高,如果一个的抢占优先级数值小的话,就直接不用比较响应优先级了,直接抢占优先级数值小的优先级就高.默认设置中断优先级组为4的话,说明四位都是抢占优先级位,没有响应优先级

3.设置优先级

在这里插入图片描述

HAL_NVIC_SetPriority();//设置优先级

因为我们使用的是PA7位实现中断,所以对应中断线7,
在这里插入图片描述
但是发现没有中断线7,这里人家是把中断线5-9放在一个里面,设置EXTI9_5IRQn
在这里插入图片描述

4.打开中断

HAL_NVIC_EnableIRQ(EXTI9_5_IRQn);  //打开中断

在这里插入图片描述

5.实现中断函数

在这里插入图片描述
在这里插入图片描述

找对应中断线的中断函数
在这里插入图片描述
中断函数1去调用中断函数2
在这里插入图片描述
但是真正的中断函数可以理解为需要我们重写这个函数,可以看一下定义
在这里插入图片描述
我们自己实现,实现灯的翻转
在这里插入图片描述

6.全部实现在.h声明

stm32f4xx_it.h
在这里插入图片描述
这个不用声明
在这里插入图片描述

gpio.h

在这里插入图片描述

7.main.c调用

在这里插入图片描述
在这里插入图片描述
但是我们发现下载之后按下按键后没有实现灯的翻转,这里的原因如下:
在这里插入图片描述
此时在处理中断函数,他的抢占优先级是0,响应优先级是0,而延迟函数去抖动使用的是滴答定时器,他使用的中断优先级是多少呢?我们可以在STMCUBEMX里面看
在这里插入图片描述
滴答定时器的抢占优先级为15,也就是最低级,他会阻塞等待该中断函数处理完,才能解除阻塞,
所以我们需要注释掉延时去抖动函数即可
在这里插入图片描述

8.演示


http://www.kler.cn/news/302560.html

相关文章:

  • 数据结构 - 栈
  • 多态(c++)
  • 怎样还原空白试卷?2024教你快速还原空白试卷的软件
  • Python 最小公倍数计算器:从基础到应用
  • 鸿蒙-沉浸式pc端失效
  • 深入理解全连接层:从线性代数到 PyTorch 中的 nn.Linear 和 nn.Parameter
  • Unity Shader实现简单的各向异性渲染(采用各向异性形式的GGX分布)
  • 优化销售流程:免费体验企元数智小程序合规分销系统!
  • Idea 2021.3 破解 window
  • vue3常见的bug 修复bug
  • 力扣每日一题:1372.二叉树中的最长交错路径
  • 腾讯云2024年数字生态大会开发者嘉年华(数据库动手实验)TDSQL-C初体验
  • 62. 不同路径
  • 户用光伏业务市场开发的步骤
  • 走进低代码报表开发(二):高效报表设计新利器
  • 基于SpringMVC的API灰度方案
  • SuperMap GIS基础产品FAQ集锦(20240911)
  • 使用AI大模型进行企业数据分析与决策支持
  • Redis 的标准使用规范之数据类型使用规范
  • MySQL总结(上)
  • 决策树(Decison Tree)—有监督学习方法、概率模型、生成模型、非线性模型、非参数化模型、批量学习
  • 如何测试你购买的IP的丢包率是否正常
  • 市场上便宜好用的量化交易软件-QMT!QMT系统函数之handlebar - 行情事件函数
  • Matlab simulink建模与仿真 第十一章(端口及子系统库)【下】
  • 力扣337-打家劫舍 III(Java详细题解)
  • mac安装swoole过程
  • 大模型的第一个杀手级应用场景出来了
  • SQL的优化和引擎有哪些
  • Win11 频繁蓝屏重启
  • GIS应届生不考研,不考公,不考编,未来要怎么安排?