forked from espressif/esp-idf
Merge branch 'feature/support_abort_on_lp_core' into 'master'
lp-core: Added support for abort() function on the LP core See merge request espressif/esp-idf!24204
This commit is contained in:
@@ -11,6 +11,7 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
|
||||
/**
|
||||
@@ -53,6 +54,11 @@ void ulp_lp_core_delay_cycles(uint32_t cycles);
|
||||
*/
|
||||
__attribute__((__noreturn__)) void ulp_lp_core_halt(void);
|
||||
|
||||
/**
|
||||
* @brief The LP core puts itself to sleep and disables all wakeup sources.
|
||||
*/
|
||||
__attribute__((__noreturn__)) void ulp_lp_core_stop_lp_core(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@@ -63,3 +63,18 @@ void ulp_lp_core_halt(void)
|
||||
|
||||
while(1);
|
||||
}
|
||||
|
||||
void ulp_lp_core_stop_lp_core(void)
|
||||
{
|
||||
/* Disable wake-up source and put lp core to sleep */
|
||||
REG_SET_FIELD(PMU_LP_CPU_PWR1_REG, PMU_LP_CPU_WAKEUP_EN, 0);
|
||||
REG_SET_FIELD(PMU_LP_CPU_PWR1_REG, PMU_LP_CPU_SLEEP_REQ, 1);
|
||||
}
|
||||
|
||||
void __attribute__((noreturn)) abort(void)
|
||||
{
|
||||
/* Stop the LP Core */
|
||||
ulp_lp_core_stop_lp_core();
|
||||
|
||||
while (1);
|
||||
}
|
||||
|
Reference in New Issue
Block a user