aboutsummaryrefslogtreecommitdiff
path: root/src/examples/_0_zero_tasks.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/examples/_0_zero_tasks.rs')
-rw-r--r--src/examples/_0_zero_tasks.rs53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/examples/_0_zero_tasks.rs b/src/examples/_0_zero_tasks.rs
new file mode 100644
index 00000000..15231818
--- /dev/null
+++ b/src/examples/_0_zero_tasks.rs
@@ -0,0 +1,53 @@
+//! Minimal example with zero tasks
+//!
+//! ```
+//!
+//! #![deny(unsafe_code)]
+//! #![feature(proc_macro)] // IMPORTANT always include this feature gate
+//! #![no_std]
+//!
+//! extern crate cortex_m_rtfm as rtfm; // IMPORTANT always do this rename
+//! extern crate stm32f103xx; // the device crate
+//!
+//! // import the procedural macro
+//! use rtfm::app;
+//!
+//! // This macro call indicates that this is a RTFM application
+//! //
+//! // This macro will expand to a `main` function so you don't need to supply
+//! // `main` yourself.
+//! app! {
+//! // this is a path to the device crate
+//! device: stm32f103xx,
+//! }
+//!
+//! // The initialization phase.
+//! //
+//! // This runs first and within a *global* critical section. Nothing can preempt
+//! // this function.
+//! fn init(p: init::Peripherals) {
+//! // This function has access to all the peripherals of the device
+//! p.GPIOA;
+//! p.RCC;
+//! // ..
+//!
+//! // You'll hit this breakpoint first
+//! rtfm::bkpt();
+//! }
+//!
+//! // The idle loop.
+//! //
+//! // This runs afterwards and has a priority of 0. All tasks can preempt this
+//! // function. This function can never return so it must contain some sort of
+//! // endless loop.
+//! fn idle() -> ! {
+//! // And then this breakpoint
+//! rtfm::bkpt();
+//!
+//! loop {
+//! // This puts the processor to sleep until there's a task to service
+//! rtfm::wfi();
+//! }
+//! }
+//! ```
+// Auto-generated. Do not modify.