我们的代码逻辑就是 开机setup 打印出唤醒原因 esp_deep_sleep_start(); 唤醒原因一般有ext0 ext1 timer touchpad ulp 大致这五种 rtc存储器不会因为深度睡眠被清理创建的方法RTC_DATA_ATTR int bootCount = 0; 然后就是设置唤醒源esp_sleep_enable_ext0_wakeup(GPIO_NUM_33,1);类似这种
最后你可以在任意情况下去睡眠 esp_deep_sleep_start();
我们主要讲解这五种唤醒源
exto ext1 esp_sleep_enable_ext0_wakeup(GPIO_NUM_33,1);
esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
//Setup interrupt on Touch Pad 3 (GPIO15) touchAttachInterrupt(T3, callback, Threshold); //Configure Touchpad as wakeup source esp_sleep_enable_touchpad_wakeup();
ULP是ESP32做出优秀低功耗产品的关键 无论主 CPU 是处于正常运行模式还是 Deep-sleep 模式,ULP 协处理器都可以独立运行。超低功耗协处理器的补充使得 ESP32 能够胜任一些对低功耗要求较高的应用场合。