aboutsummaryrefslogtreecommitdiff
path: root/examples/cfg.rs
diff options
context:
space:
mode:
Diffstat (limited to 'examples/cfg.rs')
-rw-r--r--examples/cfg.rs37
1 files changed, 24 insertions, 13 deletions
diff --git a/examples/cfg.rs b/examples/cfg.rs
index 03f9dbdc..2a43b5c9 100644
--- a/examples/cfg.rs
+++ b/examples/cfg.rs
@@ -5,38 +5,49 @@
#![no_main]
#![no_std]
-extern crate panic_semihosting;
-
+use cortex_m_semihosting::debug;
#[cfg(debug_assertions)]
use cortex_m_semihosting::hprintln;
+use panic_semihosting as _;
#[rtfm::app(device = lm3s6965)]
const APP: () = {
- #[cfg(debug_assertions)] // <- `true` when using the `dev` profile
- static mut COUNT: u32 = 0;
+ struct Resources {
+ #[cfg(debug_assertions)] // <- `true` when using the `dev` profile
+ #[init(0)]
+ count: u32,
+ }
- #[init]
- fn init(_: init::Context) {
- // ..
+ #[init(spawn = [foo])]
+ fn init(cx: init::Context) {
+ cx.spawn.foo().unwrap();
+ cx.spawn.foo().unwrap();
+ }
+
+ #[idle]
+ fn idle(_: idle::Context) -> ! {
+ debug::exit(debug::EXIT_SUCCESS);
+
+ loop {}
}
- #[task(priority = 3, resources = [COUNT], spawn = [log])]
- fn foo(c: foo::Context) {
+ #[task(capacity = 2, resources = [count], spawn = [log])]
+ fn foo(_cx: foo::Context) {
#[cfg(debug_assertions)]
{
- *c.resources.COUNT += 1;
+ *_cx.resources.count += 1;
- c.spawn.log(*c.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]
+ #[task(capacity = 2)]
fn log(_: log::Context, n: u32) {
hprintln!(
"foo has been called {} time{}",