Module systick

Module systick 

Source
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
SystickBackend
Systick based TimerQueueBackend.

Enums§

SystClkSource
SysTick clock source