aboutsummaryrefslogtreecommitdiff
path: root/examples/schedule.rs
diff options
context:
space:
mode:
authorGravatar Jorge Aparicio <jorge@japaric.io> 2019-10-15 18:44:49 -0500
committerGravatar Jorge Aparicio <jorge@japaric.io> 2019-10-15 18:44:49 -0500
commiteef4e7bf7908d2a99c8d797d6f9d2ac3717e2b63 (patch)
tree1d2a7d49ce5443fcc06ab7cad39c7c8907789a70 /examples/schedule.rs
parent6196984d6d75be987d3dec3bf17909e3cd40c15b (diff)
downloadrtic-eef4e7bf7908d2a99c8d797d6f9d2ac3717e2b63.tar.gz
rtic-eef4e7bf7908d2a99c8d797d6f9d2ac3717e2b63.tar.zst
rtic-eef4e7bf7908d2a99c8d797d6f9d2ac3717e2b63.zip
more monotonic timer docs
covers - initialization and configuration of the timer; this is now a responsibility of the application author - correctness of `Monotonic::now()` in `#[init]` - safety of `Monotonic::reset()` closes #251
Diffstat (limited to 'examples/schedule.rs')
-rw-r--r--examples/schedule.rs12
1 files changed, 9 insertions, 3 deletions
diff --git a/examples/schedule.rs b/examples/schedule.rs
index 27d3bd1f..97818e36 100644
--- a/examples/schedule.rs
+++ b/examples/schedule.rs
@@ -1,6 +1,5 @@
//! examples/schedule.rs
-#![deny(unsafe_code)]
#![deny(warnings)]
#![no_main]
#![no_std]
@@ -13,8 +12,15 @@ use rtfm::cyccnt::{Instant, U32Ext as _};
#[rtfm::app(device = lm3s6965, monotonic = rtfm::cyccnt::CYCCNT)]
const APP: () = {
#[init(schedule = [foo, bar])]
- fn init(cx: init::Context) {
- let now = Instant::now();
+ fn init(mut cx: init::Context) {
+ // Initialize (enable) the monotonic timer (CYCCNT)
+ cx.core.DCB.enable_trace();
+ // required on devices that software lock the DWT (e.g. STM32F7)
+ unsafe { cx.core.DWT.lar.write(0xC5ACCE55) }
+ cx.core.DWT.enable_cycle_counter();
+
+ // semantically, the monotonic timer is frozen at time "zero" during `init`
+ let now = cx.start; // the start time of the system
hprintln!("init @ {:?}", now).unwrap();