LETIMER - Low Energy Timer
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 |
LETIMER initialization structure.
|
|
Functions |
|
uint32_t | LETIMER_CompareGet (LETIMER_TypeDef *letimer, unsigned int comp) |
Get the LETIMER compare register value.
|
|
uint32_t | LETIMER_CounterGet (LETIMER_TypeDef *letimer) |
Get LETIMER counter value.
|
|
void | LETIMER_CompareSet (LETIMER_TypeDef *letimer, unsigned int comp, uint32_t value) |
Set the LETIMER compare register 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.
|
|
uint32_t | LETIMER_RepeatGet (LETIMER_TypeDef *letimer, unsigned int rep) |
Get the LETIMER repeat register value.
|
|
void | LETIMER_RepeatSet (LETIMER_TypeDef *letimer, unsigned int rep, uint32_t value) |
Set the LETIMER repeat counter register value.
|
|
void | LETIMER_Reset (LETIMER_TypeDef *letimer) |
Reset LETIMER to the same state that it was in after a hardware reset.
|
|
void | LETIMER_SyncWait (LETIMER_TypeDef *letimer) |
Wait for the LETIMER to complete all synchronization of register changes and commands.
|
|
void | LETIMER_TopSet (LETIMER_TypeDef *letimer, uint32_t value) |
Set the LETIMER top value.
|
|
uint32_t | LETIMER_TopGet (LETIMER_TypeDef *letimer) |
Get the current LETIMER top value.
|
|
void | LETIMER_IntClear (LETIMER_TypeDef *letimer, uint32_t flags) |
Clear one or more pending LETIMER interrupts.
|
|
void | LETIMER_IntDisable (LETIMER_TypeDef *letimer, uint32_t flags) |
Disable one or more LETIMER interrupts.
|
|
void | LETIMER_IntEnable (LETIMER_TypeDef *letimer, uint32_t flags) |
Enable one or more LETIMER interrupts.
|
|
uint32_t | LETIMER_IntGet (LETIMER_TypeDef *letimer) |
Get pending LETIMER interrupt flags.
|
|
uint32_t | LETIMER_IntGetEnabled (LETIMER_TypeDef *letimer) |
Get enabled and pending LETIMER interrupt flags.
|
|
void | LETIMER_IntSet (LETIMER_TypeDef *letimer, uint32_t flags) |
Set one or more pending LETIMER interrupts from SW.
|
|
Macros |
|
#define | LETIMER_INIT_DEFAULT |
Default configuration for LETIMER initialization structure.
|
|
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 } |
Repeat mode.
|
|
enum |
LETIMER_UFOA_TypeDef
{
letimerUFOANone = _LETIMER_CTRL_UFOA0_NONE, letimerUFOAToggle = _LETIMER_CTRL_UFOA0_TOGGLE, letimerUFOAPulse = _LETIMER_CTRL_UFOA0_PULSE, letimerUFOAPwm = _LETIMER_CTRL_UFOA0_PWM } |
Underflow action on output.
|
|
Function Documentation
◆ LETIMER_CompareGet()
uint32_t LETIMER_CompareGet | ( | LETIMER_TypeDef * |
letimer,
|
unsigned int |
comp
|
||
) |
Get the LETIMER compare register value.
- Parameters
-
[in] letimer
A pointer to the LETIMER peripheral register block. [in] comp
A compare register to get, either 0 or 1.
- Returns
- A compare register value, 0 if invalid register selected.
◆ LETIMER_CounterGet()
uint32_t LETIMER_CounterGet | ( | LETIMER_TypeDef * |
letimer
|
) |
Get LETIMER counter value.
- Parameters
-
[in] letimer
Pointer to the LETIMER peripheral register block.
- Returns
- Current LETIMER counter value.
◆ LETIMER_CompareSet()
void LETIMER_CompareSet | ( | LETIMER_TypeDef * |
letimer,
|
unsigned int |
comp,
|
||
uint32_t |
value
|
||
) |
Set the 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 comments in the LETIMER_Sync() internal function call.
- Parameters
-
[in] letimer
A pointer to the LETIMER peripheral register block. [in] comp
A compare register to set, either 0 or 1. [in] value
An initialization value (<= 0x0000ffff).
◆ LETIMER_Enable()
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 comments in the LETIMER_Sync() internal function call.
- Parameters
-
[in] letimer
A pointer to the LETIMER peripheral register block. [in] enable
True to enable counting, false to disable.
◆ LETIMER_FreezeEnable()
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 the LF domain to complete (Normally synchronization will not be in progress.) However, for this reason, when using freeze mode, modifications of registers requiring the LF synchronization should be done within one freeze enable/disable block to avoid unecessary stalling.
- Parameters
-
[in] letimer
A pointer to the 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 the LF domain
◆ LETIMER_Init()
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 using this function if configuring the LETIMER to start when initialization is complete.
- 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 comments in the LETIMER_Sync() internal function call.
- Parameters
-
[in] letimer
A pointer to the LETIMER peripheral register block. [in] init
A pointer to the LETIMER initialization structure.
◆ LETIMER_RepeatGet()
uint32_t LETIMER_RepeatGet | ( | LETIMER_TypeDef * |
letimer,
|
unsigned int |
rep
|
||
) |
Get the LETIMER repeat register value.
- Parameters
-
[in] letimer
A pointer to the LETIMER peripheral register block. [in] rep
Repeat register to get, either 0 or 1.
- Returns
- Repeat register value, 0 if invalid register selected.
◆ LETIMER_RepeatSet()
void LETIMER_RepeatSet | ( | LETIMER_TypeDef * |
letimer,
|
unsigned int |
rep,
|
||
uint32_t |
value
|
||
) |
Set the 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 comments in the LETIMER_Sync() internal function call.
- Parameters
-
[in] letimer
A pointer to the LETIMER peripheral register block. [in] rep
Repeat counter register to set, either 0 or 1. [in] value
An initialization value (<= 0x0000ffff).
◆ LETIMER_Reset()
void LETIMER_Reset | ( | LETIMER_TypeDef * |
letimer
|
) |
Reset LETIMER to the same state that it was in after a hardware reset.
- Note
- The ROUTE register is NOT reset by this function to allow for a centralized setup of this feature.
- Parameters
-
[in] letimer
A pointer to the LETIMER peripheral register block.
◆ LETIMER_SyncWait()
void LETIMER_SyncWait | ( | LETIMER_TypeDef * |
letimer
|
) |
Wait for the LETIMER to complete all synchronization of register changes and commands.
- Parameters
-
[in] letimer
A pointer to the LETIMER peripheral register block.
◆ LETIMER_TopSet()
void LETIMER_TopSet | ( | LETIMER_TypeDef * |
letimer,
|
uint32_t |
value
|
||
) |
Set the LETIMER top value.
- Note
- The LETIMER is a down-counter, so when the counter reaches 0 then the top value will be loaded into the counter. This function can be used to set the top value.
If the LETIMER is not already configured to use a top value then this function will enable that functionality for the user.
- Parameters
-
[in] letimer
A pointer to the LETIMER peripheral register block. [in] value
The top value. This can be a 16 bit value on series-0 and series-1 devices and a 24 bit value on series-2 devices.
◆ LETIMER_TopGet()
uint32_t LETIMER_TopGet | ( | LETIMER_TypeDef * |
letimer
|
) |
Get the current LETIMER top value.
- Parameters
-
[in] letimer
A pointer to the LETIMER peripheral register block.
- Returns
- The top value. This will be a 16 bit value on series-0 and series-1 devices and a 24 bit value on series-2 devices.
◆ LETIMER_IntClear()
|
inline |
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).
◆ LETIMER_IntDisable()
|
inline |
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).
◆ LETIMER_IntEnable()
|
inline |
Enable one or more LETIMER interrupts.
- Note
- Depending on the use, a pending interrupt may already be set prior to enabling the interrupt. To ignore a pending interrupt, consider using LETIMER_IntClear() prior to enabling the interrupt.
- Parameters
-
[in] letimer
Pointer to the 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).
◆ LETIMER_IntGet()
|
inline |
Get pending LETIMER interrupt flags.
- Note
- 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).
◆ LETIMER_IntGetEnabled()
|
inline |
Get enabled and pending LETIMER interrupt flags.
Useful for handling more interrupt sources in the same interrupt handler.
- Note
- 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. 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).
◆ LETIMER_IntSet()
|
inline |
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).
Macro Definition Documentation
◆ LETIMER_INIT_DEFAULT
#define LETIMER_INIT_DEFAULT |
Default configuration for LETIMER initialization structure.
Enumeration Type Documentation
◆ LETIMER_RepeatMode_TypeDef
Repeat mode.
◆ LETIMER_UFOA_TypeDef
enum LETIMER_UFOA_TypeDef |