Timer SDK
This SDK provides utilities for execution time measurements using HW timers. It includes functions to start, stop, reset, and configure timers, as well as to enable timer interrupts and measure elapsed time.
Usage
The SDK provides a set of functions to interact with the HW Timer for various timing operations.
Initialize Timer for Counting Cycles
This function configures the counter at the running clock frequency to count the number of clock cycles. Call this function before any of the other timer SDK functions.
void timer_cycles_init();
Start Timer
Start the HW timer.
void timer_start();
Get Current Timer Value
Retrieve the current value of the HW timer without stopping it.
uint32_t timer_get_cycles();
Complete timer reset
Completely resets the HW counter, disabling all IRQs, counters, and comparators.
void timer_reset();
Stop and Reset Timer
Retrieve the current value of the HW timer and stop it.
uint32_t timer_stop();
Set Timer Threshold
Set the timer to go off once the counter value reaches the specified threshold. If the timer interrupts and the timer IRQ have been enabled, when the timer reaches that value an interrupt will be called.
void timer_arm_set(uint32_t threshold);
Set Timer Threshold and Start
Set the timer to go off once the counter value reaches the specified threshold, and start the timer. If the timer interrupts and the timer IRQ have been enabled, when the timer reaches that value an interrupt will be called.
void timer_arm_start(uint32_t threshold);
Enable Timer IRQ
Enable the timer interrupt request.
void timer_irq_enable();
Clear Timer IRQ
Clear the timer interrupt request.
void timer_irq_clear();
Enable Timer Machine-level Interrupts
Enable the timer machine-level interrupts for the X-Heep platform.
void enable_timer_interrupt();
Wait for Microseconds
Block execution for a specified number of microseconds. This function is not precise for small numbers of microseconds. Enable timer interrupts with enable_timer_interrupt() before using this function.
void timer_wait_us(uint32_t ms);
Get Execution Time in Microseconds
Get the time taken to execute a certain number of cycles, returned as a float representing the time in microseconds.
float get_time_from_cycles(uint32_t cycles);
Example Usage
An example of utilization of the timer SDK can be found in sw/applications/example_timer_sdk/main.c.