Skip to content

RusPiRo/ruspiro-timer

Repository files navigation

Timer RusPiRo crate

This crate provides simple functions to pause execution on the current core for a given amount of time. It uses the free-running counter of the Raspberry Pi to provide micro second accurate pause timings.

CI Latest Version Documentation License

Features

Feature Description
pi3 active to use the proper timer MMIO base memory address for Raspberry Pi 3 when accessing the system timer peripheral
pi4_low active to use the proper timer MMIO base memory address for Raspberry Pi 4 in Low-Peripheral mode when accessing the system timer peripheral
pi4_high active to use the proper timer MMIO base memory address for Raspberry Pi 4 in High-Peripheral mode when accessing the system timer peripheral

Usage

To use the crate just add the following dependency to your Cargo.toml file:

[dependencies]
ruspiro-timer = "||VERSION||"

Once done the access to the timer functions is available in your rust files like so:

use rusprio_timer::*;

fn foo() {
    sleep(Duration::from_millis(1)); // pause for 1 millisecond
    sleepcycles(200); // pause for 200 CPU cycles
}

Scheduling the execution of a function/closure is as simple as this:

use ruspiro_timer::*;

fn foo() {
    // print after 100 milliseconds
    schedule(Duration:from_millis(100), || println!("delayed execution"));
}

License

Licensed under Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0) or MIT (LICENSE-MIT or http://opensource.org/licenses/MIT)) at your choice.