aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Algesten <[email protected]>2025-01-24 09:33:48 +0100
committerMartin Algesten <[email protected]>2025-01-24 09:36:11 +0100
commit3ba94c0ab3fcb859619fa70fcf37a3505392f05c (patch)
tree2969597fd3c0eb689f2cd882fc6ad0b40c645bb9
parentc72d9ec8599e3474344f8daf8c2e5a7236201e03 (diff)
Fix init order of set_prediv1src
-rw-r--r--embassy-stm32/src/rcc/f013.rs19
1 files changed, 9 insertions, 10 deletions
diff --git a/embassy-stm32/src/rcc/f013.rs b/embassy-stm32/src/rcc/f013.rs
index d256ace8f..8d86629b5 100644
--- a/embassy-stm32/src/rcc/f013.rs
+++ b/embassy-stm32/src/rcc/f013.rs
@@ -10,9 +10,7 @@ pub use crate::pac::rcc::vals::Pllxtpre as PllPreDiv;
10pub use crate::pac::rcc::vals::Prediv as PllPreDiv; 10pub use crate::pac::rcc::vals::Prediv as PllPreDiv;
11pub use crate::pac::rcc::vals::{Hpre as AHBPrescaler, Pllmul as PllMul, Ppre as APBPrescaler, Sw as Sysclk}; 11pub use crate::pac::rcc::vals::{Hpre as AHBPrescaler, Pllmul as PllMul, Ppre as APBPrescaler, Sw as Sysclk};
12#[cfg(stm32f107)] 12#[cfg(stm32f107)]
13pub use crate::pac::rcc::vals::{ 13pub use crate::pac::rcc::vals::{I2s2src, Pll2mul as Pll2Mul, Prediv1 as PllPreDiv, Prediv1src, Usbpre as UsbPre};
14 I2s2src, Pll2mul as Pll2Mul, Prediv1 as PllPreDiv, Prediv1src as PreDiv1Src, Usbpre as UsbPre,
15};
16use crate::pac::{FLASH, RCC}; 14use crate::pac::{FLASH, RCC};
17use crate::time::Hertz; 15use crate::time::Hertz;
18 16
@@ -223,12 +221,7 @@ pub(crate) unsafe fn init(config: Config) {
223 } 221 }
224 (Pllsrc::HSI_DIV2, unwrap!(hsi)) 222 (Pllsrc::HSI_DIV2, unwrap!(hsi))
225 } 223 }
226 PllSource::HSE => { 224 PllSource::HSE => (Pllsrc::HSE_DIV_PREDIV, unwrap!(hse)),
227 #[cfg(stm32f107)]
228 RCC.cfgr2().modify(|w| w.set_prediv1src(PreDiv1Src::HSE));
229
230 (Pllsrc::HSE_DIV_PREDIV, unwrap!(hse))
231 }
232 #[cfg(rcc_f0v4)] 225 #[cfg(rcc_f0v4)]
233 PllSource::HSI48 => (Pllsrc::HSI48_DIV_PREDIV, unwrap!(hsi48)), 226 PllSource::HSI48 => (Pllsrc::HSI48_DIV_PREDIV, unwrap!(hsi48)),
234 #[cfg(stm32f107)] 227 #[cfg(stm32f107)]
@@ -239,7 +232,6 @@ pub(crate) unsafe fn init(config: Config) {
239 let pll2 = unwrap!(config.pll2); 232 let pll2 = unwrap!(config.pll2);
240 let in_freq = hse.unwrap() / config.prediv2; 233 let in_freq = hse.unwrap() / config.prediv2;
241 let pll2freq = in_freq * pll2.mul; 234 let pll2freq = in_freq * pll2.mul;
242 RCC.cfgr2().modify(|w| w.set_prediv1src(PreDiv1Src::PLL2));
243 (Pllsrc::HSE_DIV_PREDIV, pll2freq) 235 (Pllsrc::HSE_DIV_PREDIV, pll2freq)
244 } 236 }
245 }; 237 };
@@ -267,6 +259,13 @@ pub(crate) unsafe fn init(config: Config) {
267 out_freq 259 out_freq
268 }); 260 });
269 261
262 #[cfg(stm32f107)]
263 match config.pll.map(|pll| pll.src) {
264 Some(PllSource::HSE) => RCC.cfgr2().modify(|w| w.set_prediv1src(Prediv1src::HSE)),
265 Some(PllSource::PLL2) => RCC.cfgr2().modify(|w| w.set_prediv1src(Prediv1src::PLL2)),
266 _ => {}
267 }
268
270 // pll2 and pll3 269 // pll2 and pll3
271 #[cfg(stm32f107)] 270 #[cfg(stm32f107)]
272 { 271 {