diff options
| -rw-r--r-- | embassy-stm32/src/timer/mod.rs | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/embassy-stm32/src/timer/mod.rs b/embassy-stm32/src/timer/mod.rs index 913bfed2b..2313a5b94 100644 --- a/embassy-stm32/src/timer/mod.rs +++ b/embassy-stm32/src/timer/mod.rs | |||
| @@ -46,7 +46,10 @@ pub(crate) mod sealed { | |||
| 46 | assert!(f > 0); | 46 | assert!(f > 0); |
| 47 | let pclk_ticks_per_timer_period = timer_f / f; | 47 | let pclk_ticks_per_timer_period = timer_f / f; |
| 48 | let psc: u16 = unwrap!(((pclk_ticks_per_timer_period - 1) / (1 << 16)).try_into()); | 48 | let psc: u16 = unwrap!(((pclk_ticks_per_timer_period - 1) / (1 << 16)).try_into()); |
| 49 | let arr: u16 = unwrap!((pclk_ticks_per_timer_period / (u32::from(psc) + 1)).try_into()); | 49 | let divide_by = pclk_ticks_per_timer_period / (u32::from(psc) + 1); |
| 50 | |||
| 51 | // the timer counts `0..=arr`, we want it to count `0..divide_by` | ||
| 52 | let arr = unwrap!(u16::try_from(divide_by - 1)); | ||
| 50 | 53 | ||
| 51 | let regs = Self::regs(); | 54 | let regs = Self::regs(); |
| 52 | regs.psc().write(|r| r.set_psc(psc)); | 55 | regs.psc().write(|r| r.set_psc(psc)); |
