diff --git a/components/ulp/lp_core/lp_core/include/ulp_lp_core_utils.h b/components/ulp/lp_core/lp_core/include/ulp_lp_core_utils.h index cfb8f697f2..e3ecf25ed2 100644 --- a/components/ulp/lp_core/lp_core/include/ulp_lp_core_utils.h +++ b/components/ulp/lp_core/lp_core/include/ulp_lp_core_utils.h @@ -17,6 +17,8 @@ extern "C" { /** * @brief Traverse all possible wake-up sources and update the wake-up cause so that * ulp_lp_core_get_wakeup_cause can obtain the bitmap of the wake-up reasons. + * @note Do not call it from user ULP programs because it will clear the wake-up cause bits + * which were set at ULP startup in lp_core_startup(). */ void ulp_lp_core_update_wakeup_cause(void); diff --git a/components/ulp/lp_core/lp_core/lp_core_utils.c b/components/ulp/lp_core/lp_core/lp_core_utils.c index 0eecf4006d..907292e63c 100644 --- a/components/ulp/lp_core/lp_core/lp_core_utils.c +++ b/components/ulp/lp_core/lp_core/lp_core_utils.c @@ -34,6 +34,7 @@ static uint32_t lp_wakeup_cause = 0; void ulp_lp_core_update_wakeup_cause(void) { + lp_wakeup_cause = 0; if ((lp_core_ll_get_wakeup_source() & LP_CORE_LL_WAKEUP_SOURCE_HP_CPU) \ && (pmu_ll_lp_get_interrupt_raw(&PMU) & PMU_HP_SW_TRIGGER_INT_RAW)) { lp_wakeup_cause |= LP_CORE_LL_WAKEUP_SOURCE_HP_CPU;