Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Low level interface to the microsecond ticker of a target. More...
Modules | |
Microsecond Ticker tests | |
Tests to validate the proper implementation of the microsecond ticker. | |
Ticker Hal | |
Low level interface to the ticker of a target. | |
Ticker Tests | |
Tests to validate the proper implementation of a ticker. | |
Functions | |
ticker_irq_handler_type | set_us_ticker_irq_handler (ticker_irq_handler_type ticker_irq_handler) |
Set ticker IRQ handler. | |
const ticker_data_t * | get_us_ticker_data (void) |
Get ticker's data. | |
void | us_ticker_irq_handler (void) |
The wrapper for ticker_irq_handler, to pass us ticker's data. | |
void | us_ticker_init (void) |
Initialize the ticker. | |
void | us_ticker_free (void) |
Deinitialize the us ticker. | |
uint32_t | us_ticker_read (void) |
Read the current counter. | |
void | us_ticker_set_interrupt (timestamp_t timestamp) |
Set interrupt for specified timestamp. | |
void | us_ticker_disable_interrupt (void) |
Disable us ticker interrupt. | |
void | us_ticker_clear_interrupt (void) |
Clear us ticker interrupt. | |
void | us_ticker_fire_interrupt (void) |
Set pending interrupt that should be fired right away. | |
const ticker_info_t * | us_ticker_get_info (void) |
Get frequency and counter bits of this ticker. |
Detailed Description
Low level interface to the microsecond ticker of a target.
# Defined behavior * Has a reported frequency between 250KHz and 8MHz - Verified by test us_ticker_info_test * Has a counter that is at least 16 bits wide - Verified by test us_ticker_info_test * All behavior defined by the ticker specification
# Undefined behavior * See the ticker specification
- See also:
- Microsecond Ticker tests
Function Documentation
const ticker_data_t* get_us_ticker_data | ( | void | ) |
Get ticker's data.
- Returns:
- The microsecond ticker data
Definition at line 22 of file us_ticker_stub.cpp.
ticker_irq_handler_type set_us_ticker_irq_handler | ( | ticker_irq_handler_type | ticker_irq_handler ) |
Set ticker IRQ handler.
- Parameters:
-
ticker_irq_handler IRQ handler to be connected
- Returns:
- previous ticker IRQ handler
- Note:
- by default IRQ handler is set to ticker_irq_handler
- this function is primarily for testing purposes and it's not required part of HAL implementation
Definition at line 42 of file mbed_us_ticker_api.c.
void us_ticker_clear_interrupt | ( | void | ) |
Clear us ticker interrupt.
Pseudo Code:
void us_ticker_clear_interrupt(void) { // Write to the ICR (interrupt clear register) of the TIMER TIMER_ICR = TIMER_ICR_COMPARE_Msk; }
Definition at line 48 of file us_ticker_stub.cpp.
void us_ticker_disable_interrupt | ( | void | ) |
Disable us ticker interrupt.
Pseudo Code:
void us_ticker_disable_interrupt(void) { // Disable the compare interrupt TIMER_CTRL &= ~TIMER_CTRL_COMPARE_ENABLE_Msk; }
Definition at line 44 of file us_ticker_stub.cpp.
void us_ticker_fire_interrupt | ( | void | ) |
Set pending interrupt that should be fired right away.
The ticker should be initialized prior calling this function.
Pseudo Code:
void us_ticker_fire_interrupt(void) { NVIC_SetPendingIRQ(TIMER_IRQn); }
Definition at line 52 of file us_ticker_stub.cpp.
void us_ticker_free | ( | void | ) |
Deinitialize the us ticker.
Powerdown the us ticker in preparation for sleep, powerdown, or reset.
After this function is called, no other ticker functions should be called except us_ticker_init(), calling any function other than init is undefined.
- Note:
- This function stops the ticker from counting.
const ticker_info_t* us_ticker_get_info | ( | void | ) |
Get frequency and counter bits of this ticker.
Pseudo Code:
const ticker_info_t* us_ticker_get_info() { static const ticker_info_t info = { 1000000, // 1 MHz 32 // 32 bit counter }; return &info; }
void us_ticker_init | ( | void | ) |
Initialize the ticker.
Initialize or re-initialize the ticker. This resets all the clocking and prescaler registers, along with disabling the compare interrupt.
- Note:
- Initialization properties tested by ticker_init_test
Pseudo Code:
void us_ticker_init() { // Enable clock gate so processor can read TIMER registers POWER_CTRL |= POWER_CTRL_TIMER_Msk; // Disable the timer and ensure it is powered down TIMER_CTRL &= ~(TIMER_CTRL_ENABLE_Msk | TIMER_CTRL_COMPARE_ENABLE_Msk); // Configure divisors uint32_t prescale = SystemCoreClock / 1000000; TIMER_PRESCALE = prescale - 1; TIMER_CTRL |= TIMER_CTRL_ENABLE_Msk; // Install the interrupt handler NVIC_SetVector(TIMER_IRQn, (uint32_t)us_ticker_irq_handler); NVIC_EnableIRQ(TIMER_IRQn); }
Definition at line 31 of file us_ticker_stub.cpp.
void us_ticker_irq_handler | ( | void | ) |
The wrapper for ticker_irq_handler, to pass us ticker's data.
Definition at line 27 of file us_ticker_stub.cpp.
uint32_t us_ticker_read | ( | void | ) |
Read the current counter.
Read the current counter value without performing frequency conversions. If no rollover has occurred, the seconds passed since us_ticker_init() was called can be found by dividing the ticks returned by this function by the frequency returned by us_ticker_get_info.
- Returns:
- The current timer's counter value in ticks
Pseudo Code:
uint32_t us_ticker_read() { return TIMER_COUNT; }
Definition at line 35 of file us_ticker_stub.cpp.
void us_ticker_set_interrupt | ( | timestamp_t | timestamp ) |
Set interrupt for specified timestamp.
- Parameters:
-
timestamp The time in ticks to be set
- Note:
- no special handling needs to be done for times in the past as the common timer code will detect this and call us_ticker_fire_interrupt() if this is the case
- calling this function with timestamp of more than the supported number of bits returned by us_ticker_get_info results in undefined behavior.
Pseudo Code:
void us_ticker_set_interrupt(timestamp_t timestamp) { TIMER_COMPARE = timestamp; TIMER_CTRL |= TIMER_CTRL_COMPARE_ENABLE_Msk; }
Definition at line 40 of file us_ticker_stub.cpp.
Generated on Tue Jul 12 2022 12:46:46 by
