Expand description
Monotonic based on Cortex-M SysTick.
Note: this implementation is inefficient as it ticks and generates interrupts at a constant rate.
§Example
use rtic_monotonics::systick::prelude::*;
// Create the type `Mono`. It will manage the SysTick timer, and use it to
// generate 1000 interrupts per second.
systick_monotonic!(Mono, 1_000);
fn init() {
let core_peripherals = cortex_m::Peripherals::take().unwrap();
// Start the monotonic using the cortex-m crate's Systick driver.
// We tell it we have a system clock of 12 MHz.
Mono::start(core_peripherals.SYST, 12_000_000);
}
async fn usage() {
loop {
// You can use the monotonic to get the time...
let timestamp = Mono::now();
// ...and you can use it to add a delay to this async function
Mono::delay(100.millis()).await;
}
}By default, SysTick uses SystClkSource::Core as the clock source.
To set the SysTick clock source, use start_with_clock_source:
use rtic_monotonics::systick::SystClkSource;
fn init() {
let core_peripherals = cortex_m::Peripherals::take().unwrap();
// Start the monotonic using the cortex-m crate's Systick driver.
// We tell it we have a 12MHz external clock source.
Mono::start_with_clock_source(
core_peripherals.SYST,
12_000_000,
SystClkSource::External,
);
}Modules§
- prelude
- Common definitions and traits for using the systick monotonic
Structs§
- SYST
- SysTick: System Timer
- Systick
Backend - Systick based
TimerQueueBackend.
Enums§
- Syst
ClkSource - SysTick clock source