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.
TARGET_EFM32PG_STK3401/TARGET_Silicon_Labs/TARGET_EFM32/emlib/inc/em_burtc.h@156:ff21514d8981, 2017-11-08 (annotated)
- Committer:
- AnnaBridge
- Date:
- Wed Nov 08 17:18:06 2017 +0000
- Revision:
- 156:ff21514d8981
- Child:
- 159:7130f322cb7e
Reverting back to release 154 of the mbed library
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
AnnaBridge | 156:ff21514d8981 | 1 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 2 | * @file em_burtc.h |
AnnaBridge | 156:ff21514d8981 | 3 | * @brief Backup Real Time Counter (BURTC) peripheral API |
AnnaBridge | 156:ff21514d8981 | 4 | * @version 5.1.2 |
AnnaBridge | 156:ff21514d8981 | 5 | ******************************************************************************* |
AnnaBridge | 156:ff21514d8981 | 6 | * @section License |
AnnaBridge | 156:ff21514d8981 | 7 | * <b>Copyright 2016 Silicon Laboratories, Inc. http://www.silabs.com</b> |
AnnaBridge | 156:ff21514d8981 | 8 | ******************************************************************************* |
AnnaBridge | 156:ff21514d8981 | 9 | * |
AnnaBridge | 156:ff21514d8981 | 10 | * Permission is granted to anyone to use this software for any purpose, |
AnnaBridge | 156:ff21514d8981 | 11 | * including commercial applications, and to alter it and redistribute it |
AnnaBridge | 156:ff21514d8981 | 12 | * freely, subject to the following restrictions: |
AnnaBridge | 156:ff21514d8981 | 13 | * |
AnnaBridge | 156:ff21514d8981 | 14 | * 1. The origin of this software must not be misrepresented; you must not |
AnnaBridge | 156:ff21514d8981 | 15 | * claim that you wrote the original software. |
AnnaBridge | 156:ff21514d8981 | 16 | * 2. Altered source versions must be plainly marked as such, and must not be |
AnnaBridge | 156:ff21514d8981 | 17 | * misrepresented as being the original software. |
AnnaBridge | 156:ff21514d8981 | 18 | * 3. This notice may not be removed or altered from any source distribution. |
AnnaBridge | 156:ff21514d8981 | 19 | * |
AnnaBridge | 156:ff21514d8981 | 20 | * DISCLAIMER OF WARRANTY/LIMITATION OF REMEDIES: Silicon Labs has no |
AnnaBridge | 156:ff21514d8981 | 21 | * obligation to support this Software. Silicon Labs is providing the |
AnnaBridge | 156:ff21514d8981 | 22 | * Software "AS IS", with no express or implied warranties of any kind, |
AnnaBridge | 156:ff21514d8981 | 23 | * including, but not limited to, any implied warranties of merchantability |
AnnaBridge | 156:ff21514d8981 | 24 | * or fitness for any particular purpose or warranties against infringement |
AnnaBridge | 156:ff21514d8981 | 25 | * of any proprietary rights of a third party. |
AnnaBridge | 156:ff21514d8981 | 26 | * |
AnnaBridge | 156:ff21514d8981 | 27 | * Silicon Labs will not be liable for any consequential, incidental, or |
AnnaBridge | 156:ff21514d8981 | 28 | * special damages, or any other relief, or for any claim by any third party, |
AnnaBridge | 156:ff21514d8981 | 29 | * arising from your use of this Software. |
AnnaBridge | 156:ff21514d8981 | 30 | * |
AnnaBridge | 156:ff21514d8981 | 31 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 32 | |
AnnaBridge | 156:ff21514d8981 | 33 | #ifndef EM_BURTC_H |
AnnaBridge | 156:ff21514d8981 | 34 | #define EM_BURTC_H |
AnnaBridge | 156:ff21514d8981 | 35 | |
AnnaBridge | 156:ff21514d8981 | 36 | #include "em_device.h" |
AnnaBridge | 156:ff21514d8981 | 37 | #if defined(BURTC_PRESENT) |
AnnaBridge | 156:ff21514d8981 | 38 | |
AnnaBridge | 156:ff21514d8981 | 39 | #include <stdbool.h> |
AnnaBridge | 156:ff21514d8981 | 40 | #include "em_assert.h" |
AnnaBridge | 156:ff21514d8981 | 41 | #include "em_bus.h" |
AnnaBridge | 156:ff21514d8981 | 42 | |
AnnaBridge | 156:ff21514d8981 | 43 | #ifdef __cplusplus |
AnnaBridge | 156:ff21514d8981 | 44 | extern "C" { |
AnnaBridge | 156:ff21514d8981 | 45 | #endif |
AnnaBridge | 156:ff21514d8981 | 46 | |
AnnaBridge | 156:ff21514d8981 | 47 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 48 | * @addtogroup emlib |
AnnaBridge | 156:ff21514d8981 | 49 | * @{ |
AnnaBridge | 156:ff21514d8981 | 50 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 51 | |
AnnaBridge | 156:ff21514d8981 | 52 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 53 | * @addtogroup BURTC |
AnnaBridge | 156:ff21514d8981 | 54 | * @{ |
AnnaBridge | 156:ff21514d8981 | 55 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 56 | |
AnnaBridge | 156:ff21514d8981 | 57 | /******************************************************************************* |
AnnaBridge | 156:ff21514d8981 | 58 | ******************************* DEFINES *********************************** |
AnnaBridge | 156:ff21514d8981 | 59 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 60 | |
AnnaBridge | 156:ff21514d8981 | 61 | /** BURTC clock divisors. These values are valid for the BURTC prescaler. */ |
AnnaBridge | 156:ff21514d8981 | 62 | #define burtcClkDiv_1 1 /**< Divide clock by 1. */ |
AnnaBridge | 156:ff21514d8981 | 63 | #define burtcClkDiv_2 2 /**< Divide clock by 2. */ |
AnnaBridge | 156:ff21514d8981 | 64 | #define burtcClkDiv_4 4 /**< Divide clock by 4. */ |
AnnaBridge | 156:ff21514d8981 | 65 | #define burtcClkDiv_8 8 /**< Divide clock by 8. */ |
AnnaBridge | 156:ff21514d8981 | 66 | #define burtcClkDiv_16 16 /**< Divide clock by 16. */ |
AnnaBridge | 156:ff21514d8981 | 67 | #define burtcClkDiv_32 32 /**< Divide clock by 32. */ |
AnnaBridge | 156:ff21514d8981 | 68 | #define burtcClkDiv_64 64 /**< Divide clock by 64. */ |
AnnaBridge | 156:ff21514d8981 | 69 | #define burtcClkDiv_128 128 /**< Divide clock by 128. */ |
AnnaBridge | 156:ff21514d8981 | 70 | |
AnnaBridge | 156:ff21514d8981 | 71 | /******************************************************************************* |
AnnaBridge | 156:ff21514d8981 | 72 | ******************************** ENUMS ************************************ |
AnnaBridge | 156:ff21514d8981 | 73 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 74 | |
AnnaBridge | 156:ff21514d8981 | 75 | /** BURTC clock selection */ |
AnnaBridge | 156:ff21514d8981 | 76 | typedef enum |
AnnaBridge | 156:ff21514d8981 | 77 | { |
AnnaBridge | 156:ff21514d8981 | 78 | /** Ultra low frequency (1 kHz) clock */ |
AnnaBridge | 156:ff21514d8981 | 79 | burtcClkSelULFRCO = BURTC_CTRL_CLKSEL_ULFRCO, |
AnnaBridge | 156:ff21514d8981 | 80 | /** Low frequency RC oscillator */ |
AnnaBridge | 156:ff21514d8981 | 81 | burtcClkSelLFRCO = BURTC_CTRL_CLKSEL_LFRCO, |
AnnaBridge | 156:ff21514d8981 | 82 | /** Low frequency crystal osciallator */ |
AnnaBridge | 156:ff21514d8981 | 83 | burtcClkSelLFXO = BURTC_CTRL_CLKSEL_LFXO |
AnnaBridge | 156:ff21514d8981 | 84 | } BURTC_ClkSel_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 85 | |
AnnaBridge | 156:ff21514d8981 | 86 | |
AnnaBridge | 156:ff21514d8981 | 87 | /** BURTC mode of operation */ |
AnnaBridge | 156:ff21514d8981 | 88 | typedef enum |
AnnaBridge | 156:ff21514d8981 | 89 | { |
AnnaBridge | 156:ff21514d8981 | 90 | /** Disable BURTC */ |
AnnaBridge | 156:ff21514d8981 | 91 | burtcModeDisable = BURTC_CTRL_MODE_DISABLE, |
AnnaBridge | 156:ff21514d8981 | 92 | /** Enable and start BURTC counter in EM0 to EM2 */ |
AnnaBridge | 156:ff21514d8981 | 93 | burtcModeEM2 = BURTC_CTRL_MODE_EM2EN, |
AnnaBridge | 156:ff21514d8981 | 94 | /** Enable and start BURTC counter in EM0 to EM3 */ |
AnnaBridge | 156:ff21514d8981 | 95 | burtcModeEM3 = BURTC_CTRL_MODE_EM3EN, |
AnnaBridge | 156:ff21514d8981 | 96 | /** Enable and start BURTC counter in EM0 to EM4 */ |
AnnaBridge | 156:ff21514d8981 | 97 | burtcModeEM4 = BURTC_CTRL_MODE_EM4EN, |
AnnaBridge | 156:ff21514d8981 | 98 | } BURTC_Mode_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 99 | |
AnnaBridge | 156:ff21514d8981 | 100 | /** BURTC low power mode */ |
AnnaBridge | 156:ff21514d8981 | 101 | typedef enum |
AnnaBridge | 156:ff21514d8981 | 102 | { |
AnnaBridge | 156:ff21514d8981 | 103 | /** Low Power Mode is disabled */ |
AnnaBridge | 156:ff21514d8981 | 104 | burtcLPDisable = BURTC_LPMODE_LPMODE_DISABLE, |
AnnaBridge | 156:ff21514d8981 | 105 | /** Low Power Mode is always enabled */ |
AnnaBridge | 156:ff21514d8981 | 106 | burtcLPEnable = BURTC_LPMODE_LPMODE_ENABLE, |
AnnaBridge | 156:ff21514d8981 | 107 | /** Low Power Mode when system enters backup mode */ |
AnnaBridge | 156:ff21514d8981 | 108 | burtcLPBU = BURTC_LPMODE_LPMODE_BUEN |
AnnaBridge | 156:ff21514d8981 | 109 | } BURTC_LP_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 110 | |
AnnaBridge | 156:ff21514d8981 | 111 | /******************************************************************************* |
AnnaBridge | 156:ff21514d8981 | 112 | ******************************* STRUCTS *********************************** |
AnnaBridge | 156:ff21514d8981 | 113 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 114 | |
AnnaBridge | 156:ff21514d8981 | 115 | /** BURTC initialization structure. */ |
AnnaBridge | 156:ff21514d8981 | 116 | typedef struct |
AnnaBridge | 156:ff21514d8981 | 117 | { |
AnnaBridge | 156:ff21514d8981 | 118 | bool enable; /**< Enable BURTC after initialization (starts counter) */ |
AnnaBridge | 156:ff21514d8981 | 119 | |
AnnaBridge | 156:ff21514d8981 | 120 | BURTC_Mode_TypeDef mode; /**< Configure energy mode operation */ |
AnnaBridge | 156:ff21514d8981 | 121 | bool debugRun; /**< If true, counter will keep running under debug halt */ |
AnnaBridge | 156:ff21514d8981 | 122 | BURTC_ClkSel_TypeDef clkSel; /**< Select clock source */ |
AnnaBridge | 156:ff21514d8981 | 123 | uint32_t clkDiv; /**< Clock divider; for ULFRCO 1Khz or 2kHz operation */ |
AnnaBridge | 156:ff21514d8981 | 124 | |
AnnaBridge | 156:ff21514d8981 | 125 | uint32_t lowPowerComp; /**< Number of least significantt clock bits to ignore in low power mode */ |
AnnaBridge | 156:ff21514d8981 | 126 | bool timeStamp; /**< Enable time stamp on entering backup power domain */ |
AnnaBridge | 156:ff21514d8981 | 127 | |
AnnaBridge | 156:ff21514d8981 | 128 | bool compare0Top; /**< Set if Compare Value 0 is also top value (counter restart) */ |
AnnaBridge | 156:ff21514d8981 | 129 | |
AnnaBridge | 156:ff21514d8981 | 130 | BURTC_LP_TypeDef lowPowerMode; /**< Low power operation mode, requires LFXO or LFRCO */ |
AnnaBridge | 156:ff21514d8981 | 131 | } BURTC_Init_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 132 | |
AnnaBridge | 156:ff21514d8981 | 133 | /** Default configuration for BURTC init structure */ |
AnnaBridge | 156:ff21514d8981 | 134 | #define BURTC_INIT_DEFAULT \ |
AnnaBridge | 156:ff21514d8981 | 135 | { \ |
AnnaBridge | 156:ff21514d8981 | 136 | true, \ |
AnnaBridge | 156:ff21514d8981 | 137 | burtcModeEM2, \ |
AnnaBridge | 156:ff21514d8981 | 138 | false, \ |
AnnaBridge | 156:ff21514d8981 | 139 | burtcClkSelULFRCO, \ |
AnnaBridge | 156:ff21514d8981 | 140 | burtcClkDiv_1, \ |
AnnaBridge | 156:ff21514d8981 | 141 | 0, \ |
AnnaBridge | 156:ff21514d8981 | 142 | true, \ |
AnnaBridge | 156:ff21514d8981 | 143 | false, \ |
AnnaBridge | 156:ff21514d8981 | 144 | burtcLPDisable, \ |
AnnaBridge | 156:ff21514d8981 | 145 | } |
AnnaBridge | 156:ff21514d8981 | 146 | |
AnnaBridge | 156:ff21514d8981 | 147 | /******************************************************************************* |
AnnaBridge | 156:ff21514d8981 | 148 | ***************************** PROTOTYPES ********************************** |
AnnaBridge | 156:ff21514d8981 | 149 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 150 | |
AnnaBridge | 156:ff21514d8981 | 151 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 152 | * @brief |
AnnaBridge | 156:ff21514d8981 | 153 | * Clear one or more pending BURTC interrupts. |
AnnaBridge | 156:ff21514d8981 | 154 | * |
AnnaBridge | 156:ff21514d8981 | 155 | * @param[in] flags |
AnnaBridge | 156:ff21514d8981 | 156 | * BURTC interrupt sources to clear. Use a set of interrupt flags OR-ed |
AnnaBridge | 156:ff21514d8981 | 157 | * together to clear multiple interrupt sources for the BURTC module |
AnnaBridge | 156:ff21514d8981 | 158 | * (BURTC_IFS_nnn). |
AnnaBridge | 156:ff21514d8981 | 159 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 160 | __STATIC_INLINE void BURTC_IntClear(uint32_t flags) |
AnnaBridge | 156:ff21514d8981 | 161 | { |
AnnaBridge | 156:ff21514d8981 | 162 | BURTC->IFC = flags; |
AnnaBridge | 156:ff21514d8981 | 163 | } |
AnnaBridge | 156:ff21514d8981 | 164 | |
AnnaBridge | 156:ff21514d8981 | 165 | |
AnnaBridge | 156:ff21514d8981 | 166 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 167 | * @brief |
AnnaBridge | 156:ff21514d8981 | 168 | * Disable one or more BURTC interrupts. |
AnnaBridge | 156:ff21514d8981 | 169 | * |
AnnaBridge | 156:ff21514d8981 | 170 | * @param[in] flags |
AnnaBridge | 156:ff21514d8981 | 171 | * BURTC interrupt sources to disable. Use a set of interrupt flags OR-ed |
AnnaBridge | 156:ff21514d8981 | 172 | * together to disable multiple interrupt sources for the BURTC module |
AnnaBridge | 156:ff21514d8981 | 173 | * (BURTC_IFS_nnn). |
AnnaBridge | 156:ff21514d8981 | 174 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 175 | __STATIC_INLINE void BURTC_IntDisable(uint32_t flags) |
AnnaBridge | 156:ff21514d8981 | 176 | { |
AnnaBridge | 156:ff21514d8981 | 177 | BURTC->IEN &= ~(flags); |
AnnaBridge | 156:ff21514d8981 | 178 | } |
AnnaBridge | 156:ff21514d8981 | 179 | |
AnnaBridge | 156:ff21514d8981 | 180 | |
AnnaBridge | 156:ff21514d8981 | 181 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 182 | * @brief |
AnnaBridge | 156:ff21514d8981 | 183 | * Enable one or more BURTC interrupts. |
AnnaBridge | 156:ff21514d8981 | 184 | * |
AnnaBridge | 156:ff21514d8981 | 185 | * @note |
AnnaBridge | 156:ff21514d8981 | 186 | * Depending on the use, a pending interrupt may already be set prior to |
AnnaBridge | 156:ff21514d8981 | 187 | * enabling the interrupt. Consider using BURTC_IntClear() prior to enabling |
AnnaBridge | 156:ff21514d8981 | 188 | * if such a pending interrupt should be ignored. |
AnnaBridge | 156:ff21514d8981 | 189 | * |
AnnaBridge | 156:ff21514d8981 | 190 | * @param[in] flags |
AnnaBridge | 156:ff21514d8981 | 191 | * BURTC interrupt sources to enable. Use a set of interrupt flags OR-ed |
AnnaBridge | 156:ff21514d8981 | 192 | * together to set multiple interrupt sources for the BURTC module |
AnnaBridge | 156:ff21514d8981 | 193 | * (BURTC_IFS_nnn). |
AnnaBridge | 156:ff21514d8981 | 194 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 195 | __STATIC_INLINE void BURTC_IntEnable(uint32_t flags) |
AnnaBridge | 156:ff21514d8981 | 196 | { |
AnnaBridge | 156:ff21514d8981 | 197 | BURTC->IEN |= flags; |
AnnaBridge | 156:ff21514d8981 | 198 | } |
AnnaBridge | 156:ff21514d8981 | 199 | |
AnnaBridge | 156:ff21514d8981 | 200 | |
AnnaBridge | 156:ff21514d8981 | 201 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 202 | * @brief |
AnnaBridge | 156:ff21514d8981 | 203 | * Get pending BURTC interrupt flags. |
AnnaBridge | 156:ff21514d8981 | 204 | * |
AnnaBridge | 156:ff21514d8981 | 205 | * @note |
AnnaBridge | 156:ff21514d8981 | 206 | * The event bits are not cleared by the use of this function. |
AnnaBridge | 156:ff21514d8981 | 207 | * |
AnnaBridge | 156:ff21514d8981 | 208 | * @return |
AnnaBridge | 156:ff21514d8981 | 209 | * Pending BURTC interrupt sources. Returns a set of interrupt flags OR-ed |
AnnaBridge | 156:ff21514d8981 | 210 | * together for multiple interrupt sources in the BURTC module (BURTC_IFS_nnn). |
AnnaBridge | 156:ff21514d8981 | 211 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 212 | __STATIC_INLINE uint32_t BURTC_IntGet(void) |
AnnaBridge | 156:ff21514d8981 | 213 | { |
AnnaBridge | 156:ff21514d8981 | 214 | return(BURTC->IF); |
AnnaBridge | 156:ff21514d8981 | 215 | } |
AnnaBridge | 156:ff21514d8981 | 216 | |
AnnaBridge | 156:ff21514d8981 | 217 | |
AnnaBridge | 156:ff21514d8981 | 218 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 219 | * @brief |
AnnaBridge | 156:ff21514d8981 | 220 | * Get enabled and pending BURTC interrupt flags. |
AnnaBridge | 156:ff21514d8981 | 221 | * |
AnnaBridge | 156:ff21514d8981 | 222 | * @note |
AnnaBridge | 156:ff21514d8981 | 223 | * The event bits are not cleared by the use of this function. |
AnnaBridge | 156:ff21514d8981 | 224 | * |
AnnaBridge | 156:ff21514d8981 | 225 | * @return |
AnnaBridge | 156:ff21514d8981 | 226 | * Pending BURTC interrupt sources that is also enabled. Returns a set of |
AnnaBridge | 156:ff21514d8981 | 227 | * interrupt flags OR-ed together for multiple interrupt sources in the |
AnnaBridge | 156:ff21514d8981 | 228 | * BURTC module (BURTC_IFS_nnn). |
AnnaBridge | 156:ff21514d8981 | 229 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 230 | __STATIC_INLINE uint32_t BURTC_IntGetEnabled(void) |
AnnaBridge | 156:ff21514d8981 | 231 | { |
AnnaBridge | 156:ff21514d8981 | 232 | uint32_t tmp; |
AnnaBridge | 156:ff21514d8981 | 233 | |
AnnaBridge | 156:ff21514d8981 | 234 | /* Get enabled interrupts */ |
AnnaBridge | 156:ff21514d8981 | 235 | tmp = BURTC->IEN; |
AnnaBridge | 156:ff21514d8981 | 236 | |
AnnaBridge | 156:ff21514d8981 | 237 | /* Return set intterupts */ |
AnnaBridge | 156:ff21514d8981 | 238 | return BURTC->IF & tmp; |
AnnaBridge | 156:ff21514d8981 | 239 | } |
AnnaBridge | 156:ff21514d8981 | 240 | |
AnnaBridge | 156:ff21514d8981 | 241 | |
AnnaBridge | 156:ff21514d8981 | 242 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 243 | * @brief |
AnnaBridge | 156:ff21514d8981 | 244 | * Set one or more pending BURTC interrupts from SW. |
AnnaBridge | 156:ff21514d8981 | 245 | * |
AnnaBridge | 156:ff21514d8981 | 246 | * @param[in] flags |
AnnaBridge | 156:ff21514d8981 | 247 | * BURTC interrupt sources to set to pending. Use a set of interrupt flags |
AnnaBridge | 156:ff21514d8981 | 248 | * OR-ed together to set multiple interrupt sources for the BURTC module |
AnnaBridge | 156:ff21514d8981 | 249 | * (BURTC_IFS_nnn). |
AnnaBridge | 156:ff21514d8981 | 250 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 251 | __STATIC_INLINE void BURTC_IntSet(uint32_t flags) |
AnnaBridge | 156:ff21514d8981 | 252 | { |
AnnaBridge | 156:ff21514d8981 | 253 | BURTC->IFS = flags; |
AnnaBridge | 156:ff21514d8981 | 254 | } |
AnnaBridge | 156:ff21514d8981 | 255 | |
AnnaBridge | 156:ff21514d8981 | 256 | |
AnnaBridge | 156:ff21514d8981 | 257 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 258 | * @brief |
AnnaBridge | 156:ff21514d8981 | 259 | * Status of BURTC RAM, timestamp and LP Mode |
AnnaBridge | 156:ff21514d8981 | 260 | * |
AnnaBridge | 156:ff21514d8981 | 261 | * @return A mask logially OR-ed status bits |
AnnaBridge | 156:ff21514d8981 | 262 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 263 | __STATIC_INLINE uint32_t BURTC_Status(void) |
AnnaBridge | 156:ff21514d8981 | 264 | { |
AnnaBridge | 156:ff21514d8981 | 265 | return BURTC->STATUS; |
AnnaBridge | 156:ff21514d8981 | 266 | } |
AnnaBridge | 156:ff21514d8981 | 267 | |
AnnaBridge | 156:ff21514d8981 | 268 | |
AnnaBridge | 156:ff21514d8981 | 269 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 270 | * @brief |
AnnaBridge | 156:ff21514d8981 | 271 | * Clear and reset BURTC status register |
AnnaBridge | 156:ff21514d8981 | 272 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 273 | __STATIC_INLINE void BURTC_StatusClear(void) |
AnnaBridge | 156:ff21514d8981 | 274 | { |
AnnaBridge | 156:ff21514d8981 | 275 | BURTC->CMD = BURTC_CMD_CLRSTATUS; |
AnnaBridge | 156:ff21514d8981 | 276 | } |
AnnaBridge | 156:ff21514d8981 | 277 | |
AnnaBridge | 156:ff21514d8981 | 278 | |
AnnaBridge | 156:ff21514d8981 | 279 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 280 | * @brief |
AnnaBridge | 156:ff21514d8981 | 281 | * Enable or Disable BURTC peripheral reset and start counter |
AnnaBridge | 156:ff21514d8981 | 282 | * @param[in] enable |
AnnaBridge | 156:ff21514d8981 | 283 | * If true; asserts reset to BURTC, halts counter, if false; deassert reset |
AnnaBridge | 156:ff21514d8981 | 284 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 285 | __STATIC_INLINE void BURTC_Enable(bool enable) |
AnnaBridge | 156:ff21514d8981 | 286 | { |
AnnaBridge | 156:ff21514d8981 | 287 | /* Note! If mode is disabled, BURTC counter will not start */ |
AnnaBridge | 156:ff21514d8981 | 288 | EFM_ASSERT(((enable == true) |
AnnaBridge | 156:ff21514d8981 | 289 | && ((BURTC->CTRL & _BURTC_CTRL_MODE_MASK) |
AnnaBridge | 156:ff21514d8981 | 290 | != BURTC_CTRL_MODE_DISABLE)) |
AnnaBridge | 156:ff21514d8981 | 291 | || (enable == false)); |
AnnaBridge | 156:ff21514d8981 | 292 | if (enable) |
AnnaBridge | 156:ff21514d8981 | 293 | { |
AnnaBridge | 156:ff21514d8981 | 294 | BUS_RegBitWrite(&BURTC->CTRL, _BURTC_CTRL_RSTEN_SHIFT, 0); |
AnnaBridge | 156:ff21514d8981 | 295 | } |
AnnaBridge | 156:ff21514d8981 | 296 | else |
AnnaBridge | 156:ff21514d8981 | 297 | { |
AnnaBridge | 156:ff21514d8981 | 298 | BUS_RegBitWrite(&BURTC->CTRL, _BURTC_CTRL_RSTEN_SHIFT, 1); |
AnnaBridge | 156:ff21514d8981 | 299 | } |
AnnaBridge | 156:ff21514d8981 | 300 | } |
AnnaBridge | 156:ff21514d8981 | 301 | |
AnnaBridge | 156:ff21514d8981 | 302 | |
AnnaBridge | 156:ff21514d8981 | 303 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 304 | * @brief Get BURTC counter |
AnnaBridge | 156:ff21514d8981 | 305 | * |
AnnaBridge | 156:ff21514d8981 | 306 | * @return |
AnnaBridge | 156:ff21514d8981 | 307 | * BURTC counter value |
AnnaBridge | 156:ff21514d8981 | 308 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 309 | __STATIC_INLINE uint32_t BURTC_CounterGet(void) |
AnnaBridge | 156:ff21514d8981 | 310 | { |
AnnaBridge | 156:ff21514d8981 | 311 | return BURTC->CNT; |
AnnaBridge | 156:ff21514d8981 | 312 | } |
AnnaBridge | 156:ff21514d8981 | 313 | |
AnnaBridge | 156:ff21514d8981 | 314 | |
AnnaBridge | 156:ff21514d8981 | 315 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 316 | * @brief Get BURTC timestamp for entering BU |
AnnaBridge | 156:ff21514d8981 | 317 | * |
AnnaBridge | 156:ff21514d8981 | 318 | * @return |
AnnaBridge | 156:ff21514d8981 | 319 | * BURTC Time Stamp value |
AnnaBridge | 156:ff21514d8981 | 320 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 321 | __STATIC_INLINE uint32_t BURTC_TimestampGet(void) |
AnnaBridge | 156:ff21514d8981 | 322 | { |
AnnaBridge | 156:ff21514d8981 | 323 | return BURTC->TIMESTAMP; |
AnnaBridge | 156:ff21514d8981 | 324 | } |
AnnaBridge | 156:ff21514d8981 | 325 | |
AnnaBridge | 156:ff21514d8981 | 326 | |
AnnaBridge | 156:ff21514d8981 | 327 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 328 | * @brief Freeze register updates until enabled |
AnnaBridge | 156:ff21514d8981 | 329 | * @param[in] enable If true, registers are not updated until enabled again. |
AnnaBridge | 156:ff21514d8981 | 330 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 331 | __STATIC_INLINE void BURTC_FreezeEnable(bool enable) |
AnnaBridge | 156:ff21514d8981 | 332 | { |
AnnaBridge | 156:ff21514d8981 | 333 | BUS_RegBitWrite(&BURTC->FREEZE, _BURTC_FREEZE_REGFREEZE_SHIFT, enable); |
AnnaBridge | 156:ff21514d8981 | 334 | } |
AnnaBridge | 156:ff21514d8981 | 335 | |
AnnaBridge | 156:ff21514d8981 | 336 | |
AnnaBridge | 156:ff21514d8981 | 337 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 338 | * @brief Shut down power to rentention register bank. |
AnnaBridge | 156:ff21514d8981 | 339 | * @param[in] enable |
AnnaBridge | 156:ff21514d8981 | 340 | * If true, shuts off power to retention registers. |
AnnaBridge | 156:ff21514d8981 | 341 | * @note |
AnnaBridge | 156:ff21514d8981 | 342 | * When power rentention is disabled, it cannot be enabled again (until |
AnnaBridge | 156:ff21514d8981 | 343 | * reset). |
AnnaBridge | 156:ff21514d8981 | 344 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 345 | __STATIC_INLINE void BURTC_Powerdown(bool enable) |
AnnaBridge | 156:ff21514d8981 | 346 | { |
AnnaBridge | 156:ff21514d8981 | 347 | BUS_RegBitWrite(&BURTC->POWERDOWN, _BURTC_POWERDOWN_RAM_SHIFT, enable); |
AnnaBridge | 156:ff21514d8981 | 348 | } |
AnnaBridge | 156:ff21514d8981 | 349 | |
AnnaBridge | 156:ff21514d8981 | 350 | |
AnnaBridge | 156:ff21514d8981 | 351 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 352 | * @brief |
AnnaBridge | 156:ff21514d8981 | 353 | * Set a value in one of the retention registers |
AnnaBridge | 156:ff21514d8981 | 354 | * |
AnnaBridge | 156:ff21514d8981 | 355 | * @param[in] num |
AnnaBridge | 156:ff21514d8981 | 356 | * Register to set |
AnnaBridge | 156:ff21514d8981 | 357 | * @param[in] data |
AnnaBridge | 156:ff21514d8981 | 358 | * Value to put into register |
AnnaBridge | 156:ff21514d8981 | 359 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 360 | __STATIC_INLINE void BURTC_RetRegSet(uint32_t num, uint32_t data) |
AnnaBridge | 156:ff21514d8981 | 361 | { |
AnnaBridge | 156:ff21514d8981 | 362 | EFM_ASSERT(num <= 127); |
AnnaBridge | 156:ff21514d8981 | 363 | |
AnnaBridge | 156:ff21514d8981 | 364 | BURTC->RET[num].REG = data; |
AnnaBridge | 156:ff21514d8981 | 365 | } |
AnnaBridge | 156:ff21514d8981 | 366 | |
AnnaBridge | 156:ff21514d8981 | 367 | |
AnnaBridge | 156:ff21514d8981 | 368 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 369 | * @brief |
AnnaBridge | 156:ff21514d8981 | 370 | * Read a value from one of the retention registers |
AnnaBridge | 156:ff21514d8981 | 371 | * |
AnnaBridge | 156:ff21514d8981 | 372 | * @param[in] num |
AnnaBridge | 156:ff21514d8981 | 373 | * Retention Register to read |
AnnaBridge | 156:ff21514d8981 | 374 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 375 | __STATIC_INLINE uint32_t BURTC_RetRegGet(uint32_t num) |
AnnaBridge | 156:ff21514d8981 | 376 | { |
AnnaBridge | 156:ff21514d8981 | 377 | EFM_ASSERT(num <= 127); |
AnnaBridge | 156:ff21514d8981 | 378 | |
AnnaBridge | 156:ff21514d8981 | 379 | return BURTC->RET[num].REG; |
AnnaBridge | 156:ff21514d8981 | 380 | } |
AnnaBridge | 156:ff21514d8981 | 381 | |
AnnaBridge | 156:ff21514d8981 | 382 | |
AnnaBridge | 156:ff21514d8981 | 383 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 384 | * @brief |
AnnaBridge | 156:ff21514d8981 | 385 | * Lock BURTC registers, will protect from writing new config settings |
AnnaBridge | 156:ff21514d8981 | 386 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 387 | __STATIC_INLINE void BURTC_Lock(void) |
AnnaBridge | 156:ff21514d8981 | 388 | { |
AnnaBridge | 156:ff21514d8981 | 389 | BURTC->LOCK = BURTC_LOCK_LOCKKEY_LOCK; |
AnnaBridge | 156:ff21514d8981 | 390 | } |
AnnaBridge | 156:ff21514d8981 | 391 | |
AnnaBridge | 156:ff21514d8981 | 392 | |
AnnaBridge | 156:ff21514d8981 | 393 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 394 | * @brief |
AnnaBridge | 156:ff21514d8981 | 395 | * Unlock BURTC registers, enable write access to change configuration |
AnnaBridge | 156:ff21514d8981 | 396 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 397 | __STATIC_INLINE void BURTC_Unlock(void) |
AnnaBridge | 156:ff21514d8981 | 398 | { |
AnnaBridge | 156:ff21514d8981 | 399 | BURTC->LOCK = BURTC_LOCK_LOCKKEY_UNLOCK; |
AnnaBridge | 156:ff21514d8981 | 400 | } |
AnnaBridge | 156:ff21514d8981 | 401 | |
AnnaBridge | 156:ff21514d8981 | 402 | |
AnnaBridge | 156:ff21514d8981 | 403 | void BURTC_Reset(void); |
AnnaBridge | 156:ff21514d8981 | 404 | void BURTC_Init(const BURTC_Init_TypeDef *burtcInit); |
AnnaBridge | 156:ff21514d8981 | 405 | void BURTC_CounterReset(void); |
AnnaBridge | 156:ff21514d8981 | 406 | void BURTC_CompareSet(unsigned int comp, uint32_t value); |
AnnaBridge | 156:ff21514d8981 | 407 | uint32_t BURTC_CompareGet(unsigned int comp); |
AnnaBridge | 156:ff21514d8981 | 408 | uint32_t BURTC_ClockFreqGet(void); |
AnnaBridge | 156:ff21514d8981 | 409 | |
AnnaBridge | 156:ff21514d8981 | 410 | |
AnnaBridge | 156:ff21514d8981 | 411 | /** @} (end addtogroup BURTC) */ |
AnnaBridge | 156:ff21514d8981 | 412 | /** @} (end addtogroup emlib) */ |
AnnaBridge | 156:ff21514d8981 | 413 | |
AnnaBridge | 156:ff21514d8981 | 414 | #ifdef __cplusplus |
AnnaBridge | 156:ff21514d8981 | 415 | } |
AnnaBridge | 156:ff21514d8981 | 416 | #endif |
AnnaBridge | 156:ff21514d8981 | 417 | |
AnnaBridge | 156:ff21514d8981 | 418 | #endif /* BURTC_PRESENT */ |
AnnaBridge | 156:ff21514d8981 | 419 | #endif /* EM_BURTC_H */ |