diff options
author | 2019-10-16 19:07:28 +0000 | |
---|---|---|
committer | 2019-10-16 19:07:28 +0000 | |
commit | 47e4d999072ade9447616a91fbce61561810c75b (patch) | |
tree | 8f5a1dbf40bcedd583a9fd51404b2ace1b823fb7 /examples/schedule.rs | |
parent | 8a1f009c34b8cad3f7478aa67432fc60d47be4c0 (diff) | |
parent | 1ccacf2102fb306867c0afb35d6d5dab43f75baf (diff) | |
download | rtic-47e4d999072ade9447616a91fbce61561810c75b.tar.gz rtic-47e4d999072ade9447616a91fbce61561810c75b.tar.zst rtic-47e4d999072ade9447616a91fbce61561810c75b.zip |
Merge #255
255: more monotonic timer docs r=nils-grepit a=japaric
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
cc @jonas-schievink
(EDIT: yay, pull request number 0xFF)
Co-authored-by: Jorge Aparicio <jorge@japaric.io>
Diffstat (limited to 'examples/schedule.rs')
-rw-r--r-- | examples/schedule.rs | 12 |
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(); |