在ESP32低功耗模式下,ULP协处理器可在主CPU休眠时保持GPIO监控,实现中断唤醒且不丢实时性。关键配置:1) 使用ulp_set_wakeup_period设置ULP定期采样周期(如10-100ms),在ULP程序中轮询GPIO状态变化,检测到边沿后立即置位唤醒标志并调用ulp_halt;2) 通过esp_sleep_enable_ulp_wakeup使能ULP唤醒源,主CPU唤醒后读取ULP共享内存中的事件数据,避免丢失。为减少功耗,ULP程序应尽量精简,仅做GPIO读取和比较,且采样周期需权衡实时性与功耗(如10ms可满足多数按键/传感器事件)。若需更精确边沿中断,可结合RTC GPIO的外部中断(仅支持有限引脚),但ULP轮询更灵活。实操建议:在ULP程序中用RTC_GPIO寄存器直接读引脚,避免使用慢速ADC;唤醒后立即处理事件,再快速回到睡眠。
mcuku 阿沐 · 2026-08-27