SYSRTC - System Real Time Counter
Description
System Real Time Counter (SYSRTC) Peripheral API.
This module contains functions to control the SYSRTC peripheral of Silicon Labs 32-bit MCUs and SoCs. The SYSRTC ensures timekeeping in low energy modes.
Data Structures |
|
struct | sl_sysrtc_config_t |
SYSRTC configuration structure.
|
|
struct | sl_sysrtc_group_channel_compare_config_t |
Compare channel configuration structure.
|
|
struct | sl_sysrtc_group_channel_capture_config_t |
Capture channel configuration structure.
|
|
struct | sl_sysrtc_group_config_t |
Group configuration structure.
|
|
Functions |
|
void | sl_sysrtc_init (const sl_sysrtc_config_t *p_config) |
Initializes SYSRTC module.
|
|
void | sl_sysrtc_enable (void) |
Enables SYSRTC counting.
|
|
void | sl_sysrtc_disable (void) |
Disables SYSRTC counting.
|
|
void | sl_sysrtc_reset (void) |
Restores SYSRTC to its reset state.
|
|
void | sl_sysrtc_init_group (uint8_t group_number, sl_sysrtc_group_config_t const *p_group_config) |
Initializes the selected SYSRTC group.
|
|
void | sl_sysrtc_enable_group_interrupts (uint8_t group_number, uint32_t flags) |
Enables one or more SYSRTC interrupts for the given group.
|
|
void | sl_sysrtc_disable_group_interrupts (uint8_t group_number, uint32_t flags) |
Disables one or more SYSRTC interrupts for the given group.
|
|
void | sl_sysrtc_clear_group_interrupts (uint8_t group_number, uint32_t flags) |
Clears one or more pending SYSRTC interrupts for the given group.
|
|
uint32_t | sl_sysrtc_get_group_interrupts (uint8_t group_number) |
Gets pending SYSRTC interrupt flags for the given group.
|
|
uint32_t | sl_sysrtc_get_group_enabled_interrupts (uint8_t group_number) |
Gets enabled and pending SYSRTC interrupt flags.
|
|
void | sl_sysrtc_set_group_interrupts (uint8_t group_number, uint32_t flags) |
Sets one or more pending SYSRTC interrupts for the given group from Software.
|
|
uint32_t | sl_sysrtc_get_group_compare_channel_value (uint8_t group_number, uint8_t channel) |
Gets SYSRTC compare register value for selected channel of given group.
|
|
void | sl_sysrtc_set_group_compare_channel_value (uint8_t group_number, uint8_t channel, uint32_t value) |
Sets SYSRTC compare register value for selected channel of given group.
|
|
uint32_t | sl_sysrtc_get_group_capture_channel_value (uint8_t group_number) |
Gets SYSRTC input capture register value for selected channel of given group.
|
|
void | sl_sysrtc_wait_sync (void) |
Waits for the SYSRTC to complete all synchronization of register changes and commands.
|
|
void | sl_sysrtc_wait_ready (void) |
Waits for the SYSRTC to complete reseting or disabling procedure.
|
|
void | sl_sysrtc_start (void) |
Starts SYSRTC counter.
|
|
void | sl_sysrtc_stop (void) |
Stops the SYSRTC counter.
|
|
uint32_t | sl_sysrtc_get_status (void) |
Gets SYSRTC STATUS register value.
|
|
void | sl_sysrtc_lock (void) |
Locks SYSRTC registers.
|
|
void | sl_sysrtc_unlock (void) |
Unlocks SYSRTC registers.
|
|
uint32_t | sl_sysrtc_get_counter (void) |
Gets SYSRTC counter value.
|
|
void | sl_sysrtc_set_counter (uint32_t value) |
Sets the SYSRTC counter value.
|
|
Macros |
|
#define | SYSRTC_GROUP_MIN_CHANNEL_COMPARE 1u |
Minimum compare channels for SYSRTC group.
|
|
#define | SYSRTC_GROUP_MAX_CHANNEL_COMPARE 2u |
Maximum compare channels for SYSRTC group.
|
|
#define | SYSRTC_GROUP_MIN_CHANNEL_CAPTURE 0u |
Minimum capture channels for SYSRTC group.
|
|
#define | SYSRTC_GROUP_MAX_CHANNEL_CAPTURE 1u |
Maximum capture channels for SYSRTC group.
|
|
#define | SYSRTC_GROUP_NUMBER 1u |
Sysrtc group number.
|
|
#define | SYSRTC_GROUP_VALID (group) ((unsigned)(group) < SYSRTC_GROUP_NUMBER ) |
Validation of valid SYSRTC group for assert statements.
|
|
#define | SYSRTC_CONFIG_DEFAULT |
Suggested default values for SYSRTC configuration structure.
|
|
#define | SYSRTC_GROUP_CHANNEL_COMPARE_CONFIG_DEFAULT |
Suggested default values for compare channel configuration structure.
|
|
#define | SYSRTC_GROUP_CHANNEL_CAPTURE_CONFIG_DEFAULT |
Suggested default values for capture channel configuration structure.
|
|
#define | SYSRTC_GROUP_CONFIG_DEFAULT |
Suggested default values for SYSRTC group configuration structure.
|
|
Enumerations |
|
enum |
sl_sysrtc_capture_edge_t
{
SL_SYSRTC_CAPTURE_EDGE_RISING = 0, SL_SYSRTC_CAPTURE_EDGE_FALLING , SL_SYSRTC_CAPTURE_EDGE_BOTH } |
Capture input edge select.
|
|
enum |
sl_sysrtc_compare_match_out_action_t
{
SL_SYSRTC_COMPARE_MATCH_OUT_ACTION_CLEAR = 0, SL_SYSRTC_COMPARE_MATCH_OUT_ACTION_SET , SL_SYSRTC_COMPARE_MATCH_OUT_ACTION_PULSE , SL_SYSRTC_COMPARE_MATCH_OUT_ACTION_TOGGLE , SL_SYSRTC_COMPARE_MATCH_OUT_ACTION_CMPIF } |
Compare match output action mode.
|
|
Function Documentation
◆ sl_sysrtc_init()
void sl_sysrtc_init | ( | const sl_sysrtc_config_t * |
p_config
|
) |
Initializes SYSRTC module.
Note that the compare values must be set separately with ( sl_sysrtc_set_group_compare_channel_value() ), which should probably be done prior to the use of this function if configuring the SYSRTC to start when initialization is completed.
- Parameters
-
[in] p_config
A pointer to the SYSRTC initialization structure variable.
◆ sl_sysrtc_enable()
void sl_sysrtc_enable | ( | void |
|
) |
Enables SYSRTC counting.
◆ sl_sysrtc_disable()
void sl_sysrtc_disable | ( | void |
|
) |
Disables SYSRTC counting.
◆ sl_sysrtc_reset()
void sl_sysrtc_reset | ( | void |
|
) |
Restores SYSRTC to its reset state.
◆ sl_sysrtc_init_group()
void sl_sysrtc_init_group | ( | uint8_t |
group_number,
|
sl_sysrtc_group_config_t const * |
p_group_config
|
||
) |
Initializes the selected SYSRTC group.
- Parameters
-
[in] group_number
SYSRTC group number to use. [in] p_group_config
Pointer to group configuration structure variable.
◆ sl_sysrtc_enable_group_interrupts()
void sl_sysrtc_enable_group_interrupts | ( | uint8_t |
group_number,
|
uint32_t |
flags
|
||
) |
Enables one or more SYSRTC interrupts for the given group.
- Note
- Depending on the use, a pending interrupt may already be set prior to enabling the interrupt. To ignore a pending interrupt, consider using sl_sysrtc_clear_group_interrupts() prior to enabling the interrupt.
- Parameters
-
[in] group_number
SYSRTC group number to use. [in] flags
SYSRTC interrupt sources to enable. Use a set of interrupt flags OR-ed together to set multiple interrupt sources for the given SYSRTC group.
◆ sl_sysrtc_disable_group_interrupts()
void sl_sysrtc_disable_group_interrupts | ( | uint8_t |
group_number,
|
uint32_t |
flags
|
||
) |
Disables one or more SYSRTC interrupts for the given group.
- Parameters
-
[in] group_number
SYSRTC group number to use. [in] flags
SYSRTC interrupt sources to disable. Use a set of interrupt flags OR-ed together to disable multiple interrupt sources for the given SYSRTC group.
◆ sl_sysrtc_clear_group_interrupts()
void sl_sysrtc_clear_group_interrupts | ( | uint8_t |
group_number,
|
uint32_t |
flags
|
||
) |
Clears one or more pending SYSRTC interrupts for the given group.
- Parameters
-
[in] group_number
SYSRTC group number to use. [in] flags
SYSRTC interrupt sources to clear. Use a set of interrupt flags OR-ed together to clear multiple interrupt sources for the given SYSRTC group.
◆ sl_sysrtc_get_group_interrupts()
uint32_t sl_sysrtc_get_group_interrupts | ( | uint8_t |
group_number
|
) |
Gets pending SYSRTC interrupt flags for the given group.
- Note
- Event bits are not cleared by using this function.
- Parameters
-
[in] group_number
SYSRTC group number to use.
- Returns
- Pending SYSRTC interrupt sources. Returns a set of interrupt flags OR-ed together for multiple interrupt sources in the SYSRTC group.
◆ sl_sysrtc_get_group_enabled_interrupts()
uint32_t sl_sysrtc_get_group_enabled_interrupts | ( | uint8_t |
group_number
|
) |
Gets enabled and pending SYSRTC interrupt flags.
Useful for handling more interrupt sources in the same interrupt handler.
- Note
- Interrupt flags are not cleared by using this function.
- Parameters
-
[in] group_number
SYSRTC group number to use.
- Returns
-
Pending and enabled SYSRTC interrupt sources. The return value is the bitwise AND of
- the enabled interrupt sources in SYSRTC_GRPx_IEN and
- the pending interrupt flags SYSRTC_GRPx_IF.
◆ sl_sysrtc_set_group_interrupts()
void sl_sysrtc_set_group_interrupts | ( | uint8_t |
group_number,
|
uint32_t |
flags
|
||
) |
Sets one or more pending SYSRTC interrupts for the given group from Software.
- Parameters
-
[in] group_number
SYSRTC group number to use. [in] flags
SYSRTC interrupt sources to set to pending. Use a set of interrupt flags OR-ed together to set multiple interrupt sources for the SYSRTC group.
◆ sl_sysrtc_get_group_compare_channel_value()
uint32_t sl_sysrtc_get_group_compare_channel_value | ( | uint8_t |
group_number,
|
uint8_t |
channel
|
||
) |
Gets SYSRTC compare register value for selected channel of given group.
- Parameters
-
[in] group_number
SYSRTC group number to use. [in] channel
Channel selector.
- Returns
- Compare register value.
◆ sl_sysrtc_set_group_compare_channel_value()
void sl_sysrtc_set_group_compare_channel_value | ( | uint8_t |
group_number,
|
uint8_t |
channel,
|
||
uint32_t |
value
|
||
) |
Sets SYSRTC compare register value for selected channel of given group.
- Parameters
-
[in] group_number
SYSRTC group number to use. [in] channel
Channel selector. [in] value
Compare register value.
◆ sl_sysrtc_get_group_capture_channel_value()
uint32_t sl_sysrtc_get_group_capture_channel_value | ( | uint8_t |
group_number
|
) |
Gets SYSRTC input capture register value for selected channel of given group.
Gets SYSRTC input capture register value for capture channel of given group.
- Parameters
-
[in] group_number
SYSRTC group number to use.
- Returns
- Capture register value.
◆ sl_sysrtc_wait_sync()
|
inline |
Waits for the SYSRTC to complete all synchronization of register changes and commands.
◆ sl_sysrtc_wait_ready()
|
inline |
Waits for the SYSRTC to complete reseting or disabling procedure.
◆ sl_sysrtc_start()
|
inline |
Starts SYSRTC counter.
This function will send a start command to the SYSRTC peripheral. The SYSRTC peripheral will use some LF clock ticks before the command is executed. The sl_sysrtc_wait_sync() function can be used to wait for the start command to be executed.
- Note
- This function requires the SYSRTC to be enabled.
◆ sl_sysrtc_stop()
|
inline |
Stops the SYSRTC counter.
This function will send a stop command to the SYSRTC peripheral. The SYSRTC peripheral will use some LF clock ticks before the command is executed. The sl_sysrtc_wait_sync() function can be used to wait for the stop command to be executed.
- Note
- This function requires the SYSRTC to be enabled.
◆ sl_sysrtc_get_status()
|
inline |
Gets SYSRTC STATUS register value.
- Returns
- Current STATUS register value.
◆ sl_sysrtc_lock()
|
inline |
Locks SYSRTC registers.
- Note
- When SYSRTC registers are locked SYSRTC_EN, SYSRTC_CFG, SYSRTC_CMD, SYSRTC_SWRST, SYSRTC_CNT and SYSRTC_TOPCNT registers cannot be written to.
◆ sl_sysrtc_unlock()
|
inline |
Unlocks SYSRTC registers.
- Note
- When SYSRTC registers are locked SYSRTC_EN, SYSRTC_CFG, SYSRTC_CMD, SYSRTC_SWRST, SYSRTC_CNT and SYSRTC_TOPCNT registers cannot be written to.
◆ sl_sysrtc_get_counter()
|
inline |
Gets SYSRTC counter value.
- Returns
- Current SYSRTC counter value.
◆ sl_sysrtc_set_counter()
|
inline |
Sets the SYSRTC counter value.
- Parameters
-
[in] value
The new SYSRTC counter value.
Macro Definition Documentation
◆ SYSRTC_GROUP_MIN_CHANNEL_COMPARE
#define SYSRTC_GROUP_MIN_CHANNEL_COMPARE 1u |
Minimum compare channels for SYSRTC group.
◆ SYSRTC_GROUP_MAX_CHANNEL_COMPARE
#define SYSRTC_GROUP_MAX_CHANNEL_COMPARE 2u |
Maximum compare channels for SYSRTC group.
◆ SYSRTC_GROUP_MIN_CHANNEL_CAPTURE
#define SYSRTC_GROUP_MIN_CHANNEL_CAPTURE 0u |
Minimum capture channels for SYSRTC group.
◆ SYSRTC_GROUP_MAX_CHANNEL_CAPTURE
#define SYSRTC_GROUP_MAX_CHANNEL_CAPTURE 1u |
Maximum capture channels for SYSRTC group.
◆ SYSRTC_GROUP_NUMBER
#define SYSRTC_GROUP_NUMBER 1u |
Sysrtc group number.
◆ SYSRTC_GROUP_VALID
#define SYSRTC_GROUP_VALID | ( |
group
|
) | ((unsigned)(group) < SYSRTC_GROUP_NUMBER ) |
Validation of valid SYSRTC group for assert statements.
◆ SYSRTC_CONFIG_DEFAULT
#define SYSRTC_CONFIG_DEFAULT |
Suggested default values for SYSRTC configuration structure.
◆ SYSRTC_GROUP_CHANNEL_COMPARE_CONFIG_DEFAULT
#define SYSRTC_GROUP_CHANNEL_COMPARE_CONFIG_DEFAULT |
Suggested default values for compare channel configuration structure.
◆ SYSRTC_GROUP_CHANNEL_CAPTURE_CONFIG_DEFAULT
#define SYSRTC_GROUP_CHANNEL_CAPTURE_CONFIG_DEFAULT |
Suggested default values for capture channel configuration structure.
◆ SYSRTC_GROUP_CONFIG_DEFAULT
#define SYSRTC_GROUP_CONFIG_DEFAULT |
Suggested default values for SYSRTC group configuration structure.
Enumeration Type Documentation
◆ sl_sysrtc_capture_edge_t
◆ sl_sysrtc_compare_match_out_action_t
Compare match output action mode.