The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
AnnaBridge
Date:
Thu Nov 08 11:45:42 2018 +0000
Revision:
171:3a7713b1edbc
Parent:
TARGET_TB_SENSE_1/TARGET_Silicon_Labs/TARGET_EFM32/emlib/inc/em_rmu.h@160:5571c4ff569f
mbed library. Release version 164

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Anna Bridge 142:4eea097334d6 1 /***************************************************************************//**
Anna Bridge 142:4eea097334d6 2 * @file em_rmu.h
Anna Bridge 142:4eea097334d6 3 * @brief Reset Management Unit (RMU) peripheral API
Anna Bridge 160:5571c4ff569f 4 * @version 5.3.3
Anna Bridge 142:4eea097334d6 5 *******************************************************************************
Anna Bridge 160:5571c4ff569f 6 * # License
Anna Bridge 142:4eea097334d6 7 * <b>Copyright 2016 Silicon Laboratories, Inc. http://www.silabs.com</b>
Anna Bridge 142:4eea097334d6 8 *******************************************************************************
Anna Bridge 142:4eea097334d6 9 *
Anna Bridge 142:4eea097334d6 10 * Permission is granted to anyone to use this software for any purpose,
Anna Bridge 142:4eea097334d6 11 * including commercial applications, and to alter it and redistribute it
Anna Bridge 142:4eea097334d6 12 * freely, subject to the following restrictions:
Anna Bridge 142:4eea097334d6 13 *
Anna Bridge 142:4eea097334d6 14 * 1. The origin of this software must not be misrepresented; you must not
Anna Bridge 142:4eea097334d6 15 * claim that you wrote the original software.
Anna Bridge 142:4eea097334d6 16 * 2. Altered source versions must be plainly marked as such, and must not be
Anna Bridge 142:4eea097334d6 17 * misrepresented as being the original software.
Anna Bridge 142:4eea097334d6 18 * 3. This notice may not be removed or altered from any source distribution.
Anna Bridge 142:4eea097334d6 19 *
Anna Bridge 142:4eea097334d6 20 * DISCLAIMER OF WARRANTY/LIMITATION OF REMEDIES: Silicon Labs has no
Anna Bridge 142:4eea097334d6 21 * obligation to support this Software. Silicon Labs is providing the
Anna Bridge 142:4eea097334d6 22 * Software "AS IS", with no express or implied warranties of any kind,
Anna Bridge 142:4eea097334d6 23 * including, but not limited to, any implied warranties of merchantability
Anna Bridge 142:4eea097334d6 24 * or fitness for any particular purpose or warranties against infringement
Anna Bridge 142:4eea097334d6 25 * of any proprietary rights of a third party.
Anna Bridge 142:4eea097334d6 26 *
Anna Bridge 142:4eea097334d6 27 * Silicon Labs will not be liable for any consequential, incidental, or
Anna Bridge 142:4eea097334d6 28 * special damages, or any other relief, or for any claim by any third party,
Anna Bridge 142:4eea097334d6 29 * arising from your use of this Software.
Anna Bridge 142:4eea097334d6 30 *
Anna Bridge 142:4eea097334d6 31 ******************************************************************************/
Anna Bridge 142:4eea097334d6 32
Anna Bridge 142:4eea097334d6 33 #ifndef EM_RMU_H
Anna Bridge 142:4eea097334d6 34 #define EM_RMU_H
Anna Bridge 142:4eea097334d6 35
Anna Bridge 142:4eea097334d6 36 #include "em_device.h"
Anna Bridge 142:4eea097334d6 37 #if defined(RMU_COUNT) && (RMU_COUNT > 0)
Anna Bridge 142:4eea097334d6 38 #include "em_assert.h"
Anna Bridge 142:4eea097334d6 39
Anna Bridge 142:4eea097334d6 40 #include <stdbool.h>
Anna Bridge 142:4eea097334d6 41
Anna Bridge 142:4eea097334d6 42 #ifdef __cplusplus
Anna Bridge 142:4eea097334d6 43 extern "C" {
Anna Bridge 142:4eea097334d6 44 #endif
Anna Bridge 142:4eea097334d6 45
Anna Bridge 142:4eea097334d6 46 /***************************************************************************//**
Anna Bridge 142:4eea097334d6 47 * @addtogroup emlib
Anna Bridge 142:4eea097334d6 48 * @{
Anna Bridge 142:4eea097334d6 49 ******************************************************************************/
Anna Bridge 142:4eea097334d6 50
Anna Bridge 142:4eea097334d6 51 /***************************************************************************//**
Anna Bridge 142:4eea097334d6 52 * @addtogroup RMU
Anna Bridge 142:4eea097334d6 53 * @{
Anna Bridge 142:4eea097334d6 54 ******************************************************************************/
Anna Bridge 142:4eea097334d6 55
Anna Bridge 142:4eea097334d6 56 /*******************************************************************************
Anna Bridge 142:4eea097334d6 57 ******************************** ENUMS ************************************
Anna Bridge 142:4eea097334d6 58 ******************************************************************************/
Anna Bridge 142:4eea097334d6 59
Anna Bridge 142:4eea097334d6 60 /** RMU reset modes */
Anna Bridge 160:5571c4ff569f 61 typedef enum {
Anna Bridge 142:4eea097334d6 62 #if defined(_RMU_CTRL_PINRMODE_MASK)
Anna Bridge 142:4eea097334d6 63 rmuResetModeDisabled = _RMU_CTRL_PINRMODE_DISABLED,
Anna Bridge 142:4eea097334d6 64 rmuResetModeLimited = _RMU_CTRL_PINRMODE_LIMITED,
Anna Bridge 142:4eea097334d6 65 rmuResetModeExtended = _RMU_CTRL_PINRMODE_EXTENDED,
Anna Bridge 142:4eea097334d6 66 rmuResetModeFull = _RMU_CTRL_PINRMODE_FULL,
Anna Bridge 142:4eea097334d6 67 #else
Anna Bridge 142:4eea097334d6 68 rmuResetModeClear = 0,
Anna Bridge 142:4eea097334d6 69 rmuResetModeSet = 1,
Anna Bridge 142:4eea097334d6 70 #endif
Anna Bridge 142:4eea097334d6 71 } RMU_ResetMode_TypeDef;
Anna Bridge 142:4eea097334d6 72
Anna Bridge 142:4eea097334d6 73 /** RMU controlled peripheral reset control and reset source control */
Anna Bridge 160:5571c4ff569f 74 typedef enum {
Anna Bridge 142:4eea097334d6 75 #if defined(RMU_CTRL_BURSTEN)
Anna Bridge 142:4eea097334d6 76 rmuResetBU = _RMU_CTRL_BURSTEN_MASK, /**< Reset control over Backup Power domain select */
Anna Bridge 142:4eea097334d6 77 #endif
Anna Bridge 142:4eea097334d6 78 #if defined(RMU_CTRL_LOCKUPRDIS)
Anna Bridge 142:4eea097334d6 79 rmuResetLockUp = _RMU_CTRL_LOCKUPRDIS_MASK, /**< Cortex lockup reset select */
Anna Bridge 142:4eea097334d6 80 #elif defined(_RMU_CTRL_LOCKUPRMODE_MASK)
Anna Bridge 142:4eea097334d6 81 rmuResetLockUp = _RMU_CTRL_LOCKUPRMODE_MASK, /**< Cortex lockup reset select */
Anna Bridge 142:4eea097334d6 82 #endif
Anna Bridge 142:4eea097334d6 83 #if defined(_RMU_CTRL_WDOGRMODE_MASK)
Anna Bridge 142:4eea097334d6 84 rmuResetWdog = _RMU_CTRL_WDOGRMODE_MASK, /**< WDOG reset select */
Anna Bridge 142:4eea097334d6 85 #endif
Anna Bridge 142:4eea097334d6 86 #if defined(_RMU_CTRL_LOCKUPRMODE_MASK)
Anna Bridge 142:4eea097334d6 87 rmuResetCoreLockup = _RMU_CTRL_LOCKUPRMODE_MASK, /**< Cortex lockup reset select */
Anna Bridge 142:4eea097334d6 88 #endif
Anna Bridge 142:4eea097334d6 89 #if defined(_RMU_CTRL_SYSRMODE_MASK)
Anna Bridge 142:4eea097334d6 90 rmuResetSys = _RMU_CTRL_SYSRMODE_MASK, /**< SYSRESET select */
Anna Bridge 142:4eea097334d6 91 #endif
Anna Bridge 142:4eea097334d6 92 #if defined(_RMU_CTRL_PINRMODE_MASK)
Anna Bridge 142:4eea097334d6 93 rmuResetPin = _RMU_CTRL_PINRMODE_MASK, /**< Pin reset select */
Anna Bridge 142:4eea097334d6 94 #endif
Anna Bridge 142:4eea097334d6 95 } RMU_Reset_TypeDef;
Anna Bridge 142:4eea097334d6 96
Anna Bridge 142:4eea097334d6 97 /*******************************************************************************
Anna Bridge 142:4eea097334d6 98 ***************************** PROTOTYPES **********************************
Anna Bridge 142:4eea097334d6 99 ******************************************************************************/
Anna Bridge 142:4eea097334d6 100
Anna Bridge 142:4eea097334d6 101 /** RMU_LockupResetDisable kept for backwards compatibility */
Anna Bridge 142:4eea097334d6 102 #define RMU_LockupResetDisable(A) RMU_ResetControl(rmuResetLockUp, A)
Anna Bridge 142:4eea097334d6 103
Anna Bridge 142:4eea097334d6 104 void RMU_ResetControl(RMU_Reset_TypeDef reset, RMU_ResetMode_TypeDef mode);
Anna Bridge 142:4eea097334d6 105 void RMU_ResetCauseClear(void);
Anna Bridge 142:4eea097334d6 106 uint32_t RMU_ResetCauseGet(void);
Anna Bridge 142:4eea097334d6 107
Anna Bridge 142:4eea097334d6 108 #if defined(_RMU_CTRL_RESETSTATE_MASK)
Anna Bridge 142:4eea097334d6 109 /***************************************************************************//**
Anna Bridge 142:4eea097334d6 110 * @brief
Anna Bridge 142:4eea097334d6 111 * Set user reset state. This state is reset only by a Power-on-reset and a
Anna Bridge 142:4eea097334d6 112 * pin reset.
Anna Bridge 142:4eea097334d6 113 *
Anna Bridge 142:4eea097334d6 114 * @param[in] userState User state to set
Anna Bridge 142:4eea097334d6 115 ******************************************************************************/
Anna Bridge 142:4eea097334d6 116 __STATIC_INLINE void RMU_UserResetStateSet(uint32_t userState)
Anna Bridge 142:4eea097334d6 117 {
Anna Bridge 142:4eea097334d6 118 EFM_ASSERT(!(userState
Anna Bridge 142:4eea097334d6 119 & ~(_RMU_CTRL_RESETSTATE_MASK >> _RMU_CTRL_RESETSTATE_SHIFT)));
Anna Bridge 142:4eea097334d6 120 RMU->CTRL = (RMU->CTRL & ~_RMU_CTRL_RESETSTATE_MASK)
Anna Bridge 142:4eea097334d6 121 | (userState << _RMU_CTRL_RESETSTATE_SHIFT);
Anna Bridge 142:4eea097334d6 122 }
Anna Bridge 142:4eea097334d6 123
Anna Bridge 142:4eea097334d6 124 /***************************************************************************//**
Anna Bridge 142:4eea097334d6 125 * @brief
Anna Bridge 142:4eea097334d6 126 * Get user reset state. This state is reset only by a Power-on-reset and a
Anna Bridge 142:4eea097334d6 127 * pin reset.
Anna Bridge 142:4eea097334d6 128 *
Anna Bridge 142:4eea097334d6 129 * @return
Anna Bridge 142:4eea097334d6 130 * Reset surviving user state
Anna Bridge 142:4eea097334d6 131 ******************************************************************************/
Anna Bridge 142:4eea097334d6 132 __STATIC_INLINE uint32_t RMU_UserResetStateGet(void)
Anna Bridge 142:4eea097334d6 133 {
Anna Bridge 142:4eea097334d6 134 uint32_t userState = (RMU->CTRL & _RMU_CTRL_RESETSTATE_MASK)
Anna Bridge 142:4eea097334d6 135 >> _RMU_CTRL_RESETSTATE_SHIFT;
Anna Bridge 142:4eea097334d6 136 return userState;
Anna Bridge 142:4eea097334d6 137 }
Anna Bridge 142:4eea097334d6 138 #endif
Anna Bridge 142:4eea097334d6 139
Anna Bridge 142:4eea097334d6 140 /** @} (end addtogroup RMU) */
Anna Bridge 142:4eea097334d6 141 /** @} (end addtogroup emlib) */
Anna Bridge 142:4eea097334d6 142
Anna Bridge 142:4eea097334d6 143 #ifdef __cplusplus
Anna Bridge 142:4eea097334d6 144 }
Anna Bridge 142:4eea097334d6 145 #endif
Anna Bridge 142:4eea097334d6 146
Anna Bridge 142:4eea097334d6 147 #endif /* defined(RMU_COUNT) && (RMU_COUNT > 0) */
Anna Bridge 142:4eea097334d6 148 #endif /* EM_RMU_H */