0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

esp32按键中断消抖库

分享:

在 ESP32 开发中,使用按键中断时通常需要消抖处理(Debounce)。以下是常见的软件消抖实现方法及推荐库:


1. 使用 Bounce2 库 (推荐)

Arduino 社区广泛使用的按键消抖库,支持 ESP32:

  • 安装方法:Arduino IDE 中搜索并安装 Bounce2 库(作者:Thomas Ouellet Fredericks)
  • 示例代码
    
    #include <Bounce2.h>

define BUTTON_PIN 0 // 假设按钮接在 GPIO0

Bounce debouncer = Bounce();

void setup() { pinMode(BUTTON_PIN, INPUT_PULLUP); debouncer.attach(BUTTON_PIN); debouncer.interval(25); // 设置消抖时间(毫秒) }

void loop() { debouncer.update(); // 必须调用 if (debouncer.fell()) { // 检测下降沿(按下动作) // 处理按键按下事件 } }


---

### 2. **手动实现消抖逻辑**
若不想依赖库,可通过以下方式实现:
```cpp
#define BUTTON_PIN 0
volatile bool buttonPressed = false;
unsigned long lastInterruptTime = 0;

void IRAM_ATTR handleButtonInterrupt() {
  if (millis() - lastInterruptTime > 50) { // 50ms 消抖间隔
    buttonPressed = true;
  }
  lastInterruptTime = millis();
}

void setup() {
  pinMode(BUTTON_PIN, INPUT_PULLUP);
  attachInterrupt(BUTTON_PIN, handleButtonInterrupt, FALLING);
}

void loop() {
  if (buttonPressed) {
    buttonPressed = false;
    // 处理按键事件
  }
}

3. 硬件消抖(补充)

在软件基础上可结合硬件:

  • 在按钮引脚并联 0.1μF 电容,形成 RC 低通滤波电路。

注意事项:

  1. 中断服务函数(ISR) 必须简短,避免使用 delay() 或复杂逻辑。
  2. ESP32 所有 GPIO 引脚(除 6~11 外)均支持中断。
  3. 消抖时间建议在 20-50ms 之间,根据实际按钮质量调整。

优化建议:

  • 使用 FreeRTOS 任务通知或队列,将中断事件传递到主循环处理。
  • 多按钮场景可使用 Array of Bounce Objects 简化代码。

以上方法可有效解决 ESP32 按键抖动问题,确保稳定触发!

MCU按键问题

按键问题机械按键是必须的,1、延时//按键处理函数//返回按键值//mode:0,不支持连续按;1,支持连续按;//0,没有任何按键按下//1,KEY_KEY_3按下 KEY_3//注意

维生素B2 2021-11-04 06:37:08

stm32下按键外部中断如何进行有效的

讨论一下stm32下按键外部中断如何进行有效的工程的代码是直接使用stm32 cubeMX进行配置生成的,下面就一起讨论吧。1. 在中断处理服务函数中注释清除中断标志的语句,防止按键抖动而不断

尼克wo 2021-08-13 07:03:35

为什么要进行按键

按键通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而作的措施就是按键

2022-04-19 14:55:06

[esp32教程]2、按键中断

基于Ubuntu,利用esp-idf进行esp32的教学

2023-05-05 09:04:04

基于尖峰脉冲的按键

按键通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而作的措施就是按键

2019-11-20 07:09:00

按键的软件和硬件方法

采用锅仔片式按键测量波形。按键按下与抬起的部分都出现抖动,大致时间10ms左右。为了防止按键误按或者重复识别,必须要按键处理。按键有软件方法和硬件方法。

2023-03-01 10:53:44

如何在FPGA中实现按键

在FPGA(现场可编程门阵列)中实现按键是一个重要的设计环节,特别是在处理用户输入时,由于物理按键的机械特性和电气特性,按键在按下和释放的瞬间会产生抖动现象,这种抖动可能导致系统错误地识别为多次

2024-08-19 18:15:59

按键及原理是什么

浅谈:在设计单片机按键输入的时候,进行按键是防止按键输入被CPU误读多次的必要手段。一、按键抖动通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关

denxinan 2021-07-21 06:02:48

51单片机_独立按键延时

51单片机_独立按键延时_独立按键定时器_矩阵键盘定时器1.独立按键_延时//独立按键_延时#include#define uchar unsigned char#define

shawon 2021-07-16 13:56:14

按键电路的实现方式

按键通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而作的措施就是按键

2022-08-29 11:25:22

按键的硬件电路原理详解

按键通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而作的措施就是按键

2023-02-02 09:42:33

STM32单片机按键和FPGA按键的相关资料分享

写在前面:STM32单片机按键和FPGA按键大全按键:由上图可以看出理想波形与实际波形之间是有区别的,实际波形在按下和释放的瞬间都有抖动的现象,抖动时间的长短和按键的机械特性有关,一般为

云汉007 2022-01-18 06:39:59

为什么要进行按键按键抖动的原理 按键的方法

按键通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。

2024-02-17 17:07:00

按键都有哪些处理方式?

按键都有哪些处理方式除了硬件电路用软件怎么实现

felixbury 2023-11-01 07:06:20

按键延时的方法和目的分别是什么

  按键的延时是初学单片机的必经之路,因为只要是机械开关所传递的信号,都会存在波动,有时这些波动是"致命"的,所以消除其影响就是一门手艺了。硬件有其优点,同样的也有不方便

youyoulan 2022-01-17 06:26:25

「正点原子Linux连载」第十九章定时器按键实验

简单,但是直接用延时函数来实现会浪费CPU性能,因为在延时函数里面CPU什么都做不了。如果按键使用中断的话更不能在中断里面使用延时函数,因为中断服务函数要快进快出!本章我们学习如何使用定时器来实现

正点原子运营官 2019-12-26 11:12:13

基于FPGA实现按键处理

引言: 按键在电子产品中经常用到,由于按键的机械特性,按键在闭合或松开的瞬间伴随着一连串的抖动,这样的抖动将直接影响设计系统的稳定性。因此,必须对抖动进行处理。本文介绍如何在FPGA中实现按键处理。

2024-10-24 14:54:42

ESP32-WROOM-32-N8

ESP32-WROOM-32-N8

2023-04-06 23:33:39

ESP32-S0WD

ESP32-S0WD

2023-03-28 13:10:29

ESP32-S3-WROOM-1-N8R8

ESP32-S3-WROOM-1-N8R8

2023-03-29 21:34:19

ESP32-C3-MINI-1-H4

ESP32-C3-MINI-1-H4

2023-03-29 16:30:23

ESP32-WROOM-32U-N8

ESP32-WROOM-32U-N8

2023-03-29 22:42:58

请问怎样去设计一种按键电路?

按键电路结构与电路模型按键电路数学模型按键电路瞬态分析

pdsoa 2021-04-29 06:13:08

按键/开关量信号监测实现方案

关于按键或者开关量信号监测,可以参考本公众号的另外一篇原创文章:按键常用的软硬件方法。在该文章中介绍了两种软件延时的方式。但也都各有缺点。

2023-09-19 11:35:22

如何按键的定时器

如何按键的定时器

预言者J 2021-10-18 09:00:23

有什么方法去实现按键

怎样用软件即程序来实现按键呢?有什么方法去实现按键呢?

安德森大 2021-12-15 07:25:04

BJ-EPM240学习板:按键实验

按键通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,为了不产生这种现象而作的措施就是按键

2019-12-23 07:09:00

介绍独立按键方法

目录按键介绍按键方法按键检测原理C51例程欢迎加QQ及邮件交流按键介绍按键是一种电子开关,使用时轻轻按开关按钮就可使开关接通,当松开手时,开关断开。通常的按键所用开关为机械弹性开关,当机械触点

HTSX 2022-01-14 07:49:46

ESP32-S3-WROOM-1U-N4

ESP32-S3-WROOM-1U-N4

2023-04-06 23:08:04

ESP32-S3-MINI-1-N8

ESP32-S3-MINI-1-N8

2023-04-06 23:31:21

加载更多
相关标签