乐鑫技术交流
直播中

陈秀英

7年用户 1225经验值
私信 关注
[问答]

无法从浅睡眠超时中唤醒ESP8266 01是怎么回事?如何解决?

我对强制轻度睡眠并真正醒来的方法感到困惑。根据 2019 年的最新文档 ESP8266 Non-OS SDK API Reference ver 3.0.1,有一个函数 wifi_fpm_do_sleep 可以定义睡眠超时。
int8 wifi_fpm_do_sleep (uint32 sleep_time_in_us)
uint32 sleep_time_in_us:休眠时间,ESP8266超时自动唤醒。单位:我们 范围:10000 ~ 268435455(0xFFFFFFF)
• 如果 sleep_time_in_us 为 0xFFFFFFF,ESP8266 将睡眠直到被唤醒,如下所示:
• 如果 wifi_fpm_set_sleep_type 设置为 LIGHT_SLEEP_T,ESP8266 可以通过 GPIO 唤醒。
• 如果wifi_fpm_set_sleep_type 设置为MODEM_SLEEP_T,ESP8266 可以通过wifi_fpm_do_wakeup 唤醒。
因此,为了确认,从这里看来,如果超时与 0xffffff 不同,我们可以在不使用任何外部事件的情况下唤醒 esp8266。它是否正确?
这是同一文档中的代码示例(对我不起作用)
void fpm_wakup_cb_func1(void)
{
wifi_fpm_close(); // 禁用强制休眠功能
wifi_set_opmode(STATION_MODE); // 设置站点模式
wifi_station_connect(); // 连接到 AP
}
void user_func(...)
{
wifi_station_disconnect();
wifi_set_opmode(NULL_MODE); // 将 WiFi 模式设置为空模式。
wifi_fpm_set_sleep_type(LIGHT_SLEEP_T); // 轻度睡眠
wifi_fpm_open(); // 启用强制睡眠
wifi_fpm_set_wakeup_cb(fpm_wakup_cb_func1); // 设置唤醒回调
wifi_fpm_do_sleep(50*1000); //在这里我把我的延迟,例如 (20000000) , 20 秒,但它不起作用。

更多回帖

发帖
×
20
完善资料,
赚取积分