LETIMEREMLIB
Detailed Description
Low Energy Timer (LETIMER) Peripheral API.
This module contains functions to control the LETIMER peripheral of Silicon Labs 32-bit MCUs and SoCs. The LETIMER is a down-counter that can keep track of time and output configurable waveforms.
Data Structures |
|
struct | LETIMER_Init_TypeDef |
Macros |
|
#define | LETIMER_INIT_DEFAULT |
Enumerations |
|
enum |
LETIMER_RepeatMode_TypeDef
{
letimerRepeatFree = _LETIMER_CTRL_REPMODE_FREE, letimerRepeatOneshot = _LETIMER_CTRL_REPMODE_ONESHOT, letimerRepeatBuffered = _LETIMER_CTRL_REPMODE_BUFFERED, letimerRepeatDouble = _LETIMER_CTRL_REPMODE_DOUBLE } |
enum |
LETIMER_UFOA_TypeDef
{
letimerUFOANone = _LETIMER_CTRL_UFOA0_NONE, letimerUFOAToggle = _LETIMER_CTRL_UFOA0_TOGGLE, letimerUFOAPulse = _LETIMER_CTRL_UFOA0_PULSE, letimerUFOAPwm = _LETIMER_CTRL_UFOA0_PWM } |
Functions |
|
uint32_t | LETIMER_CompareGet ( LETIMER_TypeDef *letimer, unsigned int comp) |
Get LETIMER compare register value.
|
|
void | LETIMER_CompareSet ( LETIMER_TypeDef *letimer, unsigned int comp, uint32_t value) |
Set LETIMER compare register value.
|
|
__STATIC_INLINE uint32_t | LETIMER_CounterGet ( LETIMER_TypeDef *letimer) |
Get LETIMER counter value.
|
|
void | LETIMER_Enable ( LETIMER_TypeDef *letimer, bool enable) |
Start/stop LETIMER.
|
|
void | LETIMER_FreezeEnable ( LETIMER_TypeDef *letimer, bool enable) |
LETIMER register synchronization freeze control.
|
|
void | LETIMER_Init ( LETIMER_TypeDef *letimer, const LETIMER_Init_TypeDef *init) |
Initialize LETIMER.
|
|
__STATIC_INLINE void | LETIMER_IntClear ( LETIMER_TypeDef *letimer, uint32_t flags) |
Clear one or more pending LETIMER interrupts.
|
|
__STATIC_INLINE void | LETIMER_IntDisable ( LETIMER_TypeDef *letimer, uint32_t flags) |
Disable one or more LETIMER interrupts.
|
|
__STATIC_INLINE void | LETIMER_IntEnable ( LETIMER_TypeDef *letimer, uint32_t flags) |
Enable one or more LETIMER interrupts.
|
|
__STATIC_INLINE uint32_t | LETIMER_IntGet ( LETIMER_TypeDef *letimer) |
Get pending LETIMER interrupt flags.
|
|
__STATIC_INLINE uint32_t | LETIMER_IntGetEnabled ( LETIMER_TypeDef *letimer) |
Get enabled and pending LETIMER interrupt flags.
|
|
__STATIC_INLINE void | LETIMER_IntSet ( LETIMER_TypeDef *letimer, uint32_t flags) |
Set one or more pending LETIMER interrupts from SW.
|
|
uint32_t | LETIMER_RepeatGet ( LETIMER_TypeDef *letimer, unsigned int rep) |
Get LETIMER repeat register value.
|
|
void | LETIMER_RepeatSet ( LETIMER_TypeDef *letimer, unsigned int rep, uint32_t value) |
Set LETIMER repeat counter register value.
|
|
void | LETIMER_Reset ( LETIMER_TypeDef *letimer) |
Reset LETIMER to same state as after a HW reset.
|
|
Macro Definition Documentation
#define LETIMER_INIT_DEFAULT |
Default config for LETIMER init structure.
Definition at line
111
of file
em_letimer.h
.
Referenced by MIC_init() .
Enumeration Type Documentation
Repeat mode.
Definition at line
59
of file
em_letimer.h
.
enum LETIMER_UFOA_TypeDef |
Underflow action on output.
Definition at line
77
of file
em_letimer.h
.
Function Documentation
uint32_t LETIMER_CompareGet | ( | LETIMER_TypeDef * |
letimer,
|
unsigned int |
comp
|
||
) |
Get LETIMER compare register value.
- Parameters
-
[in] letimer
Pointer to LETIMER peripheral register block [in] comp
Compare register to get, either 0 or 1
- Returns
- Compare register value, 0 if invalid register selected.
Definition at line
135
of file
em_letimer.c
.
References LETIMER_TypeDef::COMP0 , and LETIMER_TypeDef::COMP1 .
void LETIMER_CompareSet | ( | LETIMER_TypeDef * |
letimer,
|
unsigned int |
comp,
|
||
uint32_t |
value
|
||
) |
Set LETIMER compare register value.
- Note
- The setting of a compare register requires synchronization into the low frequency domain. If the same register is modified before a previous update has completed, this function will stall until the previous synchronization has completed. This only applies to the Gecko Family, see comment in the LETIMER_Sync() internal function call.
- Parameters
-
[in] letimer
Pointer to LETIMER peripheral register block [in] comp
Compare register to set, either 0 or 1 [in] value
Initialization value (<= 0x0000ffff)
Definition at line
180
of file
em_letimer.c
.
References _LETIMER_COMP0_COMP0_MASK , _LETIMER_COMP0_COMP0_SHIFT , LETIMER_TypeDef::COMP0 , LETIMER_TypeDef::COMP1 , LETIMER_SYNCBUSY_COMP0 , and LETIMER_SYNCBUSY_COMP1 .
Referenced by MIC_init() .
__STATIC_INLINE uint32_t LETIMER_CounterGet | ( | LETIMER_TypeDef * |
letimer
|
) |
Get LETIMER counter value.
- Parameters
-
[in] letimer
Pointer to LETIMER peripheral register block.
- Returns
- Current LETIMER counter value.
Definition at line
159
of file
em_letimer.h
.
References LETIMER_TypeDef::CNT .
void LETIMER_Enable | ( | LETIMER_TypeDef * |
letimer,
|
bool |
enable
|
||
) |
Start/stop LETIMER.
- Note
- The enabling/disabling of the LETIMER modifies the LETIMER CMD register which requires synchronization into the low frequency domain. If this register is modified before a previous update to the same register has completed, this function will stall until the previous synchronization has completed. This only applies to the Gecko Family, see comment in the LETIMER_Sync() internal function call.
- Parameters
-
[in] letimer
Pointer to LETIMER peripheral register block. [in] enable
true to enable counting, false to disable.
Definition at line
233
of file
em_letimer.c
.
References LETIMER_TypeDef::CMD , LETIMER_CMD_START , LETIMER_CMD_STOP , and LETIMER_SYNCBUSY_CMD .
void LETIMER_FreezeEnable | ( | LETIMER_TypeDef * |
letimer,
|
bool |
enable
|
||
) |
LETIMER register synchronization freeze control.
Some LETIMER registers require synchronization into the low frequency (LF) domain. The freeze feature allows for several such registers to be modified before passing them to the LF domain simultaneously (which takes place when the freeze mode is disabled).
- Note
- When enabling freeze mode, this function will wait for all current ongoing LETIMER synchronization to LF domain to complete (Normally synchronization will not be in progress.) However for this reason, when using freeze mode, modifications of registers requiring LF synchronization should be done within one freeze enable/disable block to avoid unecessary stalling.
- Parameters
-
[in] letimer
Pointer to LETIMER peripheral register block. [in] enable
- true - enable freeze, modified registers are not propagated to the LF domain
- false - disables freeze, modified registers are propagated to LF domain
Definition at line
277
of file
em_letimer.c
.
References LETIMER_TypeDef::FREEZE , LETIMER_FREEZE_REGFREEZE , and LETIMER_TypeDef::SYNCBUSY .
Referenced by LETIMER_Reset() .
void LETIMER_Init | ( | LETIMER_TypeDef * |
letimer,
|
const LETIMER_Init_TypeDef * |
init
|
||
) |
Initialize LETIMER.
Note that the compare/repeat values must be set separately with LETIMER_CompareSet() and LETIMER_RepeatSet() . That should probably be done prior to the use of this function if configuring the LETIMER to start when initialization is completed.
- Note
- The initialization of the LETIMER modifies the LETIMER CTRL/CMD registers which require synchronization into the low frequency domain. If any of those registers are modified before a previous update to the same register has completed, this function will stall until the previous synchronization has completed. This only applies to the Gecko Family, see comment in the LETIMER_Sync() internal function call.
- Parameters
-
[in] letimer
Pointer to LETIMER peripheral register block. [in] init
Pointer to LETIMER initialization structure.
Definition at line
323
of file
em_letimer.c
.
References _LETIMER_CTRL_REPMODE_SHIFT , _LETIMER_CTRL_UFOA0_SHIFT , _LETIMER_CTRL_UFOA1_SHIFT , LETIMER_Init_TypeDef::bufTop , LETIMER_TypeDef::CMD , LETIMER_Init_TypeDef::comp0Top , LETIMER_TypeDef::CTRL , LETIMER_Init_TypeDef::debugRun , LETIMER_Init_TypeDef::enable , LETIMER_CMD_START , LETIMER_CMD_STOP , LETIMER_CTRL_BUFTOP , LETIMER_CTRL_COMP0TOP , LETIMER_CTRL_DEBUGRUN , LETIMER_CTRL_OPOL0 , LETIMER_CTRL_OPOL1 , LETIMER_CTRL_RTCC0TEN , LETIMER_CTRL_RTCC1TEN , LETIMER_STATUS_RUNNING , LETIMER_SYNCBUSY_CMD , LETIMER_SYNCBUSY_CTRL , LETIMER_Init_TypeDef::out0Pol , LETIMER_Init_TypeDef::out1Pol , LETIMER_Init_TypeDef::repMode , LETIMER_Init_TypeDef::rtcComp0Enable , LETIMER_Init_TypeDef::rtcComp1Enable , LETIMER_TypeDef::STATUS , LETIMER_Init_TypeDef::ufoa0 , and LETIMER_Init_TypeDef::ufoa1 .
Referenced by MIC_init() .
__STATIC_INLINE void LETIMER_IntClear | ( | LETIMER_TypeDef * |
letimer,
|
uint32_t |
flags
|
||
) |
Clear one or more pending LETIMER interrupts.
- Parameters
-
[in] letimer
Pointer to LETIMER peripheral register block. [in] flags
Pending LETIMER interrupt source to clear. Use a bitwise logic OR combination of valid interrupt flags for the LETIMER module (LETIMER_IF_nnn).
Definition at line
182
of file
em_letimer.h
.
References LETIMER_TypeDef::IFC .
__STATIC_INLINE void LETIMER_IntDisable | ( | LETIMER_TypeDef * |
letimer,
|
uint32_t |
flags
|
||
) |
Disable one or more LETIMER interrupts.
- Parameters
-
[in] letimer
Pointer to LETIMER peripheral register block. [in] flags
LETIMER interrupt sources to disable. Use a bitwise logic OR combination of valid interrupt flags for the LETIMER module (LETIMER_IF_nnn).
Definition at line
198
of file
em_letimer.h
.
References LETIMER_TypeDef::IEN .
__STATIC_INLINE void LETIMER_IntEnable | ( | LETIMER_TypeDef * |
letimer,
|
uint32_t |
flags
|
||
) |
Enable one or more LETIMER interrupts.
- Note
- Depending on the use, a pending interrupt may already be set prior to enabling the interrupt. Consider using LETIMER_IntClear() prior to enabling if such a pending interrupt should be ignored.
- Parameters
-
[in] letimer
Pointer to LETIMER peripheral register block. [in] flags
LETIMER interrupt sources to enable. Use a bitwise logic OR combination of valid interrupt flags for the LETIMER module (LETIMER_IF_nnn).
Definition at line
219
of file
em_letimer.h
.
References LETIMER_TypeDef::IEN .
__STATIC_INLINE uint32_t LETIMER_IntGet | ( | LETIMER_TypeDef * |
letimer
|
) |
Get pending LETIMER interrupt flags.
- Note
- The event bits are not cleared by the use of this function.
- Parameters
-
[in] letimer
Pointer to LETIMER peripheral register block.
- Returns
- LETIMER interrupt sources pending. A bitwise logic OR combination of valid interrupt flags for the LETIMER module (LETIMER_IF_nnn).
Definition at line
238
of file
em_letimer.h
.
References LETIMER_TypeDef::IF .
__STATIC_INLINE uint32_t LETIMER_IntGetEnabled | ( | LETIMER_TypeDef * |
letimer
|
) |
Get enabled and pending LETIMER interrupt flags.
Useful for handling more interrupt sources in the same interrupt handler.
- Note
- The event bits are not cleared by the use of this function.
- Parameters
-
[in] letimer
Pointer to LETIMER peripheral register block.
- Returns
-
Pending and enabled LETIMER interrupt sources. The return value is the bitwise AND combination of
- the OR combination of enabled interrupt sources in LETIMER_IEN_nnn register (LETIMER_IEN_nnn) and
- the OR combination of valid interrupt flags of the LETIMER module (LETIMER_IF_nnn).
Definition at line
264
of file
em_letimer.h
.
References LETIMER_TypeDef::IEN , and LETIMER_TypeDef::IF .
__STATIC_INLINE void LETIMER_IntSet | ( | LETIMER_TypeDef * |
letimer,
|
uint32_t |
flags
|
||
) |
Set one or more pending LETIMER interrupts from SW.
- Parameters
-
[in] letimer
Pointer to LETIMER peripheral register block. [in] flags
LETIMER interrupt sources to set to pending. Use a bitwise logic OR combination of valid interrupt flags for the LETIMER module (LETIMER_IF_nnn).
Definition at line
287
of file
em_letimer.h
.
References LETIMER_TypeDef::IFS .
uint32_t LETIMER_RepeatGet | ( | LETIMER_TypeDef * |
letimer,
|
unsigned int |
rep
|
||
) |
Get LETIMER repeat register value.
- Parameters
-
[in] letimer
Pointer to LETIMER peripheral register block [in] rep
Repeat register to get, either 0 or 1
- Returns
- Repeat register value, 0 if invalid register selected.
Definition at line
403
of file
em_letimer.c
.
References LETIMER_TypeDef::REP0 , and LETIMER_TypeDef::REP1 .
void LETIMER_RepeatSet | ( | LETIMER_TypeDef * |
letimer,
|
unsigned int |
rep,
|
||
uint32_t |
value
|
||
) |
Set LETIMER repeat counter register value.
- Note
- The setting of a repeat counter register requires synchronization into the low frequency domain. If the same register is modified before a previous update has completed, this function will stall until the previous synchronization has completed. This only applies to the Gecko Family, see comment in the LETIMER_Sync() internal function call.
- Parameters
-
[in] letimer
Pointer to LETIMER peripheral register block [in] rep
Repeat counter register to set, either 0 or 1 [in] value
Initialization value (<= 0x0000ffff)
Definition at line
448
of file
em_letimer.c
.
References _LETIMER_REP0_REP0_MASK , _LETIMER_REP0_REP0_SHIFT , LETIMER_SYNCBUSY_REP0 , LETIMER_SYNCBUSY_REP1 , LETIMER_TypeDef::REP0 , and LETIMER_TypeDef::REP1 .
Referenced by MIC_init() .
void LETIMER_Reset | ( | LETIMER_TypeDef * |
letimer
|
) |
Reset LETIMER to same state as after a HW reset.
- Note
- The ROUTE register is NOT reset by this function, in order to allow for centralized setup of this feature.
- Parameters
-
[in] letimer
Pointer to LETIMER peripheral register block.
Definition at line
502
of file
em_letimer.c
.
References _LETIMER_COMP0_RESETVALUE , _LETIMER_COMP1_RESETVALUE , _LETIMER_CTRL_RESETVALUE , _LETIMER_IEN_RESETVALUE , _LETIMER_IFC_MASK , _LETIMER_REP0_RESETVALUE , _LETIMER_REP1_RESETVALUE , LETIMER_TypeDef::CMD , LETIMER_TypeDef::COMP0 , LETIMER_TypeDef::COMP1 , LETIMER_TypeDef::CTRL , LETIMER_TypeDef::IEN , LETIMER_TypeDef::IFC , LETIMER_CMD_CLEAR , LETIMER_CMD_CTO0 , LETIMER_CMD_CTO1 , LETIMER_CMD_STOP , LETIMER_FreezeEnable() , LETIMER_TypeDef::REP0 , and LETIMER_TypeDef::REP1 .