Hardware Timer Driver
Collaboration diagram for Hardware Timer Driver:
Macros | |
#define | MAX_HW_TIMER1_INTERVAL 0x7fffff |
Maximum timer interval in ticks. More... | |
#define | MIN_HW_TIMER1_INTERVAL_US 50U |
Minimum hardware interval in microseconds. More... | |
#define | MAX_HW_TIMER1_INTERVAL 0x7fffff |
Maximum timer interval in ticks. More... | |
#define | MIN_HW_TIMER1_INTERVAL_US 50U |
Minimum hardware interval in microseconds. More... | |
Typedefs | |
typedef void(* | hw_timer_callback_t) (void *arg) |
typedef void(* | hw_timer_callback_t) (void *arg) |
Enumerations | |
enum | hw_timer_clkdiv_t { TIMER_CLKDIV_1 = 0, TIMER_CLKDIV_16 = 4, TIMER_CLKDIV_256 = 8, TIMER_CLKDIV_1 = 0, TIMER_CLKDIV_16 = 4, TIMER_CLKDIV_256 = 8 } |
enum | hw_timer_intr_type_t { TIMER_EDGE_INT = 0, TIMER_LEVEL_INT = 1, TIMER_EDGE_INT = 0, TIMER_LEVEL_INT = 1 } |
enum | hw_timer_source_type_t { TIMER_FRC1_SOURCE = 0, TIMER_NMI_SOURCE = 1, TIMER_FRC1_SOURCE = 0, TIMER_NMI_SOURCE = 1 } |
enum | hw_timer_clkdiv_t { TIMER_CLKDIV_1 = 0, TIMER_CLKDIV_16 = 4, TIMER_CLKDIV_256 = 8, TIMER_CLKDIV_1 = 0, TIMER_CLKDIV_16 = 4, TIMER_CLKDIV_256 = 8 } |
enum | hw_timer_intr_type_t { TIMER_EDGE_INT = 0, TIMER_LEVEL_INT = 1, TIMER_EDGE_INT = 0, TIMER_LEVEL_INT = 1 } |
enum | hw_timer_source_type_t { TIMER_FRC1_SOURCE = 0, TIMER_NMI_SOURCE = 1, TIMER_FRC1_SOURCE = 0, TIMER_NMI_SOURCE = 1 } |
Functions | |
void | hw_timer1_attach_interrupt (hw_timer_source_type_t source_type, hw_timer_callback_t callback, void *arg) |
Attach an interrupt for the timer. More... | |
void | hw_timer1_enable (hw_timer_clkdiv_t div, hw_timer_intr_type_t intr_type, bool auto_load) |
Enable the timer. More... | |
void | hw_timer1_write (uint32_t ticks) |
Set the timer interval. More... | |
void | hw_timer1_disable (void) |
Disable the timer. More... | |
void | hw_timer1_detach_interrupt (void) |
Detach interrupt from the timer. More... | |
uint32_t | hw_timer1_read (void) |
Get timer1 count. More... | |
uint32_t | hw_timer2_read (void) |
Read current timer2 value. More... | |
void | hw_timer2_set_alarm (uint32_t ticks) |
Set timer2 alarm count value. More... | |
void | hw_timer_init (void) |
Initialise hardware timers. More... | |
Variables | |
constexpr uint32_t | HW_TIMER2_CLKDIV = TIMER_CLKDIV_256 |
constexpr uint32_t | HW_TIMER2_CLK = HW_TIMER_BASE_CLK >> HW_TIMER2_CLKDIV |
constexpr uint32_t | HW_TIMER2_CLKDIV = TIMER_CLKDIV_256 |
constexpr uint32_t | HW_TIMER2_CLK = HW_TIMER_BASE_CLK >> HW_TIMER2_CLKDIV |
Detailed Description
Macro Definition Documentation
◆ MAX_HW_TIMER1_INTERVAL [1/2]
#define MAX_HW_TIMER1_INTERVAL 0x7fffff |
Maximum timer interval in ticks.
- Note
- The corresponding time interval depends on the prescaler in use:
/1 - 0.1048s /16 - 1.677s /256 - 26.84s
◆ MAX_HW_TIMER1_INTERVAL [2/2]
#define MAX_HW_TIMER1_INTERVAL 0x7fffff |
Maximum timer interval in ticks.
- Note
- The corresponding time interval depends on the prescaler in use:
/1 - 0.1048s /16 - 1.677s /256 - 26.84s
◆ MIN_HW_TIMER1_INTERVAL_US [1/2]
#define MIN_HW_TIMER1_INTERVAL_US 50U |
Minimum hardware interval in microseconds.
- Note
- Attempting to use repetitive interrupts below this level can lead to system instabliity and lockups, due to the software overhead in servicing the interrupts.
◆ MIN_HW_TIMER1_INTERVAL_US [2/2]
#define MIN_HW_TIMER1_INTERVAL_US 50U |
Minimum hardware interval in microseconds.
- Note
- Attempting to use repetitive interrupts below this level can lead to system instabliity and lockups, due to the software overhead in servicing the interrupts.
Typedef Documentation
◆ hw_timer_callback_t [1/2]
typedef void(* hw_timer_callback_t) (void *arg) |
◆ hw_timer_callback_t [2/2]
typedef void(* hw_timer_callback_t) (void *arg) |
Enumeration Type Documentation
◆ hw_timer_clkdiv_t [1/2]
enum hw_timer_clkdiv_t |
◆ hw_timer_clkdiv_t [2/2]
enum hw_timer_clkdiv_t |
◆ hw_timer_intr_type_t [1/2]
enum hw_timer_intr_type_t |
◆ hw_timer_intr_type_t [2/2]
enum hw_timer_intr_type_t |
◆ hw_timer_source_type_t [1/2]
◆ hw_timer_source_type_t [2/2]
Function Documentation
◆ hw_timer1_attach_interrupt()
void hw_timer1_attach_interrupt | ( | hw_timer_source_type_t | source_type, |
hw_timer_callback_t | callback, | ||
void * | arg | ||
) |
Attach an interrupt for the timer.
- Parameters
-
source_type callback Callback function invoked via timer interrupt arg Passed to callback function
◆ hw_timer1_detach_interrupt()
void hw_timer1_detach_interrupt | ( | void | ) |
Detach interrupt from the timer.
◆ hw_timer1_disable()
void hw_timer1_disable | ( | void | ) |
Disable the timer.
◆ hw_timer1_enable()
|
inline |
Enable the timer.
- Parameters
-
div intr_type auto_load
◆ hw_timer1_read()
uint32_t hw_timer1_read | ( | void | ) |
Get timer1 count.
- Return values
-
uint32_t Current count value, counts from initial value down to 0
◆ hw_timer1_write()
void hw_timer1_write | ( | uint32_t | ticks | ) |
Set the timer interval.
- Parameters
-
ticks
◆ hw_timer2_read()
uint32_t hw_timer2_read | ( | void | ) |
Read current timer2 value.
- Return values
-
uint32_t
◆ hw_timer2_set_alarm()
void hw_timer2_set_alarm | ( | uint32_t | ticks | ) |
Set timer2 alarm count value.
- Parameters
-
ticks
- Note
- For internal use ONLY; used by software timers
◆ hw_timer_init()
void hw_timer_init | ( | void | ) |
Initialise hardware timers.
- Note
- Called by startup code
Variable Documentation
◆ HW_TIMER2_CLK [1/2]
constexpr uint32_t HW_TIMER2_CLK = HW_TIMER_BASE_CLK >> HW_TIMER2_CLKDIV |
◆ HW_TIMER2_CLK [2/2]
constexpr uint32_t HW_TIMER2_CLK = HW_TIMER_BASE_CLK >> HW_TIMER2_CLKDIV |
◆ HW_TIMER2_CLKDIV [1/2]
constexpr uint32_t HW_TIMER2_CLKDIV = TIMER_CLKDIV_256 |
◆ HW_TIMER2_CLKDIV [2/2]
constexpr uint32_t HW_TIMER2_CLKDIV = TIMER_CLKDIV_256 |