aboutsummaryrefslogtreecommitdiff
path: root/src/examples/_6_full_syntax.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/examples/_6_full_syntax.rs')
-rw-r--r--src/examples/_6_full_syntax.rs85
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.