在ESP32低功耗模式下,ULP协处理器可独立于主CPU运行,实现GPIO中断唤醒并保持RTC外设工作。具体做法:首先,在ULP固件中配置GPIO为输入模式,启用RTC GPIO的唤醒功能(如GPIO_NUM_0对应RTC_GPIO0),设置触发边沿(上升/下降)。然后,ULP循环轮询该GPIO状态,当检测到变化时,通过设置RTC_CNTL_WAKEUP_CAUSE寄存器触发唤醒,并可选地操作RTC外设(如RTC定时器或RTC内存)。主CPU在唤醒后需检查唤醒源,并继续执行。实操建议:使用esp32ulp工具链编写ULP程序,注意ULP只能访问RTC域内存和外设,且GPIO需映射到RTC通道。测试时,用深度睡眠模式,ULP每100ms轮询一次,功耗可低至10uA以下。确保在ulp_init中配置好唤醒源,并在主固件中处理唤醒后的初始化。
mcuku 阿沐 · 2026-08-27