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 4b6065c6b1..48ab1529ba 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 @@ -18,6 +18,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 4a9bdb8a54..7bada098ca 100644 --- a/components/ulp/lp_core/lp_core/lp_core_utils.c +++ b/components/ulp/lp_core/lp_core/lp_core_utils.c @@ -42,6 +42,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;