diff --git a/rtic-monotonics/CHANGELOG.md b/rtic-monotonics/CHANGELOG.md index 139b9d0518c..d8c1c1c04e1 100644 --- a/rtic-monotonics/CHANGELOG.md +++ b/rtic-monotonics/CHANGELOG.md @@ -7,6 +7,9 @@ For each category, *Added*, *Changed*, *Fixed* add new entries at the top! ## Unreleased +### Changed +- Panic if STM32 prescaler value would overflow + ## v2.1.0 - 2025-06-22 ### Changed diff --git a/rtic-monotonics/src/stm32.rs b/rtic-monotonics/src/stm32.rs index e6cb71b0ed5..b3da4a60e9b 100644 --- a/rtic-monotonics/src/stm32.rs +++ b/rtic-monotonics/src/stm32.rs @@ -238,8 +238,10 @@ macro_rules! make_timer { $timer.cr1().modify(|r| r.set_cen(false)); assert!((tim_clock_hz % timer_hz) == 0, "Unable to find suitable timer prescaler value!"); - let psc = tim_clock_hz / timer_hz - 1; - $timer.psc().write(|r| r.set_psc(psc as u16)); + let Ok(psc) = u16::try_from(tim_clock_hz / timer_hz - 1) else { + panic!("Clock prescaler overflowed!"); + }; + $timer.psc().write(|r| r.set_psc(psc)); // Enable full-period interrupt. $timer.dier().modify(|r| r.set_uie(true));