Merge #565
565: stm32: RCC cleanups r=Dirbaio a=Dirbaio Co-authored-by: Dario Nieuwenhuis <dirbaio@dirbaio.net>
This commit is contained in:
		| @@ -102,10 +102,10 @@ impl Into<u8> for AHBPrescaler { | ||||
|  | ||||
| /// Clocks configutation | ||||
| pub struct Config { | ||||
|     mux: ClockSrc, | ||||
|     ahb_pre: AHBPrescaler, | ||||
|     apb_pre: APBPrescaler, | ||||
|     low_power_run: bool, | ||||
|     pub mux: ClockSrc, | ||||
|     pub ahb_pre: AHBPrescaler, | ||||
|     pub apb_pre: APBPrescaler, | ||||
|     pub low_power_run: bool, | ||||
| } | ||||
|  | ||||
| impl Default for Config { | ||||
| @@ -120,32 +120,6 @@ impl Default for Config { | ||||
|     } | ||||
| } | ||||
|  | ||||
| impl Config { | ||||
|     #[inline] | ||||
|     pub fn clock_src(mut self, mux: ClockSrc) -> Self { | ||||
|         self.mux = mux; | ||||
|         self | ||||
|     } | ||||
|  | ||||
|     #[inline] | ||||
|     pub fn ahb_pre(mut self, pre: AHBPrescaler) -> Self { | ||||
|         self.ahb_pre = pre; | ||||
|         self | ||||
|     } | ||||
|  | ||||
|     #[inline] | ||||
|     pub fn apb_pre(mut self, pre: APBPrescaler) -> Self { | ||||
|         self.apb_pre = pre; | ||||
|         self | ||||
|     } | ||||
|  | ||||
|     #[inline] | ||||
|     pub fn low_power_run(mut self, on: bool) -> Self { | ||||
|         self.low_power_run = on; | ||||
|         self | ||||
|     } | ||||
| } | ||||
|  | ||||
| /// RCC peripheral | ||||
| pub struct Rcc<'d> { | ||||
|     _rb: peripherals::RCC, | ||||
|   | ||||
| @@ -74,11 +74,11 @@ impl Into<u8> for AHBPrescaler { | ||||
|  | ||||
| /// Clocks configutation | ||||
| pub struct Config { | ||||
|     mux: ClockSrc, | ||||
|     ahb_pre: AHBPrescaler, | ||||
|     apb1_pre: APBPrescaler, | ||||
|     apb2_pre: APBPrescaler, | ||||
|     low_power_run: bool, | ||||
|     pub mux: ClockSrc, | ||||
|     pub ahb_pre: AHBPrescaler, | ||||
|     pub apb1_pre: APBPrescaler, | ||||
|     pub apb2_pre: APBPrescaler, | ||||
|     pub low_power_run: bool, | ||||
| } | ||||
|  | ||||
| impl Default for Config { | ||||
| @@ -94,38 +94,6 @@ impl Default for Config { | ||||
|     } | ||||
| } | ||||
|  | ||||
| impl Config { | ||||
|     #[inline] | ||||
|     pub fn clock_src(mut self, mux: ClockSrc) -> Self { | ||||
|         self.mux = mux; | ||||
|         self | ||||
|     } | ||||
|  | ||||
|     #[inline] | ||||
|     pub fn ahb_pre(mut self, pre: AHBPrescaler) -> Self { | ||||
|         self.ahb_pre = pre; | ||||
|         self | ||||
|     } | ||||
|  | ||||
|     #[inline] | ||||
|     pub fn apb1_pre(mut self, pre: APBPrescaler) -> Self { | ||||
|         self.apb1_pre = pre; | ||||
|         self | ||||
|     } | ||||
|  | ||||
|     #[inline] | ||||
|     pub fn apb2_pre(mut self, pre: APBPrescaler) -> Self { | ||||
|         self.apb2_pre = pre; | ||||
|         self | ||||
|     } | ||||
|  | ||||
|     #[inline] | ||||
|     pub fn low_power_run(mut self, on: bool) -> Self { | ||||
|         self.low_power_run = on; | ||||
|         self | ||||
|     } | ||||
| } | ||||
|  | ||||
| /// RCC peripheral | ||||
| pub struct Rcc<'d> { | ||||
|     _rb: peripherals::RCC, | ||||
|   | ||||
| @@ -72,8 +72,6 @@ pub struct Config { | ||||
|     pub pll1: PllConfig, | ||||
|     pub pll2: PllConfig, | ||||
|     pub pll3: PllConfig, | ||||
|     pub enable_dma1: bool, | ||||
|     pub enable_dma2: bool, | ||||
| } | ||||
|  | ||||
| pub struct Rcc<'d> { | ||||
| @@ -331,14 +329,6 @@ impl<'d> Rcc<'d> { | ||||
|             }); | ||||
|             while !SYSCFG.cccsr().read().ready() {} | ||||
|  | ||||
|             if self.config.enable_dma1 { | ||||
|                 RCC.ahb1enr().modify(|w| w.set_dma1en(true)); | ||||
|             } | ||||
|  | ||||
|             if self.config.enable_dma2 { | ||||
|                 RCC.ahb1enr().modify(|w| w.set_dma2en(true)); | ||||
|             } | ||||
|  | ||||
|             CoreClocks { | ||||
|                 hclk: Hertz(rcc_hclk), | ||||
|                 pclk1: Hertz(rcc_pclk1), | ||||
|   | ||||
| @@ -183,10 +183,10 @@ impl Into<Msirange> for MSIRange { | ||||
|  | ||||
| /// Clocks configutation | ||||
| pub struct Config { | ||||
|     mux: ClockSrc, | ||||
|     ahb_pre: AHBPrescaler, | ||||
|     apb1_pre: APBPrescaler, | ||||
|     apb2_pre: APBPrescaler, | ||||
|     pub mux: ClockSrc, | ||||
|     pub ahb_pre: AHBPrescaler, | ||||
|     pub apb1_pre: APBPrescaler, | ||||
|     pub apb2_pre: APBPrescaler, | ||||
| } | ||||
|  | ||||
| impl Default for Config { | ||||
| @@ -201,32 +201,6 @@ impl Default for Config { | ||||
|     } | ||||
| } | ||||
|  | ||||
| impl Config { | ||||
|     #[inline] | ||||
|     pub fn clock_src(mut self, mux: ClockSrc) -> Self { | ||||
|         self.mux = mux; | ||||
|         self | ||||
|     } | ||||
|  | ||||
|     #[inline] | ||||
|     pub fn ahb_pre(mut self, pre: AHBPrescaler) -> Self { | ||||
|         self.ahb_pre = pre; | ||||
|         self | ||||
|     } | ||||
|  | ||||
|     #[inline] | ||||
|     pub fn apb1_pre(mut self, pre: APBPrescaler) -> Self { | ||||
|         self.apb1_pre = pre; | ||||
|         self | ||||
|     } | ||||
|  | ||||
|     #[inline] | ||||
|     pub fn apb2_pre(mut self, pre: APBPrescaler) -> Self { | ||||
|         self.apb2_pre = pre; | ||||
|         self | ||||
|     } | ||||
| } | ||||
|  | ||||
| /// RCC peripheral | ||||
| pub struct Rcc<'d> { | ||||
|     _rb: peripherals::RCC, | ||||
|   | ||||
| @@ -118,10 +118,10 @@ impl Into<u8> for MSIRange { | ||||
|  | ||||
| /// Clocks configutation | ||||
| pub struct Config { | ||||
|     mux: ClockSrc, | ||||
|     ahb_pre: AHBPrescaler, | ||||
|     apb1_pre: APBPrescaler, | ||||
|     apb2_pre: APBPrescaler, | ||||
|     pub mux: ClockSrc, | ||||
|     pub ahb_pre: AHBPrescaler, | ||||
|     pub apb1_pre: APBPrescaler, | ||||
|     pub apb2_pre: APBPrescaler, | ||||
| } | ||||
|  | ||||
| impl Default for Config { | ||||
| @@ -136,32 +136,6 @@ impl Default for Config { | ||||
|     } | ||||
| } | ||||
|  | ||||
| impl Config { | ||||
|     #[inline] | ||||
|     pub fn clock_src(mut self, mux: ClockSrc) -> Self { | ||||
|         self.mux = mux; | ||||
|         self | ||||
|     } | ||||
|  | ||||
|     #[inline] | ||||
|     pub fn ahb_pre(mut self, pre: AHBPrescaler) -> Self { | ||||
|         self.ahb_pre = pre; | ||||
|         self | ||||
|     } | ||||
|  | ||||
|     #[inline] | ||||
|     pub fn apb1_pre(mut self, pre: APBPrescaler) -> Self { | ||||
|         self.apb1_pre = pre; | ||||
|         self | ||||
|     } | ||||
|  | ||||
|     #[inline] | ||||
|     pub fn apb2_pre(mut self, pre: APBPrescaler) -> Self { | ||||
|         self.apb2_pre = pre; | ||||
|         self | ||||
|     } | ||||
| } | ||||
|  | ||||
| /// RCC peripheral | ||||
| pub struct Rcc<'d> { | ||||
|     _rb: peripherals::RCC, | ||||
|   | ||||
| @@ -269,10 +269,10 @@ impl Into<u8> for AHBPrescaler { | ||||
|  | ||||
| /// Clocks configutation | ||||
| pub struct Config { | ||||
|     mux: ClockSrc, | ||||
|     ahb_pre: AHBPrescaler, | ||||
|     apb1_pre: APBPrescaler, | ||||
|     apb2_pre: APBPrescaler, | ||||
|     pub mux: ClockSrc, | ||||
|     pub ahb_pre: AHBPrescaler, | ||||
|     pub apb1_pre: APBPrescaler, | ||||
|     pub apb2_pre: APBPrescaler, | ||||
| } | ||||
|  | ||||
| impl Default for Config { | ||||
| @@ -287,32 +287,6 @@ impl Default for Config { | ||||
|     } | ||||
| } | ||||
|  | ||||
| impl Config { | ||||
|     #[inline] | ||||
|     pub fn clock_src(mut self, mux: ClockSrc) -> Self { | ||||
|         self.mux = mux; | ||||
|         self | ||||
|     } | ||||
|  | ||||
|     #[inline] | ||||
|     pub fn ahb_pre(mut self, pre: AHBPrescaler) -> Self { | ||||
|         self.ahb_pre = pre; | ||||
|         self | ||||
|     } | ||||
|  | ||||
|     #[inline] | ||||
|     pub fn apb1_pre(mut self, pre: APBPrescaler) -> Self { | ||||
|         self.apb1_pre = pre; | ||||
|         self | ||||
|     } | ||||
|  | ||||
|     #[inline] | ||||
|     pub fn apb2_pre(mut self, pre: APBPrescaler) -> Self { | ||||
|         self.apb2_pre = pre; | ||||
|         self | ||||
|     } | ||||
| } | ||||
|  | ||||
| /// RCC peripheral | ||||
| pub struct Rcc<'d> { | ||||
|     _rb: peripherals::RCC, | ||||
|   | ||||
| @@ -274,16 +274,16 @@ impl Default for MSIRange { | ||||
|  | ||||
| #[derive(Copy, Clone)] | ||||
| pub struct Config { | ||||
|     mux: ClockSrc, | ||||
|     ahb_pre: AHBPrescaler, | ||||
|     apb1_pre: APBPrescaler, | ||||
|     apb2_pre: APBPrescaler, | ||||
|     apb3_pre: APBPrescaler, | ||||
|     pub mux: ClockSrc, | ||||
|     pub ahb_pre: AHBPrescaler, | ||||
|     pub apb1_pre: APBPrescaler, | ||||
|     pub apb2_pre: APBPrescaler, | ||||
|     pub apb3_pre: APBPrescaler, | ||||
| } | ||||
|  | ||||
| impl Config { | ||||
|     pub fn new() -> Self { | ||||
|         Config { | ||||
| impl Default for Config { | ||||
|     fn default() -> Self { | ||||
|         Self { | ||||
|             mux: ClockSrc::MSI(MSIRange::default()), | ||||
|             ahb_pre: Default::default(), | ||||
|             apb1_pre: Default::default(), | ||||
| @@ -293,12 +293,6 @@ impl Config { | ||||
|     } | ||||
| } | ||||
|  | ||||
| impl Default for Config { | ||||
|     fn default() -> Self { | ||||
|         Config::new() | ||||
|     } | ||||
| } | ||||
|  | ||||
| /// Extension trait that freezes the `RCC` peripheral with provided clocks configuration | ||||
| pub trait RccExt { | ||||
|     fn freeze(self, config: Config, power: &Power) -> Clocks; | ||||
|   | ||||
| @@ -86,10 +86,10 @@ impl Into<u8> for AHBPrescaler { | ||||
|  | ||||
| /// Clocks configutation | ||||
| pub struct Config { | ||||
|     mux: ClockSrc, | ||||
|     ahb_pre: AHBPrescaler, | ||||
|     apb1_pre: APBPrescaler, | ||||
|     apb2_pre: APBPrescaler, | ||||
|     pub mux: ClockSrc, | ||||
|     pub ahb_pre: AHBPrescaler, | ||||
|     pub apb1_pre: APBPrescaler, | ||||
|     pub apb2_pre: APBPrescaler, | ||||
| } | ||||
|  | ||||
| impl Default for Config { | ||||
| @@ -104,32 +104,6 @@ impl Default for Config { | ||||
|     } | ||||
| } | ||||
|  | ||||
| impl Config { | ||||
|     #[inline] | ||||
|     pub fn clock_src(mut self, mux: ClockSrc) -> Self { | ||||
|         self.mux = mux; | ||||
|         self | ||||
|     } | ||||
|  | ||||
|     #[inline] | ||||
|     pub fn ahb_pre(mut self, pre: AHBPrescaler) -> Self { | ||||
|         self.ahb_pre = pre; | ||||
|         self | ||||
|     } | ||||
|  | ||||
|     #[inline] | ||||
|     pub fn apb1_pre(mut self, pre: APBPrescaler) -> Self { | ||||
|         self.apb1_pre = pre; | ||||
|         self | ||||
|     } | ||||
|  | ||||
|     #[inline] | ||||
|     pub fn apb2_pre(mut self, pre: APBPrescaler) -> Self { | ||||
|         self.apb2_pre = pre; | ||||
|         self | ||||
|     } | ||||
| } | ||||
|  | ||||
| /// RCC peripheral | ||||
| pub struct Rcc<'d> { | ||||
|     _rb: peripherals::RCC, | ||||
|   | ||||
| @@ -87,10 +87,10 @@ impl Into<u8> for AHBPrescaler { | ||||
|  | ||||
| /// Clocks configutation | ||||
| pub struct Config { | ||||
|     mux: ClockSrc, | ||||
|     ahb_pre: AHBPrescaler, | ||||
|     apb1_pre: APBPrescaler, | ||||
|     apb2_pre: APBPrescaler, | ||||
|     pub mux: ClockSrc, | ||||
|     pub ahb_pre: AHBPrescaler, | ||||
|     pub apb1_pre: APBPrescaler, | ||||
|     pub apb2_pre: APBPrescaler, | ||||
| } | ||||
|  | ||||
| impl Default for Config { | ||||
| @@ -105,32 +105,6 @@ impl Default for Config { | ||||
|     } | ||||
| } | ||||
|  | ||||
| impl Config { | ||||
|     #[inline] | ||||
|     pub fn clock_src(mut self, mux: ClockSrc) -> Self { | ||||
|         self.mux = mux; | ||||
|         self | ||||
|     } | ||||
|  | ||||
|     #[inline] | ||||
|     pub fn ahb_pre(mut self, pre: AHBPrescaler) -> Self { | ||||
|         self.ahb_pre = pre; | ||||
|         self | ||||
|     } | ||||
|  | ||||
|     #[inline] | ||||
|     pub fn apb1_pre(mut self, pre: APBPrescaler) -> Self { | ||||
|         self.apb1_pre = pre; | ||||
|         self | ||||
|     } | ||||
|  | ||||
|     #[inline] | ||||
|     pub fn apb2_pre(mut self, pre: APBPrescaler) -> Self { | ||||
|         self.apb2_pre = pre; | ||||
|         self | ||||
|     } | ||||
| } | ||||
|  | ||||
| /// RCC peripheral | ||||
| pub struct Rcc<'d> { | ||||
|     _rb: peripherals::RCC, | ||||
| @@ -257,13 +231,6 @@ impl RccExt for RCC { | ||||
|  | ||||
| pub unsafe fn init(config: Config) { | ||||
|     let r = <peripherals::RCC as embassy::util::Steal>::steal(); | ||||
|     let rcc = pac::RCC; | ||||
|     rcc.ahb2enr().write(|w| { | ||||
|         w.set_gpioaen(true); | ||||
|         w.set_gpioben(true); | ||||
|         w.set_gpiocen(true); | ||||
|         w.set_gpiohen(true); | ||||
|     }); | ||||
|     let clocks = r.freeze(config); | ||||
|     set_freqs(clocks); | ||||
| } | ||||
|   | ||||
| @@ -34,8 +34,6 @@ pub fn config() -> Config { | ||||
|     config.rcc.sys_ck = Some(400.mhz().into()); | ||||
|     config.rcc.hclk = Some(400.mhz().into()); | ||||
|     config.rcc.pll1.q_ck = Some(100.mhz().into()); | ||||
|     config.rcc.enable_dma1 = true; | ||||
|     config.rcc.enable_dma2 = true; | ||||
|     config.rcc.pclk1 = Some(100.mhz().into()); | ||||
|     config.rcc.pclk2 = Some(100.mhz().into()); | ||||
|     config.rcc.pclk3 = Some(100.mhz().into()); | ||||
|   | ||||
| @@ -23,6 +23,5 @@ pub fn config() -> Config { | ||||
|     let mut config = Config::default(); | ||||
|     config.rcc.sys_ck = Some(400.mhz().into()); | ||||
|     config.rcc.pll1.q_ck = Some(100.mhz().into()); | ||||
|     config.rcc.enable_dma1 = true; | ||||
|     config | ||||
| } | ||||
|   | ||||
| @@ -25,7 +25,7 @@ use lorawan_encoding::default_crypto::DefaultFactory as Crypto; | ||||
|  | ||||
| fn config() -> embassy_stm32::Config { | ||||
|     let mut config = embassy_stm32::Config::default(); | ||||
|     config.rcc = config.rcc.clock_src(embassy_stm32::rcc::ClockSrc::HSI16); | ||||
|     config.rcc.mux = embassy_stm32::rcc::ClockSrc::HSI16; | ||||
|     config | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -14,13 +14,13 @@ use example_common::*; | ||||
|  | ||||
| fn config() -> Config { | ||||
|     let mut config = Config::default(); | ||||
|     config.rcc = config.rcc.clock_src(ClockSrc::PLL( | ||||
|     config.rcc.mux = ClockSrc::PLL( | ||||
|         PLLSource::HSI16, | ||||
|         PLLClkDiv::Div2, | ||||
|         PLLSrcDiv::Div1, | ||||
|         PLLMul::Mul8, | ||||
|         Some(PLLClkDiv::Div2), | ||||
|     )); | ||||
|     ); | ||||
|     config | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -23,7 +23,7 @@ use lorawan_encoding::default_crypto::DefaultFactory as Crypto; | ||||
|  | ||||
| fn config() -> embassy_stm32::Config { | ||||
|     let mut config = embassy_stm32::Config::default(); | ||||
|     config.rcc = config.rcc.clock_src(embassy_stm32::rcc::ClockSrc::HSI16); | ||||
|     config.rcc.mux = embassy_stm32::rcc::ClockSrc::HSI16; | ||||
|     config | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -66,7 +66,7 @@ const TX_PARAMS: TxParams = TxParams::new() | ||||
|  | ||||
| fn config() -> embassy_stm32::Config { | ||||
|     let mut config = embassy_stm32::Config::default(); | ||||
|     config.rcc = config.rcc.clock_src(embassy_stm32::rcc::ClockSrc::HSE32); | ||||
|     config.rcc.mux = embassy_stm32::rcc::ClockSrc::HSE32; | ||||
|     config | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user