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_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. | |
| void | sl_sysrtc_reset (void) | 
| Restores SYSRTC to its reset state. | |
| 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. | |
| 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 capture channel of given group. | |
| 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_configA 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_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_reset()
| void sl_sysrtc_reset | ( | void | 
            | ) | 
Restores SYSRTC to its reset state.
◆ 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] valueThe new SYSRTC counter value. 
◆ 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_numberSYSRTC group number to use. [in] p_group_configPointer 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_numberSYSRTC group number to use. [in] flagsSYSRTC 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_numberSYSRTC group number to use. [in] flagsSYSRTC 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_numberSYSRTC group number to use. [in] flagsSYSRTC 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_numberSYSRTC 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_numberSYSRTC 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_numberSYSRTC group number to use. [in] flagsSYSRTC 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_numberSYSRTC group number to use. [in] channelChannel 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_numberSYSRTC group number to use. [in] channelChannel selector. [in] valueCompare 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 capture channel of given group.
Gets SYSRTC input capture register value for selected channel of given group.
- Parameters
- 
         [in] group_numberSYSRTC group number to use. 
- Returns
- Capture register 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.