diff options
author | 2021-03-11 12:42:08 +0100 | |
---|---|---|
committer | 2021-03-11 12:42:08 +0100 | |
commit | f29b08190d426baee864c2caf2adf8da002b5179 (patch) | |
tree | b7a6d46c51cd7de4efeaef5ba55333c80e911b5d /examples/spawn_at.rs | |
parent | 3ace49f3eba02bac08699f07a207af4dccc14389 (diff) | |
download | rtic-f29b08190d426baee864c2caf2adf8da002b5179.tar.gz rtic-f29b08190d426baee864c2caf2adf8da002b5179.tar.zst rtic-f29b08190d426baee864c2caf2adf8da002b5179.zip |
added spawn_at
Diffstat (limited to '')
-rw-r--r-- | examples/spawn_at.rs | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/examples/spawn_at.rs b/examples/spawn_at.rs new file mode 100644 index 00000000..233c53fa --- /dev/null +++ b/examples/spawn_at.rs @@ -0,0 +1,53 @@ +//! examples/schedule.rs + +#![deny(unsafe_code)] +#![deny(warnings)] +#![no_main] +#![no_std] + +use panic_semihosting as _; + +// NOTE: does NOT work on QEMU! +#[rtic::app(device = lm3s6965, dispatchers = [SSI0])] +mod app { + use cortex_m_semihosting::hprintln; + use dwt_systick_monotonic::{ + consts::{U0, U8}, + DwtSystick, + }; + use rtic::time::duration::Seconds; + + #[monotonic(binds = SysTick, default = true)] + type MyMono = DwtSystick<U8, U0, U0>; // 8 MHz + + #[init()] + fn init(cx: init::Context) -> (init::LateResources, init::Monotonics) { + let mut dcb = cx.core.DCB; + let dwt = cx.core.DWT; + let systick = cx.core.SYST; + + let mono = DwtSystick::new(&mut dcb, dwt, systick, 8_000_000); + + hprintln!("init").unwrap(); + + // Schedule `foo` to run 1 second in the future + foo::spawn_after(Seconds(1_u32)).unwrap(); + + // Schedule `bar` to run 2 seconds in the future + bar::spawn_after(Seconds(2_u32)).unwrap(); + + (init::LateResources {}, init::Monotonics(mono)) + } + + #[task] + fn foo(_: foo::Context) { + let now = MyMono::now(); + bar::spawn_at(now + Seconds(1_u32)).unwrap(); + hprintln!("foo").unwrap(); + } + + #[task] + fn bar(_: bar::Context) { + hprintln!("bar").unwrap(); + } +} |