【ESP32-IDF+VScode】开发笔记(二):按键输入——按键控制LED状态


前言

按键输入是各类MCU的GPIO输入开发学习的常用例程。本文将通过【ESP32按键控制LED(非中断实现)】这个例程来学习使用ESP32的GPIO输入,了解GPIO输入功能配置、操作的相关函数。


目标

  • 熟悉ESP-IDF+VScode开发环境
  • 了解按键消抖原理
  • 学习ESP32 GPIO输入相关配置方法、函数
  • 创建一个按键的工程,并编程实现按键控制LED亮灭

一、按键消抖

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

按键触发时其理想工作波形和实际工作波形如下图所示,在按键闭合和断开时(即区域①和区域③)会出现抖动,使得输入GPIO时无法检测其有效电平,因此需要进行消抖,使得输入GPIO的电平为有效电平(区域②)。对于按键消抖的方法,主要有软件法硬件法两类,在已经设计好的电路中,常采用软件法进行消抖,即通过软件编程,添加一个延时,在检测GPIO电平时,将区域①或区域②延时过去,仅保留有效电平,本文采用的就是软件消抖的方式。

图1

二、ESP-IDF GPIO输入相关配置

1.GPIO输入初始化配置

官方配置内容如下

struct gpio_config_t	//GPIO参数初始化配置结构体
	//结构体成员
	uint64_t pin_bit_mask			//GPIO引脚配置
	gpio_mode_t mode				//GPIO模式配置:有输入和输出两种,若配置输出模式,设置:GPIO_MODE_INPUT
	gpio_pullup_t pull_up_en		//GPIO上拉输入配置,根据需求设置,若使能,设置:GPIO_PULLUP_ENABLE
	gpio_pulldown_t pull_down_en	//GPIO下拉输入配置,根据此需求设置,若使能,设置:GPIO_PULLDOWN_ENABLE
--------------------------------------------------------------------------------------------------------------
esp_err_t gpio_config(const gpio_config_t *pGPIOConfig)
//GPIO初始化函数,初始化上述结构体

2.GPIO输入操作函数

官方提供的相关操作函数如下:

int gpio_get_level(gpio_num_t gpio_num)
//读取GPIO电平
/*
参数:	gpio_num -- GPIO number. If you want to get the logic level of e.g. pin GPIO16,
		gpio_num should be GPIO_NUM_16 (16);
返回:	0 the GPIO input level is 0
		1 the GPIO input level is 1
*/

对于GPIO的相关配置和操作常用的就是上述介绍的,更详细的内容可参考官方ESP-IDF文档(v5.3版本)自行学习,若有疑惑可在评论区探讨。

三、按键KEY初始化配置

根据前文对GPIO输入相关配置介绍,配置按键GPIO如下

//按键初始化配置
void key_init(void)
{
   
   
    gpio_config_t key_pin_config;	//定义按键初始化结构体
    key_pin_config.pin_bit_mask = 1ULL << KEY_IO;	//配置按键引脚,本文按键链接的是GPIO0,以宏定义的形式赋值给KEY_IO
    key_pin_config.mode = GPIO_MODE_INPUT;	//配置GPIO为输入模式
    key_pin_config.pull_u
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乔乔同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值