diff options
| author | techmccat <[email protected]> | 2025-03-27 17:42:55 +0100 |
|---|---|---|
| committer | techmccat <[email protected]> | 2025-03-28 10:35:05 +0100 |
| commit | 0621087f6ff12d1e6fc0d566fabc2ca9130f633f (patch) | |
| tree | 940286df6317ed43db5929f443d47d7610caa1e5 | |
| parent | 502c188cf4c08a1acf9d7095e790e0b5d77d3702 (diff) | |
stm32: allow using LSI/LSE as SYSCLK on g0/c0
| -rw-r--r-- | embassy-stm32/src/rcc/c0.rs | 7 | ||||
| -rw-r--r-- | embassy-stm32/src/rcc/g0.rs | 7 |
2 files changed, 10 insertions, 4 deletions
diff --git a/embassy-stm32/src/rcc/c0.rs b/embassy-stm32/src/rcc/c0.rs index 04cbe83ed..4ec8e7780 100644 --- a/embassy-stm32/src/rcc/c0.rs +++ b/embassy-stm32/src/rcc/c0.rs | |||
| @@ -3,6 +3,7 @@ pub use crate::pac::rcc::vals::{ | |||
| 3 | Hpre as AHBPrescaler, Hsidiv as HsiSysDiv, Hsikerdiv as HsiKerDiv, Ppre as APBPrescaler, Sw as Sysclk, | 3 | Hpre as AHBPrescaler, Hsidiv as HsiSysDiv, Hsikerdiv as HsiKerDiv, Ppre as APBPrescaler, Sw as Sysclk, |
| 4 | }; | 4 | }; |
| 5 | use crate::pac::{FLASH, RCC}; | 5 | use crate::pac::{FLASH, RCC}; |
| 6 | use crate::rcc::LSI_FREQ; | ||
| 6 | use crate::time::Hertz; | 7 | use crate::time::Hertz; |
| 7 | 8 | ||
| 8 | /// HSI speed | 9 | /// HSI speed |
| @@ -121,9 +122,13 @@ pub(crate) unsafe fn init(config: Config) { | |||
| 121 | } | 122 | } |
| 122 | }; | 123 | }; |
| 123 | 124 | ||
| 125 | let rtc = config.ls.init(); | ||
| 126 | |||
| 124 | let sys = match config.sys { | 127 | let sys = match config.sys { |
| 125 | Sysclk::HSISYS => unwrap!(hsisys), | 128 | Sysclk::HSISYS => unwrap!(hsisys), |
| 126 | Sysclk::HSE => unwrap!(hse), | 129 | Sysclk::HSE => unwrap!(hse), |
| 130 | Sysclk::LSI => { assert!(config.ls.lsi); LSI_FREQ } | ||
| 131 | Sysclk::LSE => unwrap!(config.ls.lse).frequency, | ||
| 127 | _ => unreachable!(), | 132 | _ => unreachable!(), |
| 128 | }; | 133 | }; |
| 129 | 134 | ||
| @@ -162,8 +167,6 @@ pub(crate) unsafe fn init(config: Config) { | |||
| 162 | RCC.cr().modify(|w| w.set_hsion(false)); | 167 | RCC.cr().modify(|w| w.set_hsion(false)); |
| 163 | } | 168 | } |
| 164 | 169 | ||
| 165 | let rtc = config.ls.init(); | ||
| 166 | |||
| 167 | config.mux.init(); | 170 | config.mux.init(); |
| 168 | 171 | ||
| 169 | set_clocks!( | 172 | set_clocks!( |
diff --git a/embassy-stm32/src/rcc/g0.rs b/embassy-stm32/src/rcc/g0.rs index f55b18290..c84ac5166 100644 --- a/embassy-stm32/src/rcc/g0.rs +++ b/embassy-stm32/src/rcc/g0.rs | |||
| @@ -5,6 +5,7 @@ pub use crate::pac::rcc::vals::{ | |||
| 5 | Pllr as PllRDiv, Pllsrc as PllSource, Ppre as APBPrescaler, Sw as Sysclk, | 5 | Pllr as PllRDiv, Pllsrc as PllSource, Ppre as APBPrescaler, Sw as Sysclk, |
| 6 | }; | 6 | }; |
| 7 | use crate::pac::{FLASH, PWR, RCC}; | 7 | use crate::pac::{FLASH, PWR, RCC}; |
| 8 | use crate::rcc::LSI_FREQ; | ||
| 8 | use crate::time::Hertz; | 9 | use crate::time::Hertz; |
| 9 | 10 | ||
| 10 | /// HSI speed | 11 | /// HSI speed |
| @@ -234,10 +235,14 @@ pub(crate) unsafe fn init(config: Config) { | |||
| 234 | }) | 235 | }) |
| 235 | .unwrap_or_default(); | 236 | .unwrap_or_default(); |
| 236 | 237 | ||
| 238 | let rtc = config.ls.init(); | ||
| 239 | |||
| 237 | let sys = match config.sys { | 240 | let sys = match config.sys { |
| 238 | Sysclk::HSI => unwrap!(hsisys), | 241 | Sysclk::HSI => unwrap!(hsisys), |
| 239 | Sysclk::HSE => unwrap!(hse), | 242 | Sysclk::HSE => unwrap!(hse), |
| 240 | Sysclk::PLL1_R => unwrap!(pll.pll_r), | 243 | Sysclk::PLL1_R => unwrap!(pll.pll_r), |
| 244 | Sysclk::LSI => { assert!(config.ls.lsi); LSI_FREQ } | ||
| 245 | Sysclk::LSE => unwrap!(config.ls.lse).frequency, | ||
| 241 | _ => unreachable!(), | 246 | _ => unreachable!(), |
| 242 | }; | 247 | }; |
| 243 | 248 | ||
| @@ -286,8 +291,6 @@ pub(crate) unsafe fn init(config: Config) { | |||
| 286 | PWR.cr1().modify(|w| w.set_lpr(true)); | 291 | PWR.cr1().modify(|w| w.set_lpr(true)); |
| 287 | } | 292 | } |
| 288 | 293 | ||
| 289 | let rtc = config.ls.init(); | ||
| 290 | |||
| 291 | config.mux.init(); | 294 | config.mux.init(); |
| 292 | 295 | ||
| 293 | set_clocks!( | 296 | set_clocks!( |
