aboutsummaryrefslogtreecommitdiff
path: root/src/examples/_1_one_task.rs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/examples/_1_one_task.rs43
1 files changed, 26 insertions, 17 deletions
diff --git a/src/examples/_1_one_task.rs b/src/examples/_1_one_task.rs
index 614db2aa..c9004e86 100644
--- a/src/examples/_1_one_task.rs
+++ b/src/examples/_1_one_task.rs
@@ -2,6 +2,7 @@
//!
//! ```
//! #![deny(unsafe_code)]
+//! #![deny(warnings)]
//! #![feature(proc_macro)]
//! #![no_std]
//!
@@ -9,8 +10,9 @@
//! extern crate cortex_m_rtfm as rtfm;
//! extern crate stm32f103xx;
//!
-//! use cortex_m::peripheral::SystClkSource;
+//! use cortex_m::peripheral::syst::SystClkSource;
//! use rtfm::{app, Threshold};
+//! use stm32f103xx::GPIOC;
//!
//! app! {
//! device: stm32f103xx,
@@ -37,31 +39,31 @@
//!
//! // These are the resources this task has access to.
//! //
-//! // A resource can be a peripheral like `GPIOC` or a static variable
-//! // like `ON`
-//! resources: [GPIOC, ON],
+//! // The resources listed here must also appear in `app.resources`
+//! resources: [ON],
//! },
//! }
//! }
//!
-//! fn init(p: init::Peripherals, r: init::Resources) {
+//! fn init(mut p: init::Peripherals, r: init::Resources) {
//! // `init` can modify all the `resources` declared in `app!`
//! r.ON;
//!
//! // power on GPIOC
-//! p.RCC.apb2enr.modify(|_, w| w.iopcen().enabled());
+//! p.device.RCC.apb2enr.modify(|_, w| w.iopcen().enabled());
//!
//! // configure PC13 as output
-//! p.GPIOC.bsrr.write(|w| w.bs13().set());
-//! p.GPIOC
+//! p.device.GPIOC.bsrr.write(|w| w.bs13().set());
+//! p.device
+//! .GPIOC
//! .crh
//! .modify(|_, w| w.mode13().output().cnf13().push());
//!
//! // configure the system timer to generate one interrupt every second
-//! p.SYST.set_clock_source(SystClkSource::Core);
-//! p.SYST.set_reload(8_000_000); // 1s
-//! p.SYST.enable_interrupt();
-//! p.SYST.enable_counter();
+//! p.core.SYST.set_clock_source(SystClkSource::Core);
+//! p.core.SYST.set_reload(8_000_000); // 1s
+//! p.core.SYST.enable_interrupt();
+//! p.core.SYST.enable_counter();
//! }
//!
//! fn idle() -> ! {
@@ -76,16 +78,23 @@
//! //
//! // `r` is the set of resources this task has access to. `SYS_TICK::Resources`
//! // has one field per resource declared in `app!`.
-//! fn sys_tick(_t: &mut Threshold, r: SYS_TICK::Resources) {
+//! #[allow(unsafe_code)]
+//! fn sys_tick(_t: &mut Threshold, mut r: SYS_TICK::Resources) {
//! // toggle state
-//! **r.ON = !**r.ON;
+//! *r.ON = !*r.ON;
//!
-//! if **r.ON {
+//! if *r.ON {
//! // set the pin PC13 high
-//! r.GPIOC.bsrr.write(|w| w.bs13().set());
+//! // NOTE(unsafe) atomic write to a stateless register
+//! unsafe {
+//! (*GPIOC::ptr()).bsrr.write(|w| w.bs13().set());
+//! }
//! } else {
//! // set the pin PC13 low
-//! r.GPIOC.bsrr.write(|w| w.br13().reset());
+//! // NOTE(unsafe) atomic write to a stateless register
+//! unsafe {
+//! (*GPIOC::ptr()).bsrr.write(|w| w.br13().reset());
+//! }
//! }
//! }
//! ```