/***************************************************************************//** * @file * @brief Energy management unit (EMU) peripheral API for EFM32. * @author Energy Micro AS * @version 2.0.0 ******************************************************************************* * @section License * (C) Copyright 2010 Energy Micro AS, http://www.energymicro.com ******************************************************************************* * * This source code is the property of Energy Micro AS. The source and compiled * code may only be used on Energy Micro "EFM32" microcontrollers. * * This copyright notice may not be removed from the source code nor changed. * * DISCLAIMER OF WARRANTY/LIMITATION OF REMEDIES: Energy Micro AS has no * obligation to support this Software. Energy Micro AS is providing the * Software "AS IS", with no express or implied warranties of any kind, * including, but not limited to, any implied warranties of merchantability * or fitness for any particular purpose or warranties against infringement * of any proprietary rights of a third party. * * Energy Micro AS will not be liable for any consequential, incidental, or * special damages, or any other relief, or for any claim by any third party, * arising from your use of this Software. * ******************************************************************************/ #ifndef __EFM32_EMU_H #define __EFM32_EMU_H #include #include "efm32.h" #ifdef __cplusplus extern "C" { #endif /***************************************************************************//** * @addtogroup EFM32_Library * @{ ******************************************************************************/ /***************************************************************************//** * @addtogroup EMU * @{ ******************************************************************************/ /******************************************************************************* ***************************** PROTOTYPES ********************************** ******************************************************************************/ /***************************************************************************//** * @brief * Enter energy mode 1 (EM1). ******************************************************************************/ static __INLINE void EMU_EnterEM1(void) { /* Just enter Cortex-M3 sleep mode */ SCB->SCR &= ~SCB_SCR_SLEEPDEEP_Msk; __WFI(); } void EMU_EnterEM2(bool restore); void EMU_EnterEM3(bool restore); void EMU_EnterEM4(void); /***************************************************************************//** * @brief * Lock the EMU in order to protect all its registers against unintended * modification. * * @note * If locking the EMU registers, they must be unlocked prior to using any * EMU API functions modifying EMU registers. An exception to this is the * energy mode entering API (EMU_EnterEMn()), which can be used when the * EMU registers are locked. ******************************************************************************/ static __INLINE void EMU_Lock(void) { EMU->LOCK = EMU_LOCK_LOCKKEY_LOCK; } void EMU_MemPwrDown(uint32_t blocks); /***************************************************************************//** * @brief * Unlock the EMU so that writing to locked registers again is possible. ******************************************************************************/ static __INLINE void EMU_Unlock(void) { EMU->LOCK = EMU_LOCK_LOCKKEY_UNLOCK; } void EMU_UpdateOscConfig(void); /** @} (end addtogroup EMU) */ /** @} (end addtogroup EFM32_Library) */ #ifdef __cplusplus } #endif #endif /* __EFM32_EMU_H */