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:
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?

UserRevisionLine numberNew 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 */