MXRT1050_EVK: Sleep: add pre/post processing steps

Signed-off-by: Mahesh Mahadevan <mahesh.mahadevan@nxp.com>
pull/7753/head
Mahesh Mahadevan 2018-08-06 11:49:59 -05:00 committed by adbridge
parent b1166d4696
commit 5d509d2e1e
1 changed files with 15 additions and 9 deletions

View File

@ -17,23 +17,29 @@
#include "cmsis.h" #include "cmsis.h"
#include "fsl_clock.h" #include "fsl_clock.h"
static void stop(void) extern void vPortPRE_SLEEP_PROCESSING(clock_mode_t powermode);
{ extern void vPortPOST_SLEEP_PROCESSING(clock_mode_t powermode);
SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk;
__asm("WFI");
}
void hal_sleep(void) void hal_sleep(void)
{ {
CLOCK_SetMode(kCLOCK_ModeWait); vPortPRE_SLEEP_PROCESSING(kCLOCK_ModeWait);
stop(); __DSB();
__WFI();
__ISB();
vPortPOST_SLEEP_PROCESSING(kCLOCK_ModeWait);
} }
void hal_deepsleep(void) void hal_deepsleep(void)
{ {
CLOCK_SetMode(kCLOCK_ModeStop); vPortPRE_SLEEP_PROCESSING(kCLOCK_ModeStop);
stop(); __DSB();
__WFI();
__ISB();
vPortPOST_SLEEP_PROCESSING(kCLOCK_ModeStop);
} }