summaryrefslogtreecommitdiff
path: root/src/examples/_8_full_syntax.rs
diff options
context:
space:
mode:
authorGravatar Jorge Aparicio <jorge@japaric.io> 2018-01-15 23:26:07 +0100
committerGravatar Jorge Aparicio <jorge@japaric.io> 2018-01-15 23:33:09 +0100
commitdef4fc8079dcb646ef3cab446a4b160e09e169bf (patch)
treec82e6f193e0bf9b842366e305056481d4d1666b2 /src/examples/_8_full_syntax.rs
parent34edc41e9289e83468f68663a7f4a7f0f6cc2797 (diff)
downloadrtic-def4fc8079dcb646ef3cab446a4b160e09e169bf.tar.gz
rtic-def4fc8079dcb646ef3cab446a4b160e09e169bf.tar.zst
rtic-def4fc8079dcb646ef3cab446a4b160e09e169bf.zip
v0.3.0
Diffstat (limited to 'src/examples/_8_full_syntax.rs')
-rw-r--r--src/examples/_8_full_syntax.rs88
1 files changed, 88 insertions, 0 deletions
diff --git a/src/examples/_8_full_syntax.rs b/src/examples/_8_full_syntax.rs
new file mode 100644
index 00000000..f8db4087
--- /dev/null
+++ b/src/examples/_8_full_syntax.rs
@@ -0,0 +1,88 @@
+//! A showcase of the `app!` macro syntax
+//!
+//! ```
+//! #![deny(unsafe_code)]
+//! #![deny(warnings)]
+//! #![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, mut r: SYS_TICK::Resources) {
+//! *r.ON = !*r.ON;
+//!
+//! *r.CO_OWNED += 1;
+//! }
+//!
+//! fn tim2(_t: &mut Threshold, mut r: TIM2::Resources) {
+//! *r.CO_OWNED += 1;
+//! }
+//! ```
+// Auto-generated. Do not modify.