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_TB_SENSE_12/TOOLCHAIN_ARM_STD/em_rtc.h@171:3a7713b1edbc, 2018-11-08 (annotated)
- Committer:
- AnnaBridge
- Date:
- Thu Nov 08 11:45:42 2018 +0000
- Revision:
- 171:3a7713b1edbc
- Parent:
- TARGET_EFM32PG_STK3401/TARGET_Silicon_Labs/TARGET_EFM32/emlib/inc/em_rtc.h@160:5571c4ff569f
mbed library. Release version 164
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
AnnaBridge | 156:ff21514d8981 | 1 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 2 | * @file em_rtc.h |
AnnaBridge | 156:ff21514d8981 | 3 | * @brief Real Time Counter (RTC) peripheral API |
Anna Bridge |
160:5571c4ff569f | 4 | * @version 5.3.3 |
AnnaBridge | 156:ff21514d8981 | 5 | ******************************************************************************* |
Anna Bridge |
160:5571c4ff569f | 6 | * # 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_RTC_H |
AnnaBridge | 156:ff21514d8981 | 34 | #define EM_RTC_H |
AnnaBridge | 156:ff21514d8981 | 35 | |
AnnaBridge | 156:ff21514d8981 | 36 | #include "em_device.h" |
AnnaBridge | 156:ff21514d8981 | 37 | #if defined(RTC_COUNT) && (RTC_COUNT > 0) |
AnnaBridge | 156:ff21514d8981 | 38 | |
AnnaBridge | 156:ff21514d8981 | 39 | #include <stdbool.h> |
AnnaBridge | 156:ff21514d8981 | 40 | |
AnnaBridge | 156:ff21514d8981 | 41 | #ifdef __cplusplus |
AnnaBridge | 156:ff21514d8981 | 42 | extern "C" { |
AnnaBridge | 156:ff21514d8981 | 43 | #endif |
AnnaBridge | 156:ff21514d8981 | 44 | |
AnnaBridge | 156:ff21514d8981 | 45 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 46 | * @addtogroup emlib |
AnnaBridge | 156:ff21514d8981 | 47 | * @{ |
AnnaBridge | 156:ff21514d8981 | 48 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 49 | |
AnnaBridge | 156:ff21514d8981 | 50 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 51 | * @addtogroup RTC |
AnnaBridge | 156:ff21514d8981 | 52 | * @{ |
AnnaBridge | 156:ff21514d8981 | 53 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 54 | |
AnnaBridge | 156:ff21514d8981 | 55 | /******************************************************************************* |
AnnaBridge | 156:ff21514d8981 | 56 | ******************************* STRUCTS *********************************** |
AnnaBridge | 156:ff21514d8981 | 57 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 58 | |
AnnaBridge | 156:ff21514d8981 | 59 | /** RTC initialization structure. */ |
Anna Bridge |
160:5571c4ff569f | 60 | typedef struct { |
AnnaBridge | 156:ff21514d8981 | 61 | bool enable; /**< Start counting when init completed. */ |
AnnaBridge | 156:ff21514d8981 | 62 | bool debugRun; /**< Counter shall keep running during debug halt. */ |
AnnaBridge | 156:ff21514d8981 | 63 | bool comp0Top; /**< Use compare register 0 as max count value. */ |
AnnaBridge | 156:ff21514d8981 | 64 | } RTC_Init_TypeDef; |
AnnaBridge | 156:ff21514d8981 | 65 | |
AnnaBridge | 156:ff21514d8981 | 66 | /** Suggested default config for RTC init structure. */ |
AnnaBridge | 156:ff21514d8981 | 67 | #define RTC_INIT_DEFAULT \ |
Anna Bridge |
160:5571c4ff569f | 68 | { \ |
Anna Bridge |
160:5571c4ff569f | 69 | true, /* Start counting when init done */ \ |
Anna Bridge |
160:5571c4ff569f | 70 | false, /* Disable updating during debug halt */ \ |
Anna Bridge |
160:5571c4ff569f | 71 | true /* Restart counting from 0 when reaching COMP0 */ \ |
Anna Bridge |
160:5571c4ff569f | 72 | } |
AnnaBridge | 156:ff21514d8981 | 73 | |
AnnaBridge | 156:ff21514d8981 | 74 | /******************************************************************************* |
AnnaBridge | 156:ff21514d8981 | 75 | ***************************** PROTOTYPES ********************************** |
AnnaBridge | 156:ff21514d8981 | 76 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 77 | |
AnnaBridge | 156:ff21514d8981 | 78 | uint32_t RTC_CompareGet(unsigned int comp); |
AnnaBridge | 156:ff21514d8981 | 79 | void RTC_CompareSet(unsigned int comp, uint32_t value); |
AnnaBridge | 156:ff21514d8981 | 80 | |
AnnaBridge | 156:ff21514d8981 | 81 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 82 | * @brief |
AnnaBridge | 156:ff21514d8981 | 83 | * Get RTC counter value. |
AnnaBridge | 156:ff21514d8981 | 84 | * |
AnnaBridge | 156:ff21514d8981 | 85 | * @return |
AnnaBridge | 156:ff21514d8981 | 86 | * Current RTC counter value. |
AnnaBridge | 156:ff21514d8981 | 87 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 88 | __STATIC_INLINE uint32_t RTC_CounterGet(void) |
AnnaBridge | 156:ff21514d8981 | 89 | { |
AnnaBridge | 156:ff21514d8981 | 90 | return RTC->CNT; |
AnnaBridge | 156:ff21514d8981 | 91 | } |
AnnaBridge | 156:ff21514d8981 | 92 | |
AnnaBridge | 156:ff21514d8981 | 93 | #if !defined(_EFM32_GECKO_FAMILY) |
AnnaBridge | 156:ff21514d8981 | 94 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 95 | * @brief |
AnnaBridge | 156:ff21514d8981 | 96 | * Set the RTC counter value. |
AnnaBridge | 156:ff21514d8981 | 97 | * |
AnnaBridge | 156:ff21514d8981 | 98 | * @param[in] value |
AnnaBridge | 156:ff21514d8981 | 99 | * The new RTC counter value. |
AnnaBridge | 156:ff21514d8981 | 100 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 101 | __STATIC_INLINE void RTC_CounterSet(uint32_t value) |
AnnaBridge | 156:ff21514d8981 | 102 | { |
AnnaBridge | 156:ff21514d8981 | 103 | RTC->CNT = value; |
AnnaBridge | 156:ff21514d8981 | 104 | } |
AnnaBridge | 156:ff21514d8981 | 105 | #endif |
AnnaBridge | 156:ff21514d8981 | 106 | |
AnnaBridge | 156:ff21514d8981 | 107 | void RTC_CounterReset(void); |
AnnaBridge | 156:ff21514d8981 | 108 | void RTC_Enable(bool enable); |
Anna Bridge |
160:5571c4ff569f | 109 | #if defined(_RTC_FREEZE_MASK) |
AnnaBridge | 156:ff21514d8981 | 110 | void RTC_FreezeEnable(bool enable); |
Anna Bridge |
160:5571c4ff569f | 111 | #endif |
AnnaBridge | 156:ff21514d8981 | 112 | void RTC_Init(const RTC_Init_TypeDef *init); |
AnnaBridge | 156:ff21514d8981 | 113 | |
AnnaBridge | 156:ff21514d8981 | 114 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 115 | * @brief |
AnnaBridge | 156:ff21514d8981 | 116 | * Clear one or more pending RTC interrupts. |
AnnaBridge | 156:ff21514d8981 | 117 | * |
AnnaBridge | 156:ff21514d8981 | 118 | * @param[in] flags |
AnnaBridge | 156:ff21514d8981 | 119 | * RTC interrupt sources to clear. Use a set of interrupt flags OR-ed |
AnnaBridge | 156:ff21514d8981 | 120 | * together to clear multiple interrupt sources for the RTC module |
AnnaBridge | 156:ff21514d8981 | 121 | * (RTC_IFS_nnn). |
AnnaBridge | 156:ff21514d8981 | 122 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 123 | __STATIC_INLINE void RTC_IntClear(uint32_t flags) |
AnnaBridge | 156:ff21514d8981 | 124 | { |
AnnaBridge | 156:ff21514d8981 | 125 | RTC->IFC = flags; |
AnnaBridge | 156:ff21514d8981 | 126 | } |
AnnaBridge | 156:ff21514d8981 | 127 | |
AnnaBridge | 156:ff21514d8981 | 128 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 129 | * @brief |
AnnaBridge | 156:ff21514d8981 | 130 | * Disable one or more RTC interrupts. |
AnnaBridge | 156:ff21514d8981 | 131 | * |
AnnaBridge | 156:ff21514d8981 | 132 | * @param[in] flags |
AnnaBridge | 156:ff21514d8981 | 133 | * RTC interrupt sources to disable. Use a set of interrupt flags OR-ed |
AnnaBridge | 156:ff21514d8981 | 134 | * together to disable multiple interrupt sources for the RTC module |
AnnaBridge | 156:ff21514d8981 | 135 | * (RTC_IFS_nnn). |
AnnaBridge | 156:ff21514d8981 | 136 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 137 | __STATIC_INLINE void RTC_IntDisable(uint32_t flags) |
AnnaBridge | 156:ff21514d8981 | 138 | { |
AnnaBridge | 156:ff21514d8981 | 139 | RTC->IEN &= ~flags; |
AnnaBridge | 156:ff21514d8981 | 140 | } |
AnnaBridge | 156:ff21514d8981 | 141 | |
AnnaBridge | 156:ff21514d8981 | 142 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 143 | * @brief |
AnnaBridge | 156:ff21514d8981 | 144 | * Enable one or more RTC interrupts. |
AnnaBridge | 156:ff21514d8981 | 145 | * |
AnnaBridge | 156:ff21514d8981 | 146 | * @note |
AnnaBridge | 156:ff21514d8981 | 147 | * Depending on the use, a pending interrupt may already be set prior to |
AnnaBridge | 156:ff21514d8981 | 148 | * enabling the interrupt. Consider using RTC_IntClear() prior to enabling |
AnnaBridge | 156:ff21514d8981 | 149 | * if such a pending interrupt should be ignored. |
AnnaBridge | 156:ff21514d8981 | 150 | * |
AnnaBridge | 156:ff21514d8981 | 151 | * @param[in] flags |
AnnaBridge | 156:ff21514d8981 | 152 | * RTC interrupt sources to enable. Use a set of interrupt flags OR-ed |
AnnaBridge | 156:ff21514d8981 | 153 | * together to set multiple interrupt sources for the RTC module |
AnnaBridge | 156:ff21514d8981 | 154 | * (RTC_IFS_nnn). |
AnnaBridge | 156:ff21514d8981 | 155 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 156 | __STATIC_INLINE void RTC_IntEnable(uint32_t flags) |
AnnaBridge | 156:ff21514d8981 | 157 | { |
AnnaBridge | 156:ff21514d8981 | 158 | RTC->IEN |= flags; |
AnnaBridge | 156:ff21514d8981 | 159 | } |
AnnaBridge | 156:ff21514d8981 | 160 | |
AnnaBridge | 156:ff21514d8981 | 161 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 162 | * @brief |
AnnaBridge | 156:ff21514d8981 | 163 | * Get pending RTC interrupt flags. |
AnnaBridge | 156:ff21514d8981 | 164 | * |
AnnaBridge | 156:ff21514d8981 | 165 | * @note |
AnnaBridge | 156:ff21514d8981 | 166 | * The event bits are not cleared by the use of this function. |
AnnaBridge | 156:ff21514d8981 | 167 | * |
AnnaBridge | 156:ff21514d8981 | 168 | * @return |
AnnaBridge | 156:ff21514d8981 | 169 | * Pending RTC interrupt sources. Returns a set of interrupt flags OR-ed |
AnnaBridge | 156:ff21514d8981 | 170 | * together for multiple interrupt sources in the RTC module (RTC_IFS_nnn). |
AnnaBridge | 156:ff21514d8981 | 171 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 172 | __STATIC_INLINE uint32_t RTC_IntGet(void) |
AnnaBridge | 156:ff21514d8981 | 173 | { |
AnnaBridge | 156:ff21514d8981 | 174 | return RTC->IF; |
AnnaBridge | 156:ff21514d8981 | 175 | } |
AnnaBridge | 156:ff21514d8981 | 176 | |
AnnaBridge | 156:ff21514d8981 | 177 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 178 | * @brief |
AnnaBridge | 156:ff21514d8981 | 179 | * Get enabled and pending RTC interrupt flags. |
AnnaBridge | 156:ff21514d8981 | 180 | * Useful for handling more interrupt sources in the same interrupt handler. |
AnnaBridge | 156:ff21514d8981 | 181 | * |
AnnaBridge | 156:ff21514d8981 | 182 | * @note |
AnnaBridge | 156:ff21514d8981 | 183 | * Interrupt flags are not cleared by the use of this function. |
AnnaBridge | 156:ff21514d8981 | 184 | * |
AnnaBridge | 156:ff21514d8981 | 185 | * @return |
AnnaBridge | 156:ff21514d8981 | 186 | * Pending and enabled RTC interrupt sources |
AnnaBridge | 156:ff21514d8981 | 187 | * The return value is the bitwise AND of |
AnnaBridge | 156:ff21514d8981 | 188 | * - the enabled interrupt sources in RTC_IEN and |
AnnaBridge | 156:ff21514d8981 | 189 | * - the pending interrupt flags RTC_IF |
AnnaBridge | 156:ff21514d8981 | 190 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 191 | __STATIC_INLINE uint32_t RTC_IntGetEnabled(void) |
AnnaBridge | 156:ff21514d8981 | 192 | { |
AnnaBridge | 156:ff21514d8981 | 193 | uint32_t ien; |
AnnaBridge | 156:ff21514d8981 | 194 | |
AnnaBridge | 156:ff21514d8981 | 195 | ien = RTC->IEN; |
AnnaBridge | 156:ff21514d8981 | 196 | return RTC->IF & ien; |
AnnaBridge | 156:ff21514d8981 | 197 | } |
AnnaBridge | 156:ff21514d8981 | 198 | |
AnnaBridge | 156:ff21514d8981 | 199 | /***************************************************************************//** |
AnnaBridge | 156:ff21514d8981 | 200 | * @brief |
AnnaBridge | 156:ff21514d8981 | 201 | * Set one or more pending RTC interrupts from SW. |
AnnaBridge | 156:ff21514d8981 | 202 | * |
AnnaBridge | 156:ff21514d8981 | 203 | * @param[in] flags |
AnnaBridge | 156:ff21514d8981 | 204 | * RTC interrupt sources to set to pending. Use a set of interrupt flags |
AnnaBridge | 156:ff21514d8981 | 205 | * OR-ed together to set multiple interrupt sources for the RTC module |
AnnaBridge | 156:ff21514d8981 | 206 | * (RTC_IFS_nnn). |
AnnaBridge | 156:ff21514d8981 | 207 | ******************************************************************************/ |
AnnaBridge | 156:ff21514d8981 | 208 | __STATIC_INLINE void RTC_IntSet(uint32_t flags) |
AnnaBridge | 156:ff21514d8981 | 209 | { |
AnnaBridge | 156:ff21514d8981 | 210 | RTC->IFS = flags; |
AnnaBridge | 156:ff21514d8981 | 211 | } |
AnnaBridge | 156:ff21514d8981 | 212 | |
AnnaBridge | 156:ff21514d8981 | 213 | void RTC_Reset(void); |
AnnaBridge | 156:ff21514d8981 | 214 | |
AnnaBridge | 156:ff21514d8981 | 215 | /** @} (end addtogroup RTC) */ |
AnnaBridge | 156:ff21514d8981 | 216 | /** @} (end addtogroup emlib) */ |
AnnaBridge | 156:ff21514d8981 | 217 | |
AnnaBridge | 156:ff21514d8981 | 218 | #ifdef __cplusplus |
AnnaBridge | 156:ff21514d8981 | 219 | } |
AnnaBridge | 156:ff21514d8981 | 220 | #endif |
AnnaBridge | 156:ff21514d8981 | 221 | |
AnnaBridge | 156:ff21514d8981 | 222 | #endif /* defined(RTC_COUNT) && (RTC_COUNT > 0) */ |
AnnaBridge | 156:ff21514d8981 | 223 | #endif /* EM_RTC_H */ |