33 #ifndef __SILICON_LABS_EM_RTCC_H__
34 #define __SILICON_LABS_EM_RTCC_H__
37 #if defined( RTCC_COUNT ) && ( RTCC_COUNT == 1 )
64 rtccCntModeNormal = _RTCC_CTRL_CNTTICK_PRESC,
68 rtccCntModeCalendar = _RTCC_CTRL_CNTTICK_CCV0MATCH
69 } RTCC_CntMode_TypeDef;
74 rtccCntPresc_1 = _RTCC_CTRL_CNTPRESC_DIV1,
75 rtccCntPresc_2 = _RTCC_CTRL_CNTPRESC_DIV2,
76 rtccCntPresc_4 = _RTCC_CTRL_CNTPRESC_DIV4,
77 rtccCntPresc_8 = _RTCC_CTRL_CNTPRESC_DIV8,
78 rtccCntPresc_16 = _RTCC_CTRL_CNTPRESC_DIV16,
79 rtccCntPresc_32 = _RTCC_CTRL_CNTPRESC_DIV32,
80 rtccCntPresc_64 = _RTCC_CTRL_CNTPRESC_DIV64,
81 rtccCntPresc_128 = _RTCC_CTRL_CNTPRESC_DIV128,
82 rtccCntPresc_256 = _RTCC_CTRL_CNTPRESC_DIV256,
83 rtccCntPresc_512 = _RTCC_CTRL_CNTPRESC_DIV512,
84 rtccCntPresc_1024 = _RTCC_CTRL_CNTPRESC_DIV1024,
85 rtccCntPresc_2048 = _RTCC_CTRL_CNTPRESC_DIV2048,
86 rtccCntPresc_4096 = _RTCC_CTRL_CNTPRESC_DIV4096,
87 rtccCntPresc_8192 = _RTCC_CTRL_CNTPRESC_DIV8192,
88 rtccCntPresc_16384 = _RTCC_CTRL_CNTPRESC_DIV16384,
89 rtccCntPresc_32768 = _RTCC_CTRL_CNTPRESC_DIV32768
90 } RTCC_CntPresc_TypeDef;
97 rtccCntTickPresc = _RTCC_CTRL_CNTTICK_PRESC,
101 rtccCntTickCCV0Match = _RTCC_CTRL_CNTTICK_CCV0MATCH
102 } RTCC_PrescMode_TypeDef;
108 rtccCapComChModeOff = _RTCC_CC_CTRL_MODE_OFF,
109 rtccCapComChModeCapture = _RTCC_CC_CTRL_MODE_INPUTCAPTURE,
110 rtccCapComChModeCompare = _RTCC_CC_CTRL_MODE_OUTPUTCOMPARE,
111 } RTCC_CapComChMode_TypeDef;
116 rtccCompMatchOutActionPulse = _RTCC_CC_CTRL_CMOA_PULSE,
117 rtccCompMatchOutActionToggle = _RTCC_CC_CTRL_CMOA_TOGGLE,
118 rtccCompMatchOutActionClear = _RTCC_CC_CTRL_CMOA_CLEAR,
119 rtccCompMatchOutActionSet = _RTCC_CC_CTRL_CMOA_SET
120 } RTCC_CompMatchOutAction_TypeDef;
126 rtccPRSCh0 = _RTCC_CC_CTRL_PRSSEL_PRSCH0,
127 rtccPRSCh1 = _RTCC_CC_CTRL_PRSSEL_PRSCH1,
128 rtccPRSCh2 = _RTCC_CC_CTRL_PRSSEL_PRSCH2,
129 rtccPRSCh3 = _RTCC_CC_CTRL_PRSSEL_PRSCH3,
130 rtccPRSCh4 = _RTCC_CC_CTRL_PRSSEL_PRSCH4,
131 rtccPRSCh5 = _RTCC_CC_CTRL_PRSSEL_PRSCH5,
132 rtccPRSCh6 = _RTCC_CC_CTRL_PRSSEL_PRSCH6,
133 rtccPRSCh7 = _RTCC_CC_CTRL_PRSSEL_PRSCH7,
134 rtccPRSCh8 = _RTCC_CC_CTRL_PRSSEL_PRSCH8,
135 rtccPRSCh9 = _RTCC_CC_CTRL_PRSSEL_PRSCH9,
136 rtccPRSCh10 = _RTCC_CC_CTRL_PRSSEL_PRSCH10,
137 rtccPRSCh11 = _RTCC_CC_CTRL_PRSSEL_PRSCH11
138 } RTCC_PRSSel_TypeDef;
144 rtccInEdgeRising = _RTCC_CC_CTRL_ICEDGE_RISING,
145 rtccInEdgeFalling = _RTCC_CC_CTRL_ICEDGE_FALLING,
146 rtccInEdgeBoth = _RTCC_CC_CTRL_ICEDGE_BOTH,
147 rtccInEdgeNone = _RTCC_CC_CTRL_ICEDGE_NONE
148 } RTCC_InEdgeSel_TypeDef;
155 rtccCompBaseCnt = _RTCC_CC_CTRL_COMPBASE_CNT,
158 rtccCompBasePreCnt = _RTCC_CC_CTRL_COMPBASE_PRECNT
159 } RTCC_CompBase_TypeDef;
164 rtccDayCompareModeMonth = _RTCC_CC_CTRL_DAYCC_MONTH,
165 rtccDayCompareModeWeek = _RTCC_CC_CTRL_DAYCC_WEEK
166 } RTCC_DayCompareMode_TypeDef;
182 bool precntWrapOnCCV0;
188 RTCC_CntPresc_TypeDef presc;
191 RTCC_PrescMode_TypeDef prescMode;
193 #if defined(_RTCC_CTRL_BUMODETSEN_MASK)
196 bool enaBackupModeSet;
201 bool enaOSCFailDetect;
204 RTCC_CntMode_TypeDef cntMode;
209 bool disLeapYearCorr;
217 RTCC_CapComChMode_TypeDef chMode;
220 RTCC_CompMatchOutAction_TypeDef compMatchOutAction;
223 RTCC_PRSSel_TypeDef prsSel;
226 RTCC_InEdgeSel_TypeDef inputEdgeSel;
229 RTCC_CompBase_TypeDef compBase;
236 RTCC_DayCompareMode_TypeDef dayCompMode;
237 } RTCC_CCChConf_TypeDef;
245 #if defined(_RTCC_CTRL_BUMODETSEN_MASK)
246 #define RTCC_INIT_DEFAULT \
260 #define RTCC_INIT_DEFAULT \
275 #define RTCC_CH_INIT_COMPARE_DEFAULT \
277 rtccCapComChModeCompare, \
278 rtccCompMatchOutActionPulse, \
283 rtccDayCompareModeMonth \
287 #define RTCC_CH_INIT_CAPTURE_DEFAULT \
289 rtccCapComChModeCapture, \
290 rtccCompMatchOutActionPulse, \
295 rtccDayCompareModeMonth \
299 #define RTCC_CH_VALID( ch ) ( ( ch ) < 3 )
315 __STATIC_INLINE uint32_t RTCC_ChannelCCVGet(
int ch )
317 EFM_ASSERT( RTCC_CH_VALID( ch ) );
318 return RTCC->CC[ ch ].CCV;
331 __STATIC_INLINE
void RTCC_ChannelCCVSet(
int ch, uint32_t value )
333 EFM_ASSERT( RTCC_CH_VALID( ch ) );
334 RTCC->CC[ ch ].CCV = value;
347 __STATIC_INLINE uint32_t RTCC_ChannelDateGet(
int ch )
349 EFM_ASSERT( RTCC_CH_VALID( ch ) );
350 return RTCC->CC[ ch ].DATE;
363 __STATIC_INLINE
void RTCC_ChannelDateSet(
int ch, uint32_t date )
365 EFM_ASSERT( RTCC_CH_VALID( ch ) );
366 RTCC->CC[ ch ].DATE = date;
369 void RTCC_ChannelInit(
int ch, RTCC_CCChConf_TypeDef
const *confPtr );
381 __STATIC_INLINE uint32_t RTCC_ChannelTimeGet(
int ch )
383 EFM_ASSERT( RTCC_CH_VALID( ch ) );
384 return RTCC->CC[ ch ].TIME;
397 __STATIC_INLINE
void RTCC_ChannelTimeSet(
int ch, uint32_t time )
399 EFM_ASSERT( RTCC_CH_VALID( ch ) );
400 RTCC->CC[ ch ].TIME = time;
410 __STATIC_INLINE uint32_t RTCC_CombinedCounterGet(
void )
412 return RTCC->COMBCNT;
422 __STATIC_INLINE uint32_t RTCC_CounterGet(
void )
434 __STATIC_INLINE
void RTCC_CounterSet( uint32_t value )
446 __STATIC_INLINE uint32_t RTCC_DateGet(
void )
458 __STATIC_INLINE
void RTCC_DateSet( uint32_t date )
470 __STATIC_INLINE
void RTCC_EM4WakeupEnable(
bool enable )
474 RTCC->EM4WUEN = RTCC_EM4WUEN_EM4WU;
482 void RTCC_Enable(
bool enable );
484 void RTCC_Init(
const RTCC_Init_TypeDef *init );
494 __STATIC_INLINE
void RTCC_IntClear( uint32_t flags )
507 __STATIC_INLINE
void RTCC_IntDisable( uint32_t flags )
525 __STATIC_INLINE
void RTCC_IntEnable( uint32_t flags )
541 __STATIC_INLINE uint32_t RTCC_IntGet(
void )
557 __STATIC_INLINE uint32_t RTCC_IntGetEnabled(
void )
564 return RTCC->IF & tmp;
575 __STATIC_INLINE
void RTCC_IntSet( uint32_t flags )
589 __STATIC_INLINE
void RTCC_Lock(
void )
591 RTCC->LOCK = RTCC_LOCK_LOCKKEY_LOCK;
601 __STATIC_INLINE uint32_t RTCC_PreCounterGet(
void )
613 __STATIC_INLINE
void RTCC_PreCounterSet( uint32_t preCntVal )
615 RTCC->PRECNT = preCntVal;
618 void RTCC_Reset(
void );
627 __STATIC_INLINE
void RTCC_RetentionRamPowerDown(
void )
629 RTCC->POWERDOWN = RTCC_POWERDOWN_RAM;
632 void RTCC_StatusClear(
void );
641 __STATIC_INLINE uint32_t RTCC_StatusGet(
void )
643 while ( RTCC->SYNCBUSY & RTCC_SYNCBUSY_CMD )
657 __STATIC_INLINE uint32_t RTCC_TimeGet(
void )
669 __STATIC_INLINE
void RTCC_TimeSet( uint32_t time )
683 __STATIC_INLINE
void RTCC_Unlock(
void )
685 RTCC->LOCK = RTCC_LOCK_LOCKKEY_UNLOCK;
Emlib peripheral API "assert" implementation.
CMSIS Cortex-M Peripheral Access Layer for Silicon Laboratories microcontroller devices.