Skip to content

Commit 0828648

Browse files
authored
Merge pull request #67 from stm32-rs/fix/stopwatch
Fix stopwatch calculation
2 parents a2b0b6f + 7b24ce2 commit 0828648

File tree

2 files changed

+8
-8
lines changed

2 files changed

+8
-8
lines changed

examples/stopwatch.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,21 +32,21 @@ fn main() -> ! {
3232
let mut stopwatch = dp.TIM3.stopwatch(&mut rcc);
3333

3434
let elapsed_us = stopwatch.trace(|| {
35-
delay.delay(10.us());
35+
delay.delay(100.us());
3636
});
37-
hprintln!("Delay: 10us -> {}us", elapsed_us.0).unwrap();
37+
hprintln!("Delay: 100 us -> {} us", elapsed_us.0).unwrap();
3838

39-
timer.start(10.us());
39+
timer.start(100.us());
4040
let elapsed_us = stopwatch.trace(|| {
4141
block!(timer.wait()).unwrap();
4242
});
43-
hprintln!("Timer: 10us -> {}us", elapsed_us.0).unwrap();
43+
hprintln!("Timer: 100 us -> {} us", elapsed_us.0).unwrap();
4444

4545
let elapsed_us = stopwatch.trace(|| {
4646
let x = calc_something();
4747
assert!(x > 0);
4848
});
49-
hprintln!("Calc @ 16MHz: {}us", elapsed_us.0).unwrap();
49+
hprintln!("Calc @ 16 MHz: {} us", elapsed_us.0).unwrap();
5050

5151
let rcc = rcc.freeze(Config::new(SysClockSrc::PLL));
5252
stopwatch.set_clock(rcc.clocks.apb_tim_clk);
@@ -55,7 +55,7 @@ fn main() -> ! {
5555
let x = calc_something();
5656
assert!(x > 0);
5757
});
58-
hprintln!("Calc @ 64MHz: {}us", elapsed_us.0).unwrap();
58+
hprintln!("Calc @ 64 MHz: {} us", elapsed_us.0).unwrap();
5959

6060
loop {}
6161
}

src/timer/stopwatch.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ macro_rules! stopwatches {
7171
pub fn elapsed(&self, ts: Instant) -> MicroSecond {
7272
let now = self.now().0;
7373
let cycles = now.wrapping_sub(ts.0);
74-
self.clk.duration(cycles)
74+
self.clk.duration(cycles * (1 + self.tim.psc.read().bits()))
7575
}
7676

7777
pub fn trace<F>(&self, mut closure: F) -> MicroSecond
@@ -81,7 +81,7 @@ macro_rules! stopwatches {
8181
let started = self.now().0;
8282
closure();
8383
let now = self.now().0;
84-
self.clk.duration(now.wrapping_sub(started))
84+
self.clk.duration(now.wrapping_sub(started) * (1 + self.tim.psc.read().bits()))
8585
}
8686
}
8787

0 commit comments

Comments
 (0)