aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlf Lilleengen <[email protected]>2023-12-02 08:13:50 +0000
committerGitHub <[email protected]>2023-12-02 08:13:50 +0000
commita31ae52d1a7e0607edeaea9acf30b03ea510fd83 (patch)
tree7dd78ce83dcbd9b1fa0d2a1fc27d924a16f505c4
parentce4dd67f3b4fb7d622a3d77b8a0a520dddd6fecf (diff)
parent8c0e2748db61c0b1794a2921e7a813fd8fa92529 (diff)
Merge pull request #2240 from GrantM11235/fix-freq-off-by-one
stm32/timer: Fix frequency off-by-one
-rw-r--r--embassy-stm32/src/timer/mod.rs5
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));