diff options
author | 2017-11-22 09:27:14 +0100 | |
---|---|---|
committer | 2017-11-22 09:29:01 +0100 | |
commit | 948e1fd0fbd96f574c31909843b2ed3debabf6fc (patch) | |
tree | be8bb18bee86e726a52e19a4083fa0ae9386cdfb /src/examples/_7_full_syntax.rs | |
parent | c184f91e3c3993dacbd8425019cde6a3607478bc (diff) | |
download | rtic-948e1fd0fbd96f574c31909843b2ed3debabf6fc.tar.gz rtic-948e1fd0fbd96f574c31909843b2ed3debabf6fc.tar.zst rtic-948e1fd0fbd96f574c31909843b2ed3debabf6fc.zip |
v0.2.2v0.2.2
Diffstat (limited to 'src/examples/_7_full_syntax.rs')
-rw-r--r-- | src/examples/_7_full_syntax.rs | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/src/examples/_7_full_syntax.rs b/src/examples/_7_full_syntax.rs new file mode 100644 index 00000000..80520657 --- /dev/null +++ b/src/examples/_7_full_syntax.rs @@ -0,0 +1,87 @@ +//! A showcase of the `app!` macro syntax +//! +//! ``` +//! #![deny(unsafe_code)] +//! #![feature(proc_macro)] +//! #![no_std] +//! +//! extern crate cortex_m_rtfm as rtfm; +//! extern crate stm32f103xx; +//! +//! use rtfm::{app, Threshold}; +//! +//! app! { +//! device: stm32f103xx, +//! +//! resources: { +//! static CO_OWNED: u32 = 0; +//! static ON: bool = false; +//! static OWNED: bool = false; +//! static SHARED: bool = false; +//! }, +//! +//! init: { +//! // This is the path to the `init` function +//! // +//! // `init` doesn't necessarily has to be in the root of the crate +//! path: main::init, +//! }, +//! +//! idle: { +//! // This is a path to the `idle` function +//! // +//! // `idle` doesn't necessarily has to be in the root of the crate +//! path: main::idle, +//! resources: [OWNED, SHARED], +//! }, +//! +//! tasks: { +//! SYS_TICK: { +//! path: sys_tick, +//! // If omitted priority is assumed to be 1 +//! // priority: 1, +//! resources: [CO_OWNED, ON, SHARED], +//! }, +//! +//! TIM2: { +//! // Tasks are enabled, between `init` and `idle`, by default but they +//! // can start disabled if `false` is specified here +//! enabled: false, +//! path: tim2, +//! priority: 1, +//! resources: [CO_OWNED], +//! }, +//! }, +//! } +//! +//! mod main { +//! use rtfm::{self, Resource, Threshold}; +//! +//! pub fn init(_p: ::init::Peripherals, _r: ::init::Resources) {} +//! +//! pub fn idle(t: &mut Threshold, mut r: ::idle::Resources) -> ! { +//! loop { +//! *r.OWNED != *r.OWNED; +//! +//! if *r.OWNED { +//! if r.SHARED.claim(t, |shared, _| **shared) { +//! rtfm::wfi(); +//! } +//! } else { +//! r.SHARED.claim_mut(t, |shared, _| **shared = !**shared); +//! } +//! } +//! } +//! } +//! +//! fn sys_tick(_t: &mut Threshold, r: SYS_TICK::Resources) { +//! **r.ON = !**r.ON; +//! +//! **r.CO_OWNED += 1; +//! } +//! +//! fn tim2(_t: &mut Threshold, r: TIM2::Resources) { +//! **r.CO_OWNED += 1; +//! } +//! ``` +// Auto-generated. Do not modify. |