在ESP32低功耗模式下,ULP协处理器可在主CPU休眠时运行,实现GPIO边沿检测。关键步骤:1) 配置ULP程序,使用RTC_GPIO(如GPIO4)并启用边沿触发,通过RTCIO的pad hold功能锁存状态;2) 在ULP代码中,用`RTCIO_PIN_DECONFIG`或`rtc_gpio_hold_en`保持引脚状态,同时用`ulp_set_wakeup_period`设置轮询间隔,检测到边沿后置位`ulp_wakeup_status`;3) RTC内存(如`RTC_SLOW_MEM`)在深度睡眠中保留,需在ULP代码中显式写入变量,并用`ulp_riscv`或`ulp_fsm`的宏访问,避免使用普通SRAM。实操建议:使用`esp_sleep_enable_ulp_wakeup`使能唤醒,并在唤醒后立即读取RTC内存标志,防止数据覆盖。注意ULP程序需在编译时链接到RTC内存段,且边沿检测需配置去抖(如软件延时)以防误触发。
mcuku 阿沐 · 2026-08-27