diff options
Diffstat (limited to 'src/examples/_6_full_syntax.rs')
-rw-r--r-- | src/examples/_6_full_syntax.rs | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/src/examples/_6_full_syntax.rs b/src/examples/_6_full_syntax.rs new file mode 100644 index 00000000..9e932436 --- /dev/null +++ b/src/examples/_6_full_syntax.rs @@ -0,0 +1,85 @@ +//! A showcase of the `app!` macro syntax +//! +//! ``` +//! +//! #![deny(unsafe_code)] +//! #![feature(const_fn)] +//! #![feature(proc_macro)] +//! #![no_std] +//! +//! #[macro_use(task)] +//! extern crate cortex_m_rtfm as rtfm; +//! extern crate stm32f103xx; +//! +//! use rtfm::{app, Resource, Threshold}; +//! +//! app! { +//! device: stm32f103xx, +//! +//! resources: { +//! static CO_OWNED: u32 = 0; +//! static OWNED: bool = false; +//! static SHARED: bool = false; +//! }, +//! +//! init: { +//! path: init_, // this is a path to the "init" function +//! }, +//! +//! idle: { +//! locals: { +//! static COUNTER: u32 = 0; +//! }, +//! path: idle_, // this is a path to the "idle" function +//! resources: [OWNED, SHARED], +//! }, +//! +//! tasks: { +//! SYS_TICK: { +//! priority: 1, +//! resources: [CO_OWNED, SHARED], +//! }, +//! +//! TIM2: { +//! enabled: true, +//! priority: 1, +//! resources: [CO_OWNED], +//! }, +//! }, +//! } +//! +//! fn init_(_p: init::Peripherals, _r: init::Resources) {} +//! +//! fn idle_(t: &mut Threshold, l: &mut idle::Locals, mut r: idle::Resources) -> ! { +//! loop { +//! *l.COUNTER += 1; +//! +//! **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); +//! } +//! } +//! } +//! +//! task!(SYS_TICK, sys_tick, Local { +//! static STATE: bool = true; +//! }); +//! +//! fn sys_tick(_t: &mut Threshold, l: &mut Local, r: SYS_TICK::Resources) { +//! *l.STATE = !*l.STATE; +//! +//! **r.CO_OWNED += 1; +//! } +//! +//! task!(TIM2, tim2); +//! +//! fn tim2(_t: &mut Threshold, r: TIM2::Resources) { +//! **r.CO_OWNED += 1; +//! } +//! ``` +// Auto-generated. Do not modify. |