mirror of
https://github.com/espressif/ESP8266_RTOS_SDK.git
synced 2025-05-22 09:37:00 +08:00
fix(esp8266): fix that light sleep process breaks
This commit is contained in:
@ -193,11 +193,15 @@ esp_err_t esp_sleep_disable_wakeup_source(esp_sleep_source_t source)
|
|||||||
|
|
||||||
esp_err_t esp_light_sleep_start(void)
|
esp_err_t esp_light_sleep_start(void)
|
||||||
{
|
{
|
||||||
|
esp_err_t ret;
|
||||||
|
esp_irqflag_t irqflag = soc_save_local_irq();
|
||||||
|
uint32_t wdevflag = save_local_wdev();
|
||||||
uint32_t period = pm_rtc_clock_cali_proc();
|
uint32_t period = pm_rtc_clock_cali_proc();
|
||||||
const uint32_t sleep_rtc_ticks = pm_usec2rtc(s_sleep_duration, period);
|
const uint32_t sleep_rtc_ticks = pm_usec2rtc(s_sleep_duration, period);
|
||||||
const rtc_cpu_freq_t cpu_freq = rtc_clk_cpu_freq_get();
|
|
||||||
|
|
||||||
if (sleep_rtc_ticks > WAKEUP_EARLY_TICKS + 1) {
|
if (sleep_rtc_ticks > WAKEUP_EARLY_TICKS + 1) {
|
||||||
|
const rtc_cpu_freq_t cpu_freq = rtc_clk_cpu_freq_get();
|
||||||
|
|
||||||
rtc_lightsleep_init();
|
rtc_lightsleep_init();
|
||||||
pm_set_sleep_cycles(sleep_rtc_ticks - WAKEUP_EARLY_TICKS);
|
pm_set_sleep_cycles(sleep_rtc_ticks - WAKEUP_EARLY_TICKS);
|
||||||
rtc_light_sleep_start(s_sleep_wakup_triggers, 0);
|
rtc_light_sleep_start(s_sleep_wakup_triggers, 0);
|
||||||
@ -205,10 +209,15 @@ esp_err_t esp_light_sleep_start(void)
|
|||||||
|
|
||||||
rtc_clk_cpu_freq_set(cpu_freq);
|
rtc_clk_cpu_freq_set(cpu_freq);
|
||||||
|
|
||||||
return ESP_OK;
|
ret = ESP_OK;
|
||||||
|
} else {
|
||||||
|
ret = ESP_ERR_INVALID_STATE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return ESP_ERR_INVALID_STATE;
|
restore_local_wdev(wdevflag);
|
||||||
|
soc_restore_local_irq(irqflag);
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
void esp_sleep_lock(void)
|
void esp_sleep_lock(void)
|
||||||
|
Reference in New Issue
Block a user