From aa767272a87bddc9ac7fbce3962989342390d689 Mon Sep 17 00:00:00 2001 From: Romain Goyet <romain.goyet@numworks.com> Date: Thu, 1 Feb 2024 13:39:14 -0500 Subject: [PATCH] STM32WBA's high speed external clock has to run at 32 MHz --- embassy-stm32/src/rcc/wba.rs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/embassy-stm32/src/rcc/wba.rs b/embassy-stm32/src/rcc/wba.rs index c0cd91507..1d04d480a 100644 --- a/embassy-stm32/src/rcc/wba.rs +++ b/embassy-stm32/src/rcc/wba.rs @@ -6,26 +6,28 @@ use crate::time::Hertz; /// HSI speed pub const HSI_FREQ: Hertz = Hertz(16_000_000); +// HSE speed +pub const HSE_FREQ: Hertz = Hertz(32_000_000); pub use crate::pac::pwr::vals::Vos as VoltageScale; pub use crate::pac::rcc::vals::{Hpre as AHBPrescaler, Ppre as APBPrescaler}; #[derive(Copy, Clone)] pub enum ClockSrc { - HSE(Hertz), + HSE, HSI, } #[derive(Clone, Copy, Debug)] pub enum PllSource { - HSE(Hertz), + HSE, HSI, } impl Into<Pllsrc> for PllSource { fn into(self) -> Pllsrc { match self { - PllSource::HSE(..) => Pllsrc::HSE, + PllSource::HSE => Pllsrc::HSE, PllSource::HSI => Pllsrc::HSI, } } @@ -34,7 +36,7 @@ impl Into<Pllsrc> for PllSource { impl Into<Sw> for ClockSrc { fn into(self) -> Sw { match self { - ClockSrc::HSE(..) => Sw::HSE, + ClockSrc::HSE => Sw::HSE, ClockSrc::HSI => Sw::HSI, } } @@ -64,11 +66,11 @@ impl Default for Config { pub(crate) unsafe fn init(config: Config) { let sys_clk = match config.mux { - ClockSrc::HSE(freq) => { + ClockSrc::HSE => { RCC.cr().write(|w| w.set_hseon(true)); while !RCC.cr().read().hserdy() {} - freq + HSE_FREQ } ClockSrc::HSI => { RCC.cr().write(|w| w.set_hsion(true));