fix(esp_hw_support): add timer wakeup sleep duration check

Closes https://github.com/espressif/esp-idf/issues/15255
This commit is contained in:
wuzhenghui
2025-02-18 19:21:57 +08:00
committed by BOT
parent c93d7d0132
commit 95fb085fe3
23 changed files with 115 additions and 42 deletions
+5
View File
@@ -15,6 +15,7 @@
#include "esp_macros.h"
#include "esp_memory_utils.h"
#include "esp_sleep.h"
#include "esp_private/esp_clk_tree_common.h"
#include "esp_private/esp_sleep_internal.h"
#include "esp_private/esp_timer_private.h"
#include "esp_private/rtc_clk.h"
@@ -1687,6 +1688,10 @@ esp_err_t esp_sleep_enable_ulp_wakeup(void)
esp_err_t esp_sleep_enable_timer_wakeup(uint64_t time_in_us)
{
if (time_in_us > ((BIT64(SOC_LP_TIMER_BIT_WIDTH_LO + SOC_LP_TIMER_BIT_WIDTH_HI) - 1) / esp_clk_tree_lp_slow_get_freq_hz(ESP_CLK_TREE_SRC_FREQ_PRECISION_APPROX)) * MHZ ) {
return ESP_ERR_INVALID_ARG;
}
s_config.wakeup_triggers |= RTC_TIMER_TRIG_EN;
s_config.sleep_duration = time_in_us;
return ESP_OK;