Merge pull request #4808 from betzw/betzw_idle_github_wb

Make HAL & US tickers idle safe
pull/4935/head
Jimmy Brisson 2017-08-14 11:36:35 -05:00 committed by GitHub
commit 25bcc2795e
1 changed files with 13 additions and 1 deletions

View File

@ -34,23 +34,32 @@
#include "sleep_api.h"
#include "rtc_api_hal.h"
#include "hal_tick.h"
#include "mbed_critical.h"
extern void HAL_SuspendTick(void);
extern void HAL_ResumeTick(void);
void hal_sleep(void)
{
// Disable IRQs
core_util_critical_section_enter();
// Stop HAL tick to avoid to exit sleep in 1ms
HAL_SuspendTick();
// Request to enter SLEEP mode
HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI);
// Restart HAL tick
HAL_ResumeTick();
// Enable IRQs
core_util_critical_section_exit();
}
void hal_deepsleep(void)
{
// Disable IRQs
core_util_critical_section_enter();
// Stop HAL tick
HAL_SuspendTick();
uint32_t EnterTimeUS = us_ticker_read();
@ -82,6 +91,9 @@ void hal_deepsleep(void)
// Restart HAL tick
HAL_ResumeTick();
// Enable IRQs
core_util_critical_section_exit();
// After wake-up from STOP reconfigure the PLL
SetSysClock();