ruspiro-timer

RusPiRo timer crate

APACHE-2.0 License

Downloads
9.3K
Stars
3
Committers
2

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.

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.