wifi_fpm_do_sleep(0xFFFFFFF) 返回 -1;

问题描述

我无法在 NodeMCU v3 ESP8266 上进行轻度睡眠,因为函数 wifi_fpm_do_sleep() 返回 -1。你能帮我找出错误的原因吗?

void light_sleep() {
  wifi_fpm_set_sleep_type(LIGHT_SLEEP_T);
  gpio_pin_wakeup_enable(GPIO_ID_PIN(gpio_read),GPIO_PIN_INTR_HILEVEL);
  wifi_fpm_open();
  WiFi.disconnect();
  WiFi.mode(WIFI_OFF);
  Serial.print("WiFi Sleep\t");
  WiFi.forceSleepBegin();
  int err = wifi_fpm_do_sleep(0xFFFFFFF);
  Serial.print("ERROR: ");
  Serial.println(err);
}

谢谢。

解决方法

正确的代码:

void light_sleep() {
  WiFi.mode(WIFI_OFF);
  wifi_fpm_set_sleep_type(LIGHT_SLEEP_T);
  gpio_pin_wakeup_enable(GPIO_ID_PIN(gpio_read),GPIO_PIN_INTR_HILEVEL);
  wifi_fpm_open();
  Serial.print("WiFi Sleep\t");
  int err = wifi_fpm_do_sleep(0xFFFFFFF);
  Serial.print("ERROR: ");
  Serial.println(err);
}

并且在 light_sleep() 之后必须是:

wifi_fpm_do_wakeup();
WiFi.mode(WIFI_STA);