aboutsummaryrefslogtreecommitdiff
path: root/examples/cfg.rs
diff options
context:
space:
mode:
Diffstat (limited to 'examples/cfg.rs')
-rw-r--r--examples/cfg.rs58
1 files changed, 38 insertions, 20 deletions
diff --git a/examples/cfg.rs b/examples/cfg.rs
index 3f4ca904..d49f54c7 100644
--- a/examples/cfg.rs
+++ b/examples/cfg.rs
@@ -5,40 +5,55 @@
#![no_main]
#![no_std]
-extern crate panic_semihosting;
-
+use cortex_m_semihosting::debug;
#[cfg(debug_assertions)]
use cortex_m_semihosting::hprintln;
-use rtfm::app;
+use panic_semihosting as _;
+
+#[rtic::app(device = lm3s6965)]
+mod app {
+ #[resources]
+ struct Resources {
+ #[cfg(debug_assertions)] // <- `true` when using the `dev` profile
+ #[init(0)]
+ count: u32,
+ }
-#[app(device = lm3s6965)]
-const APP: () = {
- #[cfg(debug_assertions)] // <- `true` when using the `dev` profile
- static mut COUNT: u32 = 0;
+ #[init(spawn = [foo])]
+ fn init(cx: init::Context) -> init::LateResources {
+ cx.spawn.foo().unwrap();
+ cx.spawn.foo().unwrap();
- #[init]
- fn init() {
- // ..
+ init::LateResources {}
+ }
+
+ #[idle]
+ fn idle(_: idle::Context) -> ! {
+ debug::exit(debug::EXIT_SUCCESS);
+
+ loop {
+ cortex_m::asm::nop();
+ }
}
- #[task(priority = 3, resources = [COUNT], spawn = [log])]
- fn foo() {
+ #[task(capacity = 2, resources = [count], spawn = [log])]
+ fn foo(_cx: foo::Context) {
#[cfg(debug_assertions)]
{
- *resources.COUNT += 1;
+ *_cx.resources.count += 1;
- spawn.log(*resources.COUNT).ok();
+ _cx.spawn.log(*_cx.resources.count).unwrap();
}
// this wouldn't compile in `release` mode
- // *resources.COUNT += 1;
+ // *_cx.resources.count += 1;
// ..
}
#[cfg(debug_assertions)]
- #[task]
- fn log(n: u32) {
+ #[task(capacity = 2)]
+ fn log(_: log::Context, n: u32) {
hprintln!(
"foo has been called {} time{}",
n,
@@ -47,8 +62,11 @@ const APP: () = {
.ok();
}
+ // RTIC requires that unused interrupts are declared in an extern block when
+ // using software tasks; these free interrupts will be used to dispatch the
+ // software tasks.
extern "C" {
- fn UART0();
- fn UART1();
+ fn SSI0();
+ fn QEI0();
}
-};
+}