use embassy_stm32::pac::rcc::vals::{Adcsel, Persel, Saisel};
use embassy_stm32::rcc::{
AHBPrescaler, APBPrescaler, Hse, HseMode, Pll, PllDiv, PllMul, PllPreDiv, PllSource, Sysclk,
VoltageScale,
};
use embassy_stm32::time::Hertz;
use embassy_stm32::Config;
pub fn config() -> Config {
let mut config = Config::default();
let rcc = &mut config.rcc;
rcc.hse = Some(Hse {
freq: Hertz(6_144_000),
mode: HseMode::Oscillator,
});
rcc.pll1 = Some(Pll {
source: PllSource::HSE,
prediv: PllPreDiv::DIV2, mul: PllMul::MUL260, divp: Some(PllDiv::DIV2), divq: Some(PllDiv::DIV18),
divr: None,
fracn: None,
});
rcc.pll2 = Some(Pll {
source: PllSource::HSE,
prediv: PllPreDiv::DIV4, mul: PllMul::MUL272, divp: Some(PllDiv::DIV34), divq: None,
divr: None,
fracn: None,
});
rcc.pll3 = Some(Pll {
source: PllSource::HSE,
prediv: PllPreDiv::DIV4, mul: PllMul::MUL125, divp: None,
divq: None,
divr: Some(PllDiv::DIV30), fracn: None,
});
rcc.sys = Sysclk::PLL1_P;
rcc.d1c_pre = AHBPrescaler::DIV1;
rcc.ahb_pre = AHBPrescaler::DIV2;
rcc.apb1_pre = APBPrescaler::DIV2;
rcc.apb2_pre = APBPrescaler::DIV2;
rcc.apb3_pre = APBPrescaler::DIV2;
rcc.apb4_pre = APBPrescaler::DIV2;
rcc.voltage_scale = VoltageScale::Scale1;
rcc.mux.adcsel = Adcsel::PER; rcc.mux.persel = Persel::HSI;
rcc.mux.sai1sel = Saisel::PLL2_P;
config
}