diff options
| -rw-r--r-- | embassy-stm32/src/rcc/f013.rs | 19 |
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; | |||
| 10 | pub use crate::pac::rcc::vals::Prediv as PllPreDiv; | 10 | pub use crate::pac::rcc::vals::Prediv as PllPreDiv; |
| 11 | pub use crate::pac::rcc::vals::{Hpre as AHBPrescaler, Pllmul as PllMul, Ppre as APBPrescaler, Sw as Sysclk}; | 11 | pub use crate::pac::rcc::vals::{Hpre as AHBPrescaler, Pllmul as PllMul, Ppre as APBPrescaler, Sw as Sysclk}; |
| 12 | #[cfg(stm32f107)] | 12 | #[cfg(stm32f107)] |
| 13 | pub use crate::pac::rcc::vals::{ | 13 | pub 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 | }; | ||
| 16 | use crate::pac::{FLASH, RCC}; | 14 | use crate::pac::{FLASH, RCC}; |
| 17 | use crate::time::Hertz; | 15 | use 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 | { |
