读出来值一直为0

rtc_gpio_get_level() 可以读 ,但它读的是 RTC IO 的"输入通路"电平(pad 实际电平经输入采样),不是你"刚写进去的输出寄存器值"。所以你遇到"能拉高/拉低,但读出来一直 0",最常见原因是:

1) 你把 RTC GPIO 配成了 输出-only,输入通路没开

很多芯片/版本里,RTC IO 方向如果是 RTC_GPIO_MODE_OUTPUT_ONLY,输入使能可能是关的 ,这时 rtc_gpio_get_level() 读到的就可能一直是 0。

✅ 解决:把方向设为 INPUT_OUTPUT(或至少 INPUT 打开)

复制代码

ESP_ERROR_CHECK(rtc_gpio_init(GPIO_NUM_3)); ESP_ERROR_CHECK(rtc_gpio_set_direction(GPIO_NUM_3, RTC_GPIO_MODE_INPUT_OUTPUT)); // 或:RTC_GPIO_MODE_INPUT_ONLY(如果你只想读) ESP_ERROR_CHECK(rtc_gpio_set_level(GPIO_NUM_3, 1)); ESP_LOGI(TAG, "lvl=%d", rtc_gpio_get_level(GPIO_NUM_3));

重点:别只调用 rtc_gpio_set_level(),要确保 rtc_gpio_init() + rtc_gpio_set_direction() 先做完。


2) 这个脚必须真的是 "RTC GPIO"

如果脚不是 RTC IO,rtc_gpio_get_level() 往往就读不到(常表现为固定值,比如 0)。

你已经打印了:

复制代码

rtc_gpio_is_valid_gpio(GPIO_NUM_3)

  • 如果它打印是 0 :那就别用 RTC 接口读这个脚,换 gpio_get_level() 或换一个 RTC IO 脚。

  • 如果是 1:继续看第 1/3 点。

你截图里用的是 GPIO_NUM_3,一般它是否 RTC 要看你具体芯片(S3/C3/C6 等不同)。


3) 你可能在"数字 GPIO 外设"和"RTC 外设"之间抢同一个脚

比如你之前 gpio_config() 把它配置成普通 GPIO,之后又用 rtc_gpio_*,有时会出现你"输出看着对,但 RTC 输入读不到/不更新"的怪相。

✅ 建议做法:

  • 要用 RTC 就 全套都用 RTC(init、direction、pull、level)

  • 或者你只是想读当前脚电平(不涉及深睡/RTC 域),直接用普通:

    复制代码

    gpio_set_level(GPIO_NUM_3, 1); int lvl = gpio_get_level(GPIO_NUM_3);


4) 记得检查返回值(你现在没看到错误)

rtc_gpio_set_level / rtc_gpio_init / rtc_gpio_set_direction 都会返回 esp_err_t。如果其中一步失败,你"以为设置成功了",读当然不对。

✅ 最快定位:

复制代码

ESP_ERROR_CHECK(rtc_gpio_init(GPIO_NUM_3)); ESP_ERROR_CHECK(rtc_gpio_set_direction(GPIO_NUM_3, RTC_GPIO_MODE_INPUT_OUTPUT)); ESP_ERROR_CHECK(rtc_gpio_set_level(GPIO_NUM_3, 1)); ESP_LOGI(TAG, "valid=%d lvl=%d", rtc_gpio_is_valid_gpio(GPIO_NUM_3), rtc_gpio_get_level(GPIO_NUM_3));


结论(按你描述"能设置但读永远 0")

90% 是方向用了 OUTPUT_ONLY / 输入没使能 ,把方向改成 RTC_GPIO_MODE_INPUT_OUTPUT 基本就能好了。

如果你把 rtc_gpio_is_valid_gpio(GPIO_NUM_3) 的日志值(0/1)和你芯片型号(ESP32-S3?)发我,我可以直接告诉你 GPIO3 在你这颗芯片上到底是不是 RTC IO,以及推荐用哪组脚最稳。

相关推荐
ITKEY_8 小时前
嵌入式ESP32初学踩坑记录
esp32
EatFan11 天前
全栈自造 Status Deck(四):硬件终于到了,从点亮屏幕到跑通第一个 Demo
单片机·物联网·esp32
攸尔的笔记本~14 天前
ESP32-C3的WIFI信号飘忽不定、连接不了
esp32·射频·硬件设计
乐鑫科技 Espressif16 天前
案例研究:基于 ESP32-C5 与 ESP RainMaker 构建符合 EN 18031 标准的 IoT 解决方案
esp32·乐鑫科技·rainmaker
jianqiang.xue18 天前
ESP-IDF保姆级入门41|产品级故障排查与稳定性优化全解:死机复位排查/内存泄漏定位/性能瓶颈分析/长期稳定性测试,掌握量产运维问题定位方法论
单片机·mcu·物联网·esp32
jianqiang.xue19 天前
ESP-IDF保姆级入门40|量产烧录与产线测试全解:批量烧录方案/校准流程/功能测试/不良分拣/产线追溯,掌握工业级量产交付全流程
单片机·物联网·esp32
jianqiang.xue19 天前
ESP-IDF保姆级入门39|固件安全与安全启动全解:签名校验/Flash加密/防回滚/OTP密钥/知识产权保护,掌握工业级固件安全防护体系
单片机·物联网·esp32
jianqiang.xue21 天前
ESP-IDF保姆级入门38|电源管理与锂电池充电全解:充电拓扑/电源路径控制/充放电保护/电量检测/低功耗策略,掌握嵌入式电池供电系统设计
单片机·嵌入式·esp32
jianqiang.xue21 天前
ESP-IDF保姆级入门35|SDMMC高速SD卡全解:SDIO接口/4位高速模式/FATFS文件系统/热插拔检测/磨损均衡,掌握嵌入式大容量存储扩展
单片机·esp32
国产化创客22 天前
创客开发入门(五)Arduino IDE 编程基础
单片机·嵌入式硬件·物联网·esp32