在嵌入式开发中,deepsleep 是一种常用的低功耗技术,尤其适用于电池供电设备。本文将介绍如何在常见平台(如 ESP32、ESP8266)中使用 deepsleep 功能,并提供可直接复制使用的代码示例。
ESP32 Deep Sleep 示例代码
// ESP32 Deep Sleep 示例(休眠10秒后唤醒)
#include <esp_sleep.h>
#define uS_TO_S_FACTOR 1000000ULL // 微秒转秒
#define TIME_TO_SLEEP 10 // 休眠时间(秒)
void setup() {
Serial.begin(115200);
Serial.println("进入 Deep Sleep 模式...");
esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
esp_deep_sleep_start();
}
void loop() {
// 不会执行到这里
}
ESP8266 Deep Sleep 注意事项
ESP8266 使用 Deep Sleep 需要将 RST 引脚连接到 GPIO16(D0),否则无法自动唤醒。示例代码如下:
// ESP8266 Deep Sleep 示例
void setup() {
Serial.begin(115200);
Serial.println("准备进入 Deep Sleep");
ESP.deepSleep(10e6); // 休眠10秒(单位:微秒)
}
void loop() {
// 不会执行
}
使用建议
- 确保硬件支持 Deep Sleep(如正确连接唤醒引脚)。
- Deep Sleep 期间 RAM 数据会丢失,如需保留状态请使用 RTC 内存(ESP32 支持)。
- 调试时建议先短时间测试,避免设备长时间休眠无法操作。