ARM嵌入式学习笔记(6)按键外部中断

ARM嵌入式学习笔记(6)按键外部中断

按键原理图

开发板一共有两个按键,其中一个为复位按键,另一个为用户自定义按键,如图所示。当按键未按下时,引脚将被上拉电阻钳位在高电平;当按键按下时引脚将直连GND,处于低电平。在这里插入图片描述

按键软件消抖

首先来介绍一下按键输入的抖动问题,由于按键的机械结构具有弹性,按下时开关不会立刻接通,断开时也不会立刻断开,这就导致按键的输入信号在按下和断开时都会存在抖动,如果不先将抖动问题进行处理,则读取的按键信号可能会出现错误。为了消除这一问题,可以通过软件消抖和硬件消抖两种方式来实现,本节介绍软件滤波的实现方法。软件滤波的思想非常简单,抖动产生在按键按下和松开的两个边沿时刻,也叫下降沿(电平从高到低)和上升沿(电平从低到高)时刻,所以只需要在边沿时进行延时,等到按键输入已经稳定再进行信号读取即可。一般采用软件消抖时,会进行 20ms 的延时,示波器采集按键波形如图所示。在这里插入图片描述

外部中断

外部中断通常是 GPIO 的电平跳变引起的中断。在 stm32 中,每一个 GPIO 都可以作为外部中断的触发源,外部中断一共有 16 条线,对应着 GPIO 的 0-15 引脚,每一条外部中断都可以与任意一组的对应引脚相连,但不能重复使用。例如外部中断 Line0 可以和 PA0,PB0,PC0 等任意一条 0 号引脚相连,但如果已经和 PA0 相连,就不能同时和PB0,PC0其他引脚相连。
外部中断支持 GPIO 的三种电平跳变模式,如下所示:
上升沿中断:当 GPIO 的电平从低电平跳变成高电平时,引发外部中断。
下降沿中断:当 GPIO 的电平从高电平跳变成低电平时,引发外部中断。
上升沿和下降沿中断:当 GPIO 的电平从低电平跳变成高电平和从高电平跳变成低电平时,都能引发外部中断。

程序配置

在这里插入图片描述
在CubeMX中选择GPIO的中断功能,然后在NVIC中打开EXIT13
在这里插入图片描述
在这里插入图片描述
然后在GPIO配置中,选择外部中断,上升或者下降沿触发
在这里插入图片描述
每当产生外部中断时,程序首先会进入外部中断服务函数。每当产生外部中断时,程序首先会进入外部中断服务函数。在 stm32h5xx_it.c 中,可以找到
函数 EXTI13_IRQHandler,它通过调用函数 HAL_GPIO_EXTI_IRQHandler 对中断类型进行判断,并对涉及中断的寄存器进行处理,在处理完成后,它将调用中断回调函数,在中断回调函数中编写在此次中断中需要执行的功能。
在这里插入图片描述

在这里插入图片描述
我们在中断回调函数中进行LED灯的电平翻转
在这里插入图片描述
将代码烧录后,在HAL_GPIO_EXIT_Falling_Callback中打个断点,连接我们的开发板进入Debug模式,按下按钮时在这里插入图片描述
可以看到这个回调函数被触发,相应的电平也会被翻转。

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值