From 827e7478fa291eaed46d64a6cbd59bc495fdf51b Mon Sep 17 00:00:00 2001 From: dongheng Date: Mon, 23 Sep 2019 10:37:48 +0800 Subject: [PATCH] fix(sleep): fix enter light sleep mode error --- components/esp8266/source/esp_sleep.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/components/esp8266/source/esp_sleep.c b/components/esp8266/source/esp_sleep.c index ad22eb0e..012fcf15 100644 --- a/components/esp8266/source/esp_sleep.c +++ b/components/esp8266/source/esp_sleep.c @@ -162,11 +162,16 @@ void esp_sleep_start(void) uart_tx_wait_idle(0); uart_tx_wait_idle(1); - int slept = 0; + int cpu_wait = 1; pm_soc_clk_t clk; const esp_irqflag_t irqflag = soc_save_local_irq(); const uint32_t wdevflag = save_local_wdev(); + if (s_lock_cnt) { + cpu_wait = 0; + goto exit; + } + save_soc_clk(&clk); const uint32_t sleep_us = min_sleep_us(&clk); @@ -184,13 +189,14 @@ void esp_sleep_start(void) update_soc_clk(&clk, sleep_us); - slept = 1; + cpu_wait = 0; } } +exit: restore_local_wdev(wdevflag); soc_restore_local_irq(irqflag); - if (!slept) + if (cpu_wait) soc_wait_int(); }