mbed library sources. Supersedes mbed-src. Edited target satm32f446 for user USART3 pins
Fork of mbed-dev by
Diff: targets/TARGET_Silicon_Labs/TARGET_EFM32/sleep.c
- Revision:
- 180:96ed750bd169
- Parent:
- 160:d5399cc887bb
diff -r b0033dcd6934 -r 96ed750bd169 targets/TARGET_Silicon_Labs/TARGET_EFM32/sleep.c --- a/targets/TARGET_Silicon_Labs/TARGET_EFM32/sleep.c Thu Dec 07 14:01:42 2017 +0000 +++ b/targets/TARGET_Silicon_Labs/TARGET_EFM32/sleep.c Wed Jan 17 15:23:54 2018 +0000 @@ -25,32 +25,15 @@ #if DEVICE_SLEEP #include "sleep_api.h" -#include "sleepmodes.h" #include "em_emu.h" -#include "mbed_critical.h" - -uint32_t sleep_block_counter[NUM_SLEEP_MODES] = {0}; /** * Sleep mode. - * Enter the lowest possible sleep mode that is not blocked by ongoing activity. + * Stop the core clock using a WFI. */ void hal_sleep(void) { - if (sleep_block_counter[0] > 0) { - /* Blocked everything below EM0, so just return */ - return; - } else if (sleep_block_counter[1] > 0) { - /* Blocked everything below EM1, enter EM1 */ - EMU_EnterEM1(); - } else if (sleep_block_counter[2] > 0) { - /* Blocked everything below EM2, enter EM2 */ - EMU_EnterEM2(true); - } else { - /* Blocked everything below EM3, enter EM3 */ - EMU_EnterEM3(true); - } /* Never enter EM4, as mbed has no way of configuring EM4 wakeup */ - return; + EMU_EnterEM1(); } /** @@ -69,35 +52,4 @@ EMU_EnterEM2(true); } -/** Block the microcontroller from sleeping below a certain mode - * - * This will block sleep() from entering an energy mode below the one given. - * -- To be called by peripheral HAL's -- - * - * After the peripheral is finished with the operation, it should call unblock with the same state - * - */ -void blockSleepMode(sleepstate_enum minimumMode) -{ - core_util_critical_section_enter(); - sleep_block_counter[minimumMode]++; - core_util_critical_section_exit(); -} - -/** Unblock the microcontroller from sleeping below a certain mode - * - * This will unblock sleep() from entering an energy mode below the one given. - * -- To be called by peripheral HAL's -- - * - * This should be called after all transactions on a peripheral are done. - */ -void unblockSleepMode(sleepstate_enum minimumMode) -{ - core_util_critical_section_enter(); - if(sleep_block_counter[minimumMode] > 0) { - sleep_block_counter[minimumMode]--; - } - core_util_critical_section_exit(); -} - #endif