mirror of
https://github.com/rtic-rs/rtic.git
synced 2024-11-24 12:42:52 +01:00
53 lines
1.5 KiB
Rust
53 lines
1.5 KiB
Rust
//! 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.
|