ESP32 上下拉输入 无效

博客内容涉及在使用ESP-IDF编程时遇到的问题,即GPIO34到39不能配置为带有软件上拉或下拉的输入模式。这些引脚只能设置为输入,不支持内部上拉和下拉功能,导致信号随机。解决方案是更换其他GPIO引脚。该问题提醒开发者在使用特定GPIO时要注意其限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开始用35脚上拉输入

得到的信号都是随机的

后来找到了原因

GPIO34-39 can only be set as input mode and do not have software pullup or pulldown functions.

GPIO34-39 只能设置为输入模式,不具备内部上拉或下拉功能

GPIO & RTC GPIO - - — ESP-IDF 编程指南 release-v4.1 文档

之前只知道34-39只能输入,没想到还没有上下拉。

换其他引脚就好了

### ESP32 IDF 中 GPIO 配置为上拉输入的方法 在 ESP32 的 IoT Development Framework (IDF) 中,可以通过 `gpio_config` 函数来设置 GPIO 引脚的工作模式。为了将某个 GPIO 配置为上拉输入,需要指定其工作模式为输入模式 (`GPIO_MODE_INPUT`) 并启用内部上拉电阻。 以下是实现此功能的具体方法: #### 1. 使用 `gpio_config_t` 结构体定义配置参数 ESP-IDF 提供了一个结构体 `gpio_config_t` 来描述 GPIO 的初始化参数。该结构体的主要成员如下: - **pin_bit_mask**: 定义要操作的 GPIO 引脚掩码。 - **mode**: 设置引脚的操作模式(输入、输出等)。 - **pull_up_en**: 启用或禁用内部上拉电阻。 - **pull_down_en**: 启用或禁用内部下拉电阻。 - **intr_type**: 配置中断类型(如果不需要中断,则可以忽略此项)。 #### 2. 示例代码 下面是一个完整的示例程序,展示如何将 GPIO0 配置为带有内部上拉电阻的输入模式。 ```c #include "driver/gpio.h" void configure_gpio_input_pullup(void) { gpio_config_t io_conf; // Disable interrupt, set as input mode and enable pull-up resistor. io_conf.intr_type = GPIO_INTR_DISABLE; // 禁用中断 [^2] io_conf.mode = GPIO_MODE_INPUT; // 设置为输入模式 [^1] io_conf.pin_bit_mask = (1ULL << GPIO_NUM_0); // 只针对 GPIO0 进行配置 io_conf.pull_up_en = GPIO_PULLUP_ENABLE; // 启用上拉电阻 io_conf.pull_down_en = GPIO_PULLDOWN_DISABLE;// 禁用下拉电阻 [^1] // Configure the selected pin according to the configuration above. gpio_config(&io_conf); } ``` 上述代码片段展示了如何通过调用 `gpio_config()` 将 GPIO0 配置为具有内部上拉电阻的输入模式。其中的关键点在于设置了 `pull_up_en` 参数为 `GPIO_PULLUP_ENABLE`,从而启用了内部上拉电阻。 #### 3. 头文件说明 需要注意的是,在使用这些 API 前需包含相应的头文件: ```c #include "driver/gpio.h" ``` 这是 ESP-IDF 提供给开发者用于管理 GPIO 资源的核心库之一。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值