Crates.io | ruspiro-timer |
lib.rs | ruspiro-timer |
version | 0.6.0 |
source | src |
created_at | 2019-08-01 16:39:06.704656 |
updated_at | 2021-11-26 21:43:04.273935 |
description | This crates provides simple timing functions to pause the current processing for a specific amount of time. The core pausing is called on will block. |
homepage | |
repository | https://github.com/RusPiRo/ruspiro-timer/tree/v0.6.0 |
max_upload_size | |
id | 153487 |
size | 45,238 |
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.
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
To use the crate just add the following dependency to your Cargo.toml
file:
[dependencies]
ruspiro-timer = "0.6.0"
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"));
}
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.