aboutsummaryrefslogtreecommitdiff
path: root/examples/spawn_at.rs
diff options
context:
space:
mode:
authorGravatar Per Lindgren <per.lindgren@ltu.se> 2021-03-11 12:42:08 +0100
committerGravatar Per Lindgren <per.lindgren@ltu.se> 2021-03-11 12:42:08 +0100
commitf29b08190d426baee864c2caf2adf8da002b5179 (patch)
treeb7a6d46c51cd7de4efeaef5ba55333c80e911b5d /examples/spawn_at.rs
parent3ace49f3eba02bac08699f07a207af4dccc14389 (diff)
downloadrtic-f29b08190d426baee864c2caf2adf8da002b5179.tar.gz
rtic-f29b08190d426baee864c2caf2adf8da002b5179.tar.zst
rtic-f29b08190d426baee864c2caf2adf8da002b5179.zip
added spawn_at
Diffstat (limited to '')
-rw-r--r--examples/spawn_at.rs53
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();
+ }
+}