![]() |
Mbed OS Reference
|
Low level interface to the low power ticker of a target. More...
Modules | |
Low Power Ticker tests | |
Tests to validate the proper implementation of the low power 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_lp_ticker_irq_handler (ticker_irq_handler_type ticker_irq_handler) |
Set low power ticker IRQ handler. | |
const ticker_data_t * | get_lp_ticker_data (void) |
Get low power ticker's data. | |
void | lp_ticker_irq_handler (void) |
The wrapper for ticker_irq_handler, to pass lp ticker's data. | |
void | lp_ticker_init (void) |
Initialize the low power ticker. | |
void | lp_ticker_free (void) |
Deinitialize the lower power ticker. | |
uint32_t | lp_ticker_read (void) |
Read the current tick. | |
void | lp_ticker_set_interrupt (timestamp_t timestamp) |
Set interrupt for specified timestamp. | |
void | lp_ticker_disable_interrupt (void) |
Disable low power ticker interrupt. | |
void | lp_ticker_clear_interrupt (void) |
Clear the low power ticker interrupt. | |
void | lp_ticker_fire_interrupt (void) |
Set pending interrupt that should be fired right away. | |
const ticker_info_t * | lp_ticker_get_info (void) |
Get frequency and counter bits of this ticker. | |
Low level interface to the low power ticker of a target.
To permit compile-time optimization, the following macros can be defined by a target's device.h:
LP_TICKER_PERIOD_NUM, LP_TICKER_PERIOD_DEN: These denote the ratio (numerator, denominator) of the ticker period to a microsecond. For example, a 64kHz ticker would have NUM = 125, DEN = 8; a 4kHz ticker would have NUM = 250, DEN = 1; a 32.768kHz ticker would have NUM = 15625, DEN = 512. Both numerator and denominator must be 32 bits or less. They do not need to be fully simplified, so 32.768kHz could also be NUM = 1000000, DEN = 32768, but more simplification may be a minor speed optimisation, as can matching numerator or denominator with US_TICKER.
LP_TICKER_MASK: The value mask for the ticker - eg 0x07FFFFFF for a 27-bit ticker.
If any are defined, all 3 must be defined, and the macros are checked for consistency with lp_ticker_get_info by test lp_ticker_info_test.
ticker_irq_handler_type set_lp_ticker_irq_handler | ( | ticker_irq_handler_type | ticker_irq_handler | ) |
Set low power ticker IRQ handler.
ticker_irq_handler | IRQ handler to be connected |
const ticker_data_t * get_lp_ticker_data | ( | void | ) |
Get low power ticker's data.
void lp_ticker_irq_handler | ( | void | ) |
The wrapper for ticker_irq_handler, to pass lp ticker's data.
void lp_ticker_init | ( | void | ) |
Initialize the low power ticker.
Initialize or re-initialize the ticker. This resets all the clocking and prescaler registers, along with disabling the compare interrupt.
Pseudo Code:
void lp_ticker_free | ( | void | ) |
Deinitialize the lower power ticker.
Powerdown the lp ticker in preparation for sleep, powerdown, or reset.
After calling this function no other ticker functions should be called except lp_ticker_init(). Calling any function other than init after freeing is undefined.
uint32_t lp_ticker_read | ( | void | ) |
Read the current tick.
If no rollover has occurred, the seconds passed since lp_ticker_init() was called can be found by dividing the ticks returned by this function by the frequency returned by lp_ticker_get_info.
Pseudo Code:
void lp_ticker_set_interrupt | ( | timestamp_t | timestamp | ) |
Set interrupt for specified timestamp.
timestamp | The time in ticks to be set. Guaranteed to be between 0 and 2^bits-1, where bits is the number of bits returned by lp_ticker_get_info |
timestamp
is less than the current time read by the ticker, then the intention is to set an interrupt for once the ticker rolls over and reaches this time.Calling this function with timestamp of more than the supported number of bits returned by lp_ticker_get_info results in undefined behavior.
If the timer interrupt is pending when this function is called (e.g. due to the ticker being set, but the interrupt being disabled before it could fire), this function shall clear the pending interrupt before reenabling and setting it to prevent a spurious execution of the interrupt.
Pseudo Code:
void lp_ticker_disable_interrupt | ( | void | ) |
Disable low power ticker interrupt.
Pseudo Code:
void lp_ticker_clear_interrupt | ( | void | ) |
Clear the low power ticker interrupt.
This is called from Mbed's interrupt handler and should clear the interrupt flag in the peripheral to stop the interrupt from being executed again after it returns. This does not do anything if called before the interrupt fires (e.g. it doesn't cancel the interrupt if it's set in the future).
Pseudo Code:
void lp_ticker_fire_interrupt | ( | void | ) |
Set pending interrupt that should be fired right away.
Pseudo Code:
const ticker_info_t * lp_ticker_get_info | ( | void | ) |
Get frequency and counter bits of this ticker.
Pseudo Code: