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:
<>
Date:
Thu Oct 27 16:45:56 2016 +0100
Revision:
128:9bcdf88f62b0
Parent:
113:f141b2784e32
Child:
139:856d2700e60b
Release 128 of the mbed library

Ports for Upcoming Targets


Fixes and Changes

2966: Add kw24 support https://github.com/ARMmbed/mbed-os/pull/2966
3068: MultiTech mDot - clean up PeripheralPins.c and add new pin names https://github.com/ARMmbed/mbed-os/pull/3068
3089: Kinetis HAL: Remove clock initialization code from serial and ticker https://github.com/ARMmbed/mbed-os/pull/3089
2943: [NRF5] NVIC_SetVector functionality https://github.com/ARMmbed/mbed-os/pull/2943
2938: InterruptIn changes in NCS36510 HAL. https://github.com/ARMmbed/mbed-os/pull/2938
3108: Fix sleep function for NRF52. https://github.com/ARMmbed/mbed-os/pull/3108
3076: STM32F1: Correct timer master value reading https://github.com/ARMmbed/mbed-os/pull/3076
3085: Add LOWPOWERTIMER capability for NUCLEO_F303ZE https://github.com/ARMmbed/mbed-os/pull/3085
3046: [BEETLE] Update BLE stack on Beetle board https://github.com/ARMmbed/mbed-os/pull/3046
3122: [Silicon Labs] Update of Silicon Labs HAL https://github.com/ARMmbed/mbed-os/pull/3122
3022: OnSemi RAM usage fix https://github.com/ARMmbed/mbed-os/pull/3022
3121: STM32F3: Correct UART4 and UART5 defines when using DEVICE_SERIAL_ASYNCH https://github.com/ARMmbed/mbed-os/pull/3121
3142: Targets- NUMAKER_PFM_NUC47216 remove mbed 2 https://github.com/ARMmbed/mbed-os/pull/3142

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Kojto 113:f141b2784e32 1 /***************************************************************************//**
Kojto 113:f141b2784e32 2 * @file
Kojto 113:f141b2784e32 3 * @brief Real Time Counter (RTCC) peripheral API.
<> 128:9bcdf88f62b0 4 * @version 5.0.0
Kojto 113:f141b2784e32 5 *******************************************************************************
Kojto 113:f141b2784e32 6 * @section License
<> 128:9bcdf88f62b0 7 * <b>Copyright 2016 Silicon Laboratories, Inc. http://www.silabs.com</b>
Kojto 113:f141b2784e32 8 *******************************************************************************
Kojto 113:f141b2784e32 9 *
Kojto 113:f141b2784e32 10 * Permission is granted to anyone to use this software for any purpose,
Kojto 113:f141b2784e32 11 * including commercial applications, and to alter it and redistribute it
Kojto 113:f141b2784e32 12 * freely, subject to the following restrictions:
Kojto 113:f141b2784e32 13 *
Kojto 113:f141b2784e32 14 * 1. The origin of this software must not be misrepresented; you must not
Kojto 113:f141b2784e32 15 * claim that you wrote the original software.
Kojto 113:f141b2784e32 16 * 2. Altered source versions must be plainly marked as such, and must not be
Kojto 113:f141b2784e32 17 * misrepresented as being the original software.
Kojto 113:f141b2784e32 18 * 3. This notice may not be removed or altered from any source distribution.
Kojto 113:f141b2784e32 19 *
Kojto 113:f141b2784e32 20 * DISCLAIMER OF WARRANTY/LIMITATION OF REMEDIES: Silicon Labs has no
Kojto 113:f141b2784e32 21 * obligation to support this Software. Silicon Labs is providing the
Kojto 113:f141b2784e32 22 * Software "AS IS", with no express or implied warranties of any kind,
Kojto 113:f141b2784e32 23 * including, but not limited to, any implied warranties of merchantability
Kojto 113:f141b2784e32 24 * or fitness for any particular purpose or warranties against infringement
Kojto 113:f141b2784e32 25 * of any proprietary rights of a third party.
Kojto 113:f141b2784e32 26 *
Kojto 113:f141b2784e32 27 * Silicon Labs will not be liable for any consequential, incidental, or
Kojto 113:f141b2784e32 28 * special damages, or any other relief, or for any claim by any third party,
Kojto 113:f141b2784e32 29 * arising from your use of this Software.
Kojto 113:f141b2784e32 30 *
Kojto 113:f141b2784e32 31 ******************************************************************************/
Kojto 113:f141b2784e32 32
<> 128:9bcdf88f62b0 33 #ifndef EM_RTCC_H
<> 128:9bcdf88f62b0 34 #define EM_RTCC_H
Kojto 113:f141b2784e32 35
Kojto 113:f141b2784e32 36 #include "em_device.h"
Kojto 113:f141b2784e32 37 #if defined( RTCC_COUNT ) && ( RTCC_COUNT == 1 )
Kojto 113:f141b2784e32 38
Kojto 113:f141b2784e32 39 #include <stdbool.h>
Kojto 113:f141b2784e32 40 #include "em_assert.h"
Kojto 113:f141b2784e32 41
Kojto 113:f141b2784e32 42 #ifdef __cplusplus
Kojto 113:f141b2784e32 43 extern "C" {
Kojto 113:f141b2784e32 44 #endif
Kojto 113:f141b2784e32 45
Kojto 113:f141b2784e32 46 /***************************************************************************//**
<> 128:9bcdf88f62b0 47 * @addtogroup emlib
Kojto 113:f141b2784e32 48 * @{
Kojto 113:f141b2784e32 49 ******************************************************************************/
Kojto 113:f141b2784e32 50
Kojto 113:f141b2784e32 51 /***************************************************************************//**
Kojto 113:f141b2784e32 52 * @addtogroup RTCC
Kojto 113:f141b2784e32 53 * @{
Kojto 113:f141b2784e32 54 ******************************************************************************/
Kojto 113:f141b2784e32 55
Kojto 113:f141b2784e32 56 /*******************************************************************************
Kojto 113:f141b2784e32 57 ********************************* ENUM ************************************
Kojto 113:f141b2784e32 58 ******************************************************************************/
Kojto 113:f141b2784e32 59
Kojto 113:f141b2784e32 60 /** Operational mode of the counter. */
Kojto 113:f141b2784e32 61 typedef enum
Kojto 113:f141b2784e32 62 {
Kojto 113:f141b2784e32 63 /** Normal counter mode. The counter is incremented by 1 for each tick. */
Kojto 113:f141b2784e32 64 rtccCntModeNormal = _RTCC_CTRL_CNTTICK_PRESC,
Kojto 113:f141b2784e32 65
Kojto 113:f141b2784e32 66 /** Calendar mode. Refer to the RTCC chapter of the Reference Manual for more
Kojto 113:f141b2784e32 67 * details on the calendar mode. */
Kojto 113:f141b2784e32 68 rtccCntModeCalendar = _RTCC_CTRL_CNTTICK_CCV0MATCH
Kojto 113:f141b2784e32 69 } RTCC_CntMode_TypeDef;
Kojto 113:f141b2784e32 70
Kojto 113:f141b2784e32 71 /** Counter prescaler selection. */
Kojto 113:f141b2784e32 72 typedef enum
Kojto 113:f141b2784e32 73 {
Kojto 113:f141b2784e32 74 rtccCntPresc_1 = _RTCC_CTRL_CNTPRESC_DIV1, /**< Divide clock by 1. */
Kojto 113:f141b2784e32 75 rtccCntPresc_2 = _RTCC_CTRL_CNTPRESC_DIV2, /**< Divide clock by 2. */
Kojto 113:f141b2784e32 76 rtccCntPresc_4 = _RTCC_CTRL_CNTPRESC_DIV4, /**< Divide clock by 4. */
Kojto 113:f141b2784e32 77 rtccCntPresc_8 = _RTCC_CTRL_CNTPRESC_DIV8, /**< Divide clock by 8. */
Kojto 113:f141b2784e32 78 rtccCntPresc_16 = _RTCC_CTRL_CNTPRESC_DIV16, /**< Divide clock by 16. */
Kojto 113:f141b2784e32 79 rtccCntPresc_32 = _RTCC_CTRL_CNTPRESC_DIV32, /**< Divide clock by 32. */
Kojto 113:f141b2784e32 80 rtccCntPresc_64 = _RTCC_CTRL_CNTPRESC_DIV64, /**< Divide clock by 64. */
Kojto 113:f141b2784e32 81 rtccCntPresc_128 = _RTCC_CTRL_CNTPRESC_DIV128, /**< Divide clock by 128. */
Kojto 113:f141b2784e32 82 rtccCntPresc_256 = _RTCC_CTRL_CNTPRESC_DIV256, /**< Divide clock by 256. */
Kojto 113:f141b2784e32 83 rtccCntPresc_512 = _RTCC_CTRL_CNTPRESC_DIV512, /**< Divide clock by 512. */
Kojto 113:f141b2784e32 84 rtccCntPresc_1024 = _RTCC_CTRL_CNTPRESC_DIV1024, /**< Divide clock by 1024. */
Kojto 113:f141b2784e32 85 rtccCntPresc_2048 = _RTCC_CTRL_CNTPRESC_DIV2048, /**< Divide clock by 2048. */
Kojto 113:f141b2784e32 86 rtccCntPresc_4096 = _RTCC_CTRL_CNTPRESC_DIV4096, /**< Divide clock by 4096. */
Kojto 113:f141b2784e32 87 rtccCntPresc_8192 = _RTCC_CTRL_CNTPRESC_DIV8192, /**< Divide clock by 8192. */
Kojto 113:f141b2784e32 88 rtccCntPresc_16384 = _RTCC_CTRL_CNTPRESC_DIV16384, /**< Divide clock by 16384. */
Kojto 113:f141b2784e32 89 rtccCntPresc_32768 = _RTCC_CTRL_CNTPRESC_DIV32768 /**< Divide clock by 32768. */
Kojto 113:f141b2784e32 90 } RTCC_CntPresc_TypeDef;
Kojto 113:f141b2784e32 91
Kojto 113:f141b2784e32 92
Kojto 113:f141b2784e32 93 /** Prescaler mode of the RTCC counter. */
Kojto 113:f141b2784e32 94 typedef enum
Kojto 113:f141b2784e32 95 {
Kojto 113:f141b2784e32 96 /** CNT register ticks according to the prescaler value. */
Kojto 113:f141b2784e32 97 rtccCntTickPresc = _RTCC_CTRL_CNTTICK_PRESC,
Kojto 113:f141b2784e32 98
Kojto 113:f141b2784e32 99 /** CNT register ticks when PRECNT matches the 15 least significant bits of
Kojto 113:f141b2784e32 100 * ch. 0 CCV register. */
Kojto 113:f141b2784e32 101 rtccCntTickCCV0Match = _RTCC_CTRL_CNTTICK_CCV0MATCH
Kojto 113:f141b2784e32 102 } RTCC_PrescMode_TypeDef;
Kojto 113:f141b2784e32 103
Kojto 113:f141b2784e32 104
Kojto 113:f141b2784e32 105 /** Capture/Compare channel mode. */
Kojto 113:f141b2784e32 106 typedef enum
Kojto 113:f141b2784e32 107 {
Kojto 113:f141b2784e32 108 rtccCapComChModeOff = _RTCC_CC_CTRL_MODE_OFF, /**< Capture/Compare channel turned off. */
Kojto 113:f141b2784e32 109 rtccCapComChModeCapture = _RTCC_CC_CTRL_MODE_INPUTCAPTURE, /**< Capture mode. */
Kojto 113:f141b2784e32 110 rtccCapComChModeCompare = _RTCC_CC_CTRL_MODE_OUTPUTCOMPARE, /**< Compare mode. */
Kojto 113:f141b2784e32 111 } RTCC_CapComChMode_TypeDef;
Kojto 113:f141b2784e32 112
Kojto 113:f141b2784e32 113 /** Compare match output action mode. */
Kojto 113:f141b2784e32 114 typedef enum
Kojto 113:f141b2784e32 115 {
Kojto 113:f141b2784e32 116 rtccCompMatchOutActionPulse = _RTCC_CC_CTRL_CMOA_PULSE, /**< Generate a pulse. */
Kojto 113:f141b2784e32 117 rtccCompMatchOutActionToggle = _RTCC_CC_CTRL_CMOA_TOGGLE, /**< Toggle output. */
Kojto 113:f141b2784e32 118 rtccCompMatchOutActionClear = _RTCC_CC_CTRL_CMOA_CLEAR, /**< Clear output. */
Kojto 113:f141b2784e32 119 rtccCompMatchOutActionSet = _RTCC_CC_CTRL_CMOA_SET /**< Set output. */
Kojto 113:f141b2784e32 120 } RTCC_CompMatchOutAction_TypeDef;
Kojto 113:f141b2784e32 121
Kojto 113:f141b2784e32 122
Kojto 113:f141b2784e32 123 /** PRS input sources. */
Kojto 113:f141b2784e32 124 typedef enum
Kojto 113:f141b2784e32 125 {
Kojto 113:f141b2784e32 126 rtccPRSCh0 = _RTCC_CC_CTRL_PRSSEL_PRSCH0, /**< PRS channel 0. */
Kojto 113:f141b2784e32 127 rtccPRSCh1 = _RTCC_CC_CTRL_PRSSEL_PRSCH1, /**< PRS channel 1. */
Kojto 113:f141b2784e32 128 rtccPRSCh2 = _RTCC_CC_CTRL_PRSSEL_PRSCH2, /**< PRS channel 2. */
Kojto 113:f141b2784e32 129 rtccPRSCh3 = _RTCC_CC_CTRL_PRSSEL_PRSCH3, /**< PRS channel 3. */
Kojto 113:f141b2784e32 130 rtccPRSCh4 = _RTCC_CC_CTRL_PRSSEL_PRSCH4, /**< PRS channel 4. */
Kojto 113:f141b2784e32 131 rtccPRSCh5 = _RTCC_CC_CTRL_PRSSEL_PRSCH5, /**< PRS channel 5. */
Kojto 113:f141b2784e32 132 rtccPRSCh6 = _RTCC_CC_CTRL_PRSSEL_PRSCH6, /**< PRS channel 6. */
Kojto 113:f141b2784e32 133 rtccPRSCh7 = _RTCC_CC_CTRL_PRSSEL_PRSCH7, /**< PRS channel 7. */
Kojto 113:f141b2784e32 134 rtccPRSCh8 = _RTCC_CC_CTRL_PRSSEL_PRSCH8, /**< PRS channel 8. */
Kojto 113:f141b2784e32 135 rtccPRSCh9 = _RTCC_CC_CTRL_PRSSEL_PRSCH9, /**< PRS channel 9. */
Kojto 113:f141b2784e32 136 rtccPRSCh10 = _RTCC_CC_CTRL_PRSSEL_PRSCH10, /**< PRS channel 10. */
Kojto 113:f141b2784e32 137 rtccPRSCh11 = _RTCC_CC_CTRL_PRSSEL_PRSCH11 /**< PRS channel 11. */
Kojto 113:f141b2784e32 138 } RTCC_PRSSel_TypeDef;
Kojto 113:f141b2784e32 139
Kojto 113:f141b2784e32 140
Kojto 113:f141b2784e32 141 /** Input edge select. */
Kojto 113:f141b2784e32 142 typedef enum
Kojto 113:f141b2784e32 143 {
Kojto 113:f141b2784e32 144 rtccInEdgeRising = _RTCC_CC_CTRL_ICEDGE_RISING, /**< Rising edges detected. */
Kojto 113:f141b2784e32 145 rtccInEdgeFalling = _RTCC_CC_CTRL_ICEDGE_FALLING, /**< Falling edges detected. */
Kojto 113:f141b2784e32 146 rtccInEdgeBoth = _RTCC_CC_CTRL_ICEDGE_BOTH, /**< Both edges detected. */
Kojto 113:f141b2784e32 147 rtccInEdgeNone = _RTCC_CC_CTRL_ICEDGE_NONE /**< No edge detection, signal is left as is. */
Kojto 113:f141b2784e32 148 } RTCC_InEdgeSel_TypeDef;
Kojto 113:f141b2784e32 149
Kojto 113:f141b2784e32 150
Kojto 113:f141b2784e32 151 /** Capture/Compare channel compare mode. */
Kojto 113:f141b2784e32 152 typedef enum
Kojto 113:f141b2784e32 153 {
Kojto 113:f141b2784e32 154 /** CCVx is compared with the CNT register. */
Kojto 113:f141b2784e32 155 rtccCompBaseCnt = _RTCC_CC_CTRL_COMPBASE_CNT,
Kojto 113:f141b2784e32 156
Kojto 113:f141b2784e32 157 /** CCVx is compared with a CNT[16:0] and PRECNT[14:0]. */
Kojto 113:f141b2784e32 158 rtccCompBasePreCnt = _RTCC_CC_CTRL_COMPBASE_PRECNT
Kojto 113:f141b2784e32 159 } RTCC_CompBase_TypeDef;
Kojto 113:f141b2784e32 160
Kojto 113:f141b2784e32 161 /** Day compare mode. */
Kojto 113:f141b2784e32 162 typedef enum
Kojto 113:f141b2784e32 163 {
Kojto 113:f141b2784e32 164 rtccDayCompareModeMonth = _RTCC_CC_CTRL_DAYCC_MONTH, /**< Day of month is selected for Capture/Compare. */
Kojto 113:f141b2784e32 165 rtccDayCompareModeWeek = _RTCC_CC_CTRL_DAYCC_WEEK /**< Day of week is selected for Capture/Compare. */
Kojto 113:f141b2784e32 166 } RTCC_DayCompareMode_TypeDef;
Kojto 113:f141b2784e32 167
Kojto 113:f141b2784e32 168 /*******************************************************************************
Kojto 113:f141b2784e32 169 ******************************* STRUCTS ***********************************
Kojto 113:f141b2784e32 170 ******************************************************************************/
Kojto 113:f141b2784e32 171
Kojto 113:f141b2784e32 172 /** RTCC initialization structure. */
Kojto 113:f141b2784e32 173 typedef struct
Kojto 113:f141b2784e32 174 {
Kojto 113:f141b2784e32 175 /** Enable/disable counting when initialization is completed. */
Kojto 113:f141b2784e32 176 bool enable;
Kojto 113:f141b2784e32 177
Kojto 113:f141b2784e32 178 /** Enable/disable timer counting during debug halt. */
Kojto 113:f141b2784e32 179 bool debugRun;
Kojto 113:f141b2784e32 180
Kojto 113:f141b2784e32 181 /** Enable/disable precounter wrap on ch. 0 CCV value. */
Kojto 113:f141b2784e32 182 bool precntWrapOnCCV0;
Kojto 113:f141b2784e32 183
Kojto 113:f141b2784e32 184 /** Enable/disable counter wrap on ch. 1 CCV value. */
Kojto 113:f141b2784e32 185 bool cntWrapOnCCV1;
Kojto 113:f141b2784e32 186
Kojto 113:f141b2784e32 187 /** Counter prescaler. */
Kojto 113:f141b2784e32 188 RTCC_CntPresc_TypeDef presc;
Kojto 113:f141b2784e32 189
Kojto 113:f141b2784e32 190 /** Prescaler mode. */
Kojto 113:f141b2784e32 191 RTCC_PrescMode_TypeDef prescMode;
Kojto 113:f141b2784e32 192
Kojto 113:f141b2784e32 193 #if defined(_RTCC_CTRL_BUMODETSEN_MASK)
Kojto 113:f141b2784e32 194 /** Enable/disable storing RTCC counter value in RTCC_CCV2 upon backup mode
Kojto 113:f141b2784e32 195 * entry. */
Kojto 113:f141b2784e32 196 bool enaBackupModeSet;
Kojto 113:f141b2784e32 197 #endif
Kojto 113:f141b2784e32 198
Kojto 113:f141b2784e32 199 /** Enable/disable the check that sets the OSCFFAIL interrupt flag if no
Kojto 113:f141b2784e32 200 * LFCLK-RTCC ticks are detected within one ULFRCO cycles. */
Kojto 113:f141b2784e32 201 bool enaOSCFailDetect;
Kojto 113:f141b2784e32 202
Kojto 113:f141b2784e32 203 /** Select the operational mode of the counter. */
Kojto 113:f141b2784e32 204 RTCC_CntMode_TypeDef cntMode;
Kojto 113:f141b2784e32 205
Kojto 113:f141b2784e32 206 /** Disable leap year correction for the calendar mode. When this parameter is
Kojto 113:f141b2784e32 207 * set to false, February has 29 days if (year % 4 == 0). If true, February
Kojto 113:f141b2784e32 208 * always has 28 days. */
Kojto 113:f141b2784e32 209 bool disLeapYearCorr;
Kojto 113:f141b2784e32 210 } RTCC_Init_TypeDef;
Kojto 113:f141b2784e32 211
Kojto 113:f141b2784e32 212
Kojto 113:f141b2784e32 213 /** RTCC capture/compare channel configuration structure. */
Kojto 113:f141b2784e32 214 typedef struct
Kojto 113:f141b2784e32 215 {
Kojto 113:f141b2784e32 216 /** Select the mode of the Capture/Compare channel. */
Kojto 113:f141b2784e32 217 RTCC_CapComChMode_TypeDef chMode;
Kojto 113:f141b2784e32 218
Kojto 113:f141b2784e32 219 /** Compare mode channel match output action. */
Kojto 113:f141b2784e32 220 RTCC_CompMatchOutAction_TypeDef compMatchOutAction;
Kojto 113:f141b2784e32 221
Kojto 113:f141b2784e32 222 /** Capture mode channel PRS input channel selection. */
Kojto 113:f141b2784e32 223 RTCC_PRSSel_TypeDef prsSel;
Kojto 113:f141b2784e32 224
Kojto 113:f141b2784e32 225 /** Capture mode channel input edge selection. */
Kojto 113:f141b2784e32 226 RTCC_InEdgeSel_TypeDef inputEdgeSel;
Kojto 113:f141b2784e32 227
Kojto 113:f141b2784e32 228 /** Comparison base of the channel in compare mode. */
Kojto 113:f141b2784e32 229 RTCC_CompBase_TypeDef compBase;
Kojto 113:f141b2784e32 230
Kojto 113:f141b2784e32 231 /** The COMPMASK (5 bit) most significant bits of the compare value will not
Kojto 113:f141b2784e32 232 * be subject to comparison. */
Kojto 113:f141b2784e32 233 uint8_t compMask;
Kojto 113:f141b2784e32 234
Kojto 113:f141b2784e32 235 /** Day compare mode. */
Kojto 113:f141b2784e32 236 RTCC_DayCompareMode_TypeDef dayCompMode;
Kojto 113:f141b2784e32 237 } RTCC_CCChConf_TypeDef;
Kojto 113:f141b2784e32 238
Kojto 113:f141b2784e32 239
Kojto 113:f141b2784e32 240 /*******************************************************************************
Kojto 113:f141b2784e32 241 ******************************* DEFINES ***********************************
Kojto 113:f141b2784e32 242 ******************************************************************************/
Kojto 113:f141b2784e32 243
Kojto 113:f141b2784e32 244 /** Default RTCC init structure. */
Kojto 113:f141b2784e32 245 #if defined(_RTCC_CTRL_BUMODETSEN_MASK)
Kojto 113:f141b2784e32 246 #define RTCC_INIT_DEFAULT \
Kojto 113:f141b2784e32 247 { \
Kojto 113:f141b2784e32 248 true, /* Start counting when init done. */ \
Kojto 113:f141b2784e32 249 false, /* Disable RTCC during debug halt. */ \
Kojto 113:f141b2784e32 250 false, /* Disable precounter wrap on ch. 0 CCV value. */ \
Kojto 113:f141b2784e32 251 false, /* Disable counter wrap on ch. 1 CCV value. */ \
Kojto 113:f141b2784e32 252 rtccCntPresc_32, /* 977 us per tick. */ \
Kojto 113:f141b2784e32 253 rtccCntTickPresc, /* Counter increments according to prescaler value. */ \
Kojto 113:f141b2784e32 254 false, /* No RTCC storage on backup mode entry. */ \
Kojto 113:f141b2784e32 255 false, /* No RTCC oscillator failure detection. */ \
Kojto 113:f141b2784e32 256 rtccCntModeNormal, /* Normal RTCC mode. */ \
Kojto 113:f141b2784e32 257 false, /* No leap year correction. */ \
Kojto 113:f141b2784e32 258 }
Kojto 113:f141b2784e32 259 #else
Kojto 113:f141b2784e32 260 #define RTCC_INIT_DEFAULT \
Kojto 113:f141b2784e32 261 { \
Kojto 113:f141b2784e32 262 true, /* Start counting when init done. */ \
Kojto 113:f141b2784e32 263 false, /* Disable RTCC during debug halt. */ \
Kojto 113:f141b2784e32 264 false, /* Disable precounter wrap on ch. 0 CCV value. */ \
Kojto 113:f141b2784e32 265 false, /* Disable counter wrap on ch. 1 CCV value. */ \
Kojto 113:f141b2784e32 266 rtccCntPresc_32, /* 977 us per tick. */ \
Kojto 113:f141b2784e32 267 rtccCntTickPresc, /* Counter increments according to prescaler value. */ \
Kojto 113:f141b2784e32 268 false, /* No RTCC oscillator failure detection. */ \
Kojto 113:f141b2784e32 269 rtccCntModeNormal, /* Normal RTCC mode. */ \
Kojto 113:f141b2784e32 270 false, /* No leap year correction. */ \
Kojto 113:f141b2784e32 271 }
Kojto 113:f141b2784e32 272 #endif
Kojto 113:f141b2784e32 273
Kojto 113:f141b2784e32 274 /** Default RTCC channel output compare init structure. */
Kojto 113:f141b2784e32 275 #define RTCC_CH_INIT_COMPARE_DEFAULT \
Kojto 113:f141b2784e32 276 { \
Kojto 113:f141b2784e32 277 rtccCapComChModeCompare, /* Select output compare mode. */ \
Kojto 113:f141b2784e32 278 rtccCompMatchOutActionPulse, /* Create pulse on compare match. */ \
Kojto 113:f141b2784e32 279 rtccPRSCh0, /* PRS channel 0 (not used). */ \
Kojto 113:f141b2784e32 280 rtccInEdgeNone, /* No edge detection. */ \
Kojto 113:f141b2784e32 281 rtccCompBaseCnt, /* Counter comparison base. */ \
Kojto 113:f141b2784e32 282 0, /* No compare mask bits set. */ \
Kojto 113:f141b2784e32 283 rtccDayCompareModeMonth /* Don't care */ \
Kojto 113:f141b2784e32 284 }
Kojto 113:f141b2784e32 285
Kojto 113:f141b2784e32 286 /** Default RTCC channel input capture init structure. */
Kojto 113:f141b2784e32 287 #define RTCC_CH_INIT_CAPTURE_DEFAULT \
Kojto 113:f141b2784e32 288 { \
Kojto 113:f141b2784e32 289 rtccCapComChModeCapture, /* Select input capture mode. */ \
Kojto 113:f141b2784e32 290 rtccCompMatchOutActionPulse, /* Create pulse on capture. */ \
Kojto 113:f141b2784e32 291 rtccPRSCh0, /* PRS channel 0. */ \
Kojto 113:f141b2784e32 292 rtccInEdgeRising, /* Rising edge detection. */ \
Kojto 113:f141b2784e32 293 rtccCompBaseCnt, /* Don't care. */ \
Kojto 113:f141b2784e32 294 0, /* Don't care. */ \
Kojto 113:f141b2784e32 295 rtccDayCompareModeMonth /* Don't care */ \
Kojto 113:f141b2784e32 296 }
Kojto 113:f141b2784e32 297
Kojto 113:f141b2784e32 298 /** Validation of valid RTCC channel for assert statements. */
Kojto 113:f141b2784e32 299 #define RTCC_CH_VALID( ch ) ( ( ch ) < 3 )
Kojto 113:f141b2784e32 300
Kojto 113:f141b2784e32 301 /*******************************************************************************
Kojto 113:f141b2784e32 302 ***************************** PROTOTYPES **********************************
Kojto 113:f141b2784e32 303 ******************************************************************************/
Kojto 113:f141b2784e32 304
Kojto 113:f141b2784e32 305 /***************************************************************************//**
Kojto 113:f141b2784e32 306 * @brief
Kojto 113:f141b2784e32 307 * Get RTCC capture/compare register value (CCV) for selected channel.
Kojto 113:f141b2784e32 308 *
Kojto 113:f141b2784e32 309 * @param[in] ch
Kojto 113:f141b2784e32 310 * Channel selector.
Kojto 113:f141b2784e32 311 *
Kojto 113:f141b2784e32 312 * @return
Kojto 113:f141b2784e32 313 * Capture/compare register value.
Kojto 113:f141b2784e32 314 ******************************************************************************/
Kojto 113:f141b2784e32 315 __STATIC_INLINE uint32_t RTCC_ChannelCCVGet( int ch )
Kojto 113:f141b2784e32 316 {
Kojto 113:f141b2784e32 317 EFM_ASSERT( RTCC_CH_VALID( ch ) );
Kojto 113:f141b2784e32 318 return RTCC->CC[ ch ].CCV;
Kojto 113:f141b2784e32 319 }
Kojto 113:f141b2784e32 320
Kojto 113:f141b2784e32 321 /***************************************************************************//**
Kojto 113:f141b2784e32 322 * @brief
Kojto 113:f141b2784e32 323 * Set RTCC capture/compare register value (CCV) for selected channel.
Kojto 113:f141b2784e32 324 *
Kojto 113:f141b2784e32 325 * @param[in] ch
Kojto 113:f141b2784e32 326 * Channel selector.
Kojto 113:f141b2784e32 327 *
Kojto 113:f141b2784e32 328 * @param[in] value
Kojto 113:f141b2784e32 329 * CCV value.
Kojto 113:f141b2784e32 330 ******************************************************************************/
Kojto 113:f141b2784e32 331 __STATIC_INLINE void RTCC_ChannelCCVSet( int ch, uint32_t value )
Kojto 113:f141b2784e32 332 {
Kojto 113:f141b2784e32 333 EFM_ASSERT( RTCC_CH_VALID( ch ) );
Kojto 113:f141b2784e32 334 RTCC->CC[ ch ].CCV = value;
Kojto 113:f141b2784e32 335 }
Kojto 113:f141b2784e32 336
Kojto 113:f141b2784e32 337 /***************************************************************************//**
Kojto 113:f141b2784e32 338 * @brief
Kojto 113:f141b2784e32 339 * Get the calendar DATE register content for selected channel.
Kojto 113:f141b2784e32 340 *
Kojto 113:f141b2784e32 341 * @param[in] ch
Kojto 113:f141b2784e32 342 * Channel selector.
Kojto 113:f141b2784e32 343 *
Kojto 113:f141b2784e32 344 * @return
Kojto 113:f141b2784e32 345 * DATE register value.
Kojto 113:f141b2784e32 346 ******************************************************************************/
Kojto 113:f141b2784e32 347 __STATIC_INLINE uint32_t RTCC_ChannelDateGet( int ch )
Kojto 113:f141b2784e32 348 {
Kojto 113:f141b2784e32 349 EFM_ASSERT( RTCC_CH_VALID( ch ) );
Kojto 113:f141b2784e32 350 return RTCC->CC[ ch ].DATE;
Kojto 113:f141b2784e32 351 }
Kojto 113:f141b2784e32 352
Kojto 113:f141b2784e32 353 /***************************************************************************//**
Kojto 113:f141b2784e32 354 * @brief
Kojto 113:f141b2784e32 355 * Set the calendar DATE register for selected channel.
Kojto 113:f141b2784e32 356 *
Kojto 113:f141b2784e32 357 * @param[in] ch
Kojto 113:f141b2784e32 358 * Channel selector.
Kojto 113:f141b2784e32 359 *
Kojto 113:f141b2784e32 360 * @param[in] date
Kojto 113:f141b2784e32 361 * DATE value.
Kojto 113:f141b2784e32 362 ******************************************************************************/
Kojto 113:f141b2784e32 363 __STATIC_INLINE void RTCC_ChannelDateSet( int ch, uint32_t date )
Kojto 113:f141b2784e32 364 {
Kojto 113:f141b2784e32 365 EFM_ASSERT( RTCC_CH_VALID( ch ) );
Kojto 113:f141b2784e32 366 RTCC->CC[ ch ].DATE = date;
Kojto 113:f141b2784e32 367 }
Kojto 113:f141b2784e32 368
Kojto 113:f141b2784e32 369 void RTCC_ChannelInit( int ch, RTCC_CCChConf_TypeDef const *confPtr );
Kojto 113:f141b2784e32 370
Kojto 113:f141b2784e32 371 /***************************************************************************//**
Kojto 113:f141b2784e32 372 * @brief
Kojto 113:f141b2784e32 373 * Get the calendar TIME register content for selected channel.
Kojto 113:f141b2784e32 374 *
Kojto 113:f141b2784e32 375 * @param[in] ch
Kojto 113:f141b2784e32 376 * Channel selector.
Kojto 113:f141b2784e32 377 *
Kojto 113:f141b2784e32 378 * @return
Kojto 113:f141b2784e32 379 * TIME register value.
Kojto 113:f141b2784e32 380 ******************************************************************************/
Kojto 113:f141b2784e32 381 __STATIC_INLINE uint32_t RTCC_ChannelTimeGet( int ch )
Kojto 113:f141b2784e32 382 {
Kojto 113:f141b2784e32 383 EFM_ASSERT( RTCC_CH_VALID( ch ) );
Kojto 113:f141b2784e32 384 return RTCC->CC[ ch ].TIME;
Kojto 113:f141b2784e32 385 }
Kojto 113:f141b2784e32 386
Kojto 113:f141b2784e32 387 /***************************************************************************//**
Kojto 113:f141b2784e32 388 * @brief
Kojto 113:f141b2784e32 389 * Set the calendar TIME register for selected channel.
Kojto 113:f141b2784e32 390 *
Kojto 113:f141b2784e32 391 * @param[in] ch
Kojto 113:f141b2784e32 392 * Channel selector.
Kojto 113:f141b2784e32 393 *
Kojto 113:f141b2784e32 394 * @param[in] time
Kojto 113:f141b2784e32 395 * TIME value.
Kojto 113:f141b2784e32 396 ******************************************************************************/
Kojto 113:f141b2784e32 397 __STATIC_INLINE void RTCC_ChannelTimeSet( int ch, uint32_t time )
Kojto 113:f141b2784e32 398 {
Kojto 113:f141b2784e32 399 EFM_ASSERT( RTCC_CH_VALID( ch ) );
Kojto 113:f141b2784e32 400 RTCC->CC[ ch ].TIME = time;
Kojto 113:f141b2784e32 401 }
Kojto 113:f141b2784e32 402
Kojto 113:f141b2784e32 403 /***************************************************************************//**
Kojto 113:f141b2784e32 404 * @brief
Kojto 113:f141b2784e32 405 * Get the combined CNT/PRECNT register content.
Kojto 113:f141b2784e32 406 *
Kojto 113:f141b2784e32 407 * @return
Kojto 113:f141b2784e32 408 * CNT/PRECNT register value.
Kojto 113:f141b2784e32 409 ******************************************************************************/
Kojto 113:f141b2784e32 410 __STATIC_INLINE uint32_t RTCC_CombinedCounterGet( void )
Kojto 113:f141b2784e32 411 {
Kojto 113:f141b2784e32 412 return RTCC->COMBCNT;
Kojto 113:f141b2784e32 413 }
Kojto 113:f141b2784e32 414
Kojto 113:f141b2784e32 415 /***************************************************************************//**
Kojto 113:f141b2784e32 416 * @brief
Kojto 113:f141b2784e32 417 * Get RTCC counter value.
Kojto 113:f141b2784e32 418 *
Kojto 113:f141b2784e32 419 * @return
Kojto 113:f141b2784e32 420 * Current RTCC counter value.
Kojto 113:f141b2784e32 421 ******************************************************************************/
Kojto 113:f141b2784e32 422 __STATIC_INLINE uint32_t RTCC_CounterGet( void )
Kojto 113:f141b2784e32 423 {
Kojto 113:f141b2784e32 424 return RTCC->CNT;
Kojto 113:f141b2784e32 425 }
Kojto 113:f141b2784e32 426
Kojto 113:f141b2784e32 427 /***************************************************************************//**
Kojto 113:f141b2784e32 428 * @brief
Kojto 113:f141b2784e32 429 * Set RTCC CNT counter.
Kojto 113:f141b2784e32 430 *
Kojto 113:f141b2784e32 431 * @param[in] value
Kojto 113:f141b2784e32 432 * CNT value.
Kojto 113:f141b2784e32 433 ******************************************************************************/
Kojto 113:f141b2784e32 434 __STATIC_INLINE void RTCC_CounterSet( uint32_t value )
Kojto 113:f141b2784e32 435 {
Kojto 113:f141b2784e32 436 RTCC->CNT = value;
Kojto 113:f141b2784e32 437 }
Kojto 113:f141b2784e32 438
Kojto 113:f141b2784e32 439 /***************************************************************************//**
Kojto 113:f141b2784e32 440 * @brief
Kojto 113:f141b2784e32 441 * Get DATE register value.
Kojto 113:f141b2784e32 442 *
Kojto 113:f141b2784e32 443 * @return
Kojto 113:f141b2784e32 444 * Current DATE register value.
Kojto 113:f141b2784e32 445 ******************************************************************************/
Kojto 113:f141b2784e32 446 __STATIC_INLINE uint32_t RTCC_DateGet( void )
Kojto 113:f141b2784e32 447 {
Kojto 113:f141b2784e32 448 return RTCC->DATE;
Kojto 113:f141b2784e32 449 }
Kojto 113:f141b2784e32 450
Kojto 113:f141b2784e32 451 /***************************************************************************//**
Kojto 113:f141b2784e32 452 * @brief
Kojto 113:f141b2784e32 453 * Set RTCC DATE register.
Kojto 113:f141b2784e32 454 *
Kojto 113:f141b2784e32 455 * @param[in] date
Kojto 113:f141b2784e32 456 * DATE value.
Kojto 113:f141b2784e32 457 ******************************************************************************/
Kojto 113:f141b2784e32 458 __STATIC_INLINE void RTCC_DateSet( uint32_t date )
Kojto 113:f141b2784e32 459 {
Kojto 113:f141b2784e32 460 RTCC->DATE = date;
Kojto 113:f141b2784e32 461 }
Kojto 113:f141b2784e32 462
Kojto 113:f141b2784e32 463 /***************************************************************************//**
Kojto 113:f141b2784e32 464 * @brief
Kojto 113:f141b2784e32 465 * Enable/disable EM4 wakeup capability.
Kojto 113:f141b2784e32 466 *
Kojto 113:f141b2784e32 467 * @param[in] enable
Kojto 113:f141b2784e32 468 * True to enable EM4 wakeup, false to disable.
Kojto 113:f141b2784e32 469 ******************************************************************************/
Kojto 113:f141b2784e32 470 __STATIC_INLINE void RTCC_EM4WakeupEnable( bool enable )
Kojto 113:f141b2784e32 471 {
Kojto 113:f141b2784e32 472 if ( enable )
Kojto 113:f141b2784e32 473 {
Kojto 113:f141b2784e32 474 RTCC->EM4WUEN = RTCC_EM4WUEN_EM4WU;
Kojto 113:f141b2784e32 475 }
Kojto 113:f141b2784e32 476 else
Kojto 113:f141b2784e32 477 {
Kojto 113:f141b2784e32 478 RTCC->EM4WUEN = 0;
Kojto 113:f141b2784e32 479 }
Kojto 113:f141b2784e32 480 }
Kojto 113:f141b2784e32 481
Kojto 113:f141b2784e32 482 void RTCC_Enable( bool enable );
Kojto 113:f141b2784e32 483
Kojto 113:f141b2784e32 484 void RTCC_Init( const RTCC_Init_TypeDef *init );
Kojto 113:f141b2784e32 485
Kojto 113:f141b2784e32 486 /***************************************************************************//**
Kojto 113:f141b2784e32 487 * @brief
Kojto 113:f141b2784e32 488 * Clear one or more pending RTCC interrupts.
Kojto 113:f141b2784e32 489 *
Kojto 113:f141b2784e32 490 * @param[in] flags
Kojto 113:f141b2784e32 491 * RTCC interrupt sources to clear. Use a set of interrupt flags OR-ed
Kojto 113:f141b2784e32 492 * together to clear multiple interrupt sources.
Kojto 113:f141b2784e32 493 ******************************************************************************/
Kojto 113:f141b2784e32 494 __STATIC_INLINE void RTCC_IntClear( uint32_t flags )
Kojto 113:f141b2784e32 495 {
Kojto 113:f141b2784e32 496 RTCC->IFC = flags;
Kojto 113:f141b2784e32 497 }
Kojto 113:f141b2784e32 498
Kojto 113:f141b2784e32 499 /***************************************************************************//**
Kojto 113:f141b2784e32 500 * @brief
Kojto 113:f141b2784e32 501 * Disable one or more RTCC interrupts.
Kojto 113:f141b2784e32 502 *
Kojto 113:f141b2784e32 503 * @param[in] flags
Kojto 113:f141b2784e32 504 * RTCC interrupt sources to disable. Use a set of interrupt flags OR-ed
Kojto 113:f141b2784e32 505 * together to disable multiple interrupt.
Kojto 113:f141b2784e32 506 ******************************************************************************/
Kojto 113:f141b2784e32 507 __STATIC_INLINE void RTCC_IntDisable( uint32_t flags )
Kojto 113:f141b2784e32 508 {
Kojto 113:f141b2784e32 509 RTCC->IEN &= ~flags;
Kojto 113:f141b2784e32 510 }
Kojto 113:f141b2784e32 511
Kojto 113:f141b2784e32 512 /***************************************************************************//**
Kojto 113:f141b2784e32 513 * @brief
Kojto 113:f141b2784e32 514 * Enable one or more RTCC interrupts.
Kojto 113:f141b2784e32 515 *
Kojto 113:f141b2784e32 516 * @note
Kojto 113:f141b2784e32 517 * Depending on the use, a pending interrupt may already be set prior to
Kojto 113:f141b2784e32 518 * enabling the interrupt. Consider using RTCC_IntClear() prior to enabling
Kojto 113:f141b2784e32 519 * if such a pending interrupt should be ignored.
Kojto 113:f141b2784e32 520 *
Kojto 113:f141b2784e32 521 * @param[in] flags
Kojto 113:f141b2784e32 522 * RTCC interrupt sources to enable. Use a set of interrupt flags OR-ed
Kojto 113:f141b2784e32 523 * together to set multiple interrupt.
Kojto 113:f141b2784e32 524 ******************************************************************************/
Kojto 113:f141b2784e32 525 __STATIC_INLINE void RTCC_IntEnable( uint32_t flags )
Kojto 113:f141b2784e32 526 {
Kojto 113:f141b2784e32 527 RTCC->IEN |= flags;
Kojto 113:f141b2784e32 528 }
Kojto 113:f141b2784e32 529
Kojto 113:f141b2784e32 530 /***************************************************************************//**
Kojto 113:f141b2784e32 531 * @brief
Kojto 113:f141b2784e32 532 * Get pending RTCC interrupt flags.
Kojto 113:f141b2784e32 533 *
Kojto 113:f141b2784e32 534 * @note
Kojto 113:f141b2784e32 535 * The event bits are not cleared by the use of this function.
Kojto 113:f141b2784e32 536 *
Kojto 113:f141b2784e32 537 * @return
Kojto 113:f141b2784e32 538 * Pending RTCC interrupt sources. Returns a set of interrupt flags OR-ed
Kojto 113:f141b2784e32 539 * together for the interrupt sources set.
Kojto 113:f141b2784e32 540 ******************************************************************************/
Kojto 113:f141b2784e32 541 __STATIC_INLINE uint32_t RTCC_IntGet( void )
Kojto 113:f141b2784e32 542 {
Kojto 113:f141b2784e32 543 return RTCC->IF;
Kojto 113:f141b2784e32 544 }
Kojto 113:f141b2784e32 545
Kojto 113:f141b2784e32 546 /***************************************************************************//**
Kojto 113:f141b2784e32 547 * @brief
Kojto 113:f141b2784e32 548 * Get enabled and pending RTCC interrupt flags.
Kojto 113:f141b2784e32 549 *
Kojto 113:f141b2784e32 550 * @details
Kojto 113:f141b2784e32 551 * Useful for handling more interrupt sources in the same interrupt handler.
Kojto 113:f141b2784e32 552 *
Kojto 113:f141b2784e32 553 * @return
Kojto 113:f141b2784e32 554 * Pending and enabled RTCC interrupt sources. Returns a set of interrupt
Kojto 113:f141b2784e32 555 * flags OR-ed together for the interrupt sources set.
Kojto 113:f141b2784e32 556 ******************************************************************************/
Kojto 113:f141b2784e32 557 __STATIC_INLINE uint32_t RTCC_IntGetEnabled( void )
Kojto 113:f141b2784e32 558 {
Kojto 113:f141b2784e32 559 uint32_t tmp;
Kojto 113:f141b2784e32 560
Kojto 113:f141b2784e32 561 tmp = RTCC->IEN;
Kojto 113:f141b2784e32 562
Kojto 113:f141b2784e32 563 /* Bitwise AND of pending and enabled interrupt flags. */
Kojto 113:f141b2784e32 564 return RTCC->IF & tmp;
Kojto 113:f141b2784e32 565 }
Kojto 113:f141b2784e32 566
Kojto 113:f141b2784e32 567 /***************************************************************************//**
Kojto 113:f141b2784e32 568 * @brief
Kojto 113:f141b2784e32 569 * Set one or more pending RTCC interrupts from SW.
Kojto 113:f141b2784e32 570 *
Kojto 113:f141b2784e32 571 * @param[in] flags
Kojto 113:f141b2784e32 572 * RTCC interrupt sources to set to pending. Use a set of interrupt flags
Kojto 113:f141b2784e32 573 * (RTCC_IFS_nnn).
Kojto 113:f141b2784e32 574 ******************************************************************************/
Kojto 113:f141b2784e32 575 __STATIC_INLINE void RTCC_IntSet( uint32_t flags )
Kojto 113:f141b2784e32 576 {
Kojto 113:f141b2784e32 577 RTCC->IFS = flags;
Kojto 113:f141b2784e32 578 }
Kojto 113:f141b2784e32 579
Kojto 113:f141b2784e32 580 /***************************************************************************//**
Kojto 113:f141b2784e32 581 * @brief
Kojto 113:f141b2784e32 582 * Lock RTCC registers.
Kojto 113:f141b2784e32 583 *
Kojto 113:f141b2784e32 584 * @note
Kojto 113:f141b2784e32 585 * When RTCC registers are locked, RTCC_CTRL, RTCC_PRECNT, RTCC_CNT,
Kojto 113:f141b2784e32 586 * RTCC_TIME, RTCC_DATE, RTCC_IEN, RTCC_POWERDOWN and RTCC_CCx_XXX registers
Kojto 113:f141b2784e32 587 * can not be written to.
Kojto 113:f141b2784e32 588 ******************************************************************************/
Kojto 113:f141b2784e32 589 __STATIC_INLINE void RTCC_Lock( void )
Kojto 113:f141b2784e32 590 {
Kojto 113:f141b2784e32 591 RTCC->LOCK = RTCC_LOCK_LOCKKEY_LOCK;
Kojto 113:f141b2784e32 592 }
Kojto 113:f141b2784e32 593
Kojto 113:f141b2784e32 594 /***************************************************************************//**
Kojto 113:f141b2784e32 595 * @brief
Kojto 113:f141b2784e32 596 * Get RTCC pre-counter value.
Kojto 113:f141b2784e32 597 *
Kojto 113:f141b2784e32 598 * @return
Kojto 113:f141b2784e32 599 * Current RTCC pre-counter value.
Kojto 113:f141b2784e32 600 ******************************************************************************/
Kojto 113:f141b2784e32 601 __STATIC_INLINE uint32_t RTCC_PreCounterGet( void )
Kojto 113:f141b2784e32 602 {
Kojto 113:f141b2784e32 603 return RTCC->PRECNT;
Kojto 113:f141b2784e32 604 }
Kojto 113:f141b2784e32 605
Kojto 113:f141b2784e32 606 /***************************************************************************//**
Kojto 113:f141b2784e32 607 * @brief
Kojto 113:f141b2784e32 608 * Set RTCC pre-counter value.
Kojto 113:f141b2784e32 609 *
Kojto 113:f141b2784e32 610 * @param[in] preCntVal
Kojto 113:f141b2784e32 611 * RTCC pre-counter value to be set.
Kojto 113:f141b2784e32 612 ******************************************************************************/
Kojto 113:f141b2784e32 613 __STATIC_INLINE void RTCC_PreCounterSet( uint32_t preCntVal )
Kojto 113:f141b2784e32 614 {
Kojto 113:f141b2784e32 615 RTCC->PRECNT = preCntVal;
Kojto 113:f141b2784e32 616 }
Kojto 113:f141b2784e32 617
Kojto 113:f141b2784e32 618 void RTCC_Reset( void );
Kojto 113:f141b2784e32 619
Kojto 113:f141b2784e32 620 /***************************************************************************//**
Kojto 113:f141b2784e32 621 * @brief
Kojto 113:f141b2784e32 622 * Power down the retention ram.
Kojto 113:f141b2784e32 623 *
Kojto 113:f141b2784e32 624 * @note
Kojto 113:f141b2784e32 625 * Once retention ram is powered down, it cannot be powered up again.
Kojto 113:f141b2784e32 626 ******************************************************************************/
Kojto 113:f141b2784e32 627 __STATIC_INLINE void RTCC_RetentionRamPowerDown( void )
Kojto 113:f141b2784e32 628 {
Kojto 113:f141b2784e32 629 RTCC->POWERDOWN = RTCC_POWERDOWN_RAM;
Kojto 113:f141b2784e32 630 }
Kojto 113:f141b2784e32 631
Kojto 113:f141b2784e32 632 void RTCC_StatusClear( void );
Kojto 113:f141b2784e32 633
Kojto 113:f141b2784e32 634 /***************************************************************************//**
Kojto 113:f141b2784e32 635 * @brief
Kojto 113:f141b2784e32 636 * Get STATUS register value.
Kojto 113:f141b2784e32 637 *
Kojto 113:f141b2784e32 638 * @return
Kojto 113:f141b2784e32 639 * Current STATUS register value.
Kojto 113:f141b2784e32 640 ******************************************************************************/
Kojto 113:f141b2784e32 641 __STATIC_INLINE uint32_t RTCC_StatusGet( void )
Kojto 113:f141b2784e32 642 {
Kojto 113:f141b2784e32 643 while ( RTCC->SYNCBUSY & RTCC_SYNCBUSY_CMD )
Kojto 113:f141b2784e32 644 {
Kojto 113:f141b2784e32 645 // Wait for syncronization.
Kojto 113:f141b2784e32 646 }
Kojto 113:f141b2784e32 647 return RTCC->STATUS;
Kojto 113:f141b2784e32 648 }
Kojto 113:f141b2784e32 649
Kojto 113:f141b2784e32 650 /***************************************************************************//**
Kojto 113:f141b2784e32 651 * @brief
Kojto 113:f141b2784e32 652 * Get TIME register value.
Kojto 113:f141b2784e32 653 *
Kojto 113:f141b2784e32 654 * @return
Kojto 113:f141b2784e32 655 * Current TIME register value.
Kojto 113:f141b2784e32 656 ******************************************************************************/
Kojto 113:f141b2784e32 657 __STATIC_INLINE uint32_t RTCC_TimeGet( void )
Kojto 113:f141b2784e32 658 {
Kojto 113:f141b2784e32 659 return RTCC->TIME;
Kojto 113:f141b2784e32 660 }
Kojto 113:f141b2784e32 661
Kojto 113:f141b2784e32 662 /***************************************************************************//**
Kojto 113:f141b2784e32 663 * @brief
Kojto 113:f141b2784e32 664 * Set RTCC TIME register.
Kojto 113:f141b2784e32 665 *
Kojto 113:f141b2784e32 666 * @param[in] time
Kojto 113:f141b2784e32 667 * TIME value.
Kojto 113:f141b2784e32 668 ******************************************************************************/
Kojto 113:f141b2784e32 669 __STATIC_INLINE void RTCC_TimeSet( uint32_t time )
Kojto 113:f141b2784e32 670 {
Kojto 113:f141b2784e32 671 RTCC->TIME = time;
Kojto 113:f141b2784e32 672 }
Kojto 113:f141b2784e32 673
Kojto 113:f141b2784e32 674 /***************************************************************************//**
Kojto 113:f141b2784e32 675 * @brief
Kojto 113:f141b2784e32 676 * Unlock RTCC registers.
Kojto 113:f141b2784e32 677 *
Kojto 113:f141b2784e32 678 * @note
Kojto 113:f141b2784e32 679 * When RTCC registers are locked, RTCC_CTRL, RTCC_PRECNT, RTCC_CNT,
Kojto 113:f141b2784e32 680 * RTCC_TIME, RTCC_DATE, RTCC_IEN, RTCC_POWERDOWN and RTCC_CCx_XXX registers
Kojto 113:f141b2784e32 681 * can not be written to.
Kojto 113:f141b2784e32 682 ******************************************************************************/
Kojto 113:f141b2784e32 683 __STATIC_INLINE void RTCC_Unlock( void )
Kojto 113:f141b2784e32 684 {
Kojto 113:f141b2784e32 685 RTCC->LOCK = RTCC_LOCK_LOCKKEY_UNLOCK;
Kojto 113:f141b2784e32 686 }
Kojto 113:f141b2784e32 687
Kojto 113:f141b2784e32 688 /** @} (end addtogroup RTCC) */
<> 128:9bcdf88f62b0 689 /** @} (end addtogroup emlib) */
Kojto 113:f141b2784e32 690
Kojto 113:f141b2784e32 691 #ifdef __cplusplus
Kojto 113:f141b2784e32 692 }
Kojto 113:f141b2784e32 693 #endif
Kojto 113:f141b2784e32 694
Kojto 113:f141b2784e32 695 #endif /* defined( RTCC_COUNT ) && ( RTC_COUNT == 1 ) */
<> 128:9bcdf88f62b0 696 #endif /* EM_RTCC_H */