diff options
| author | Dario Nieuwenhuis <[email protected]> | 2025-03-28 12:20:24 +0000 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-03-28 12:20:24 +0000 |
| commit | bda7ba7b149b19f1cb67c5f664ceaa10f071dce7 (patch) | |
| tree | efd7368a107b8c11c6bcac5c3c8fa88e238b7862 | |
| parent | 502c188cf4c08a1acf9d7095e790e0b5d77d3702 (diff) | |
| parent | ce578b62b8ac7d1d4ad3a96e7a085e6f3c0722eb (diff) | |
Merge pull request #4019 from techmccat/main
stm32: allow using LSI/LSE as SYSCLK on g0/c0
| -rw-r--r-- | embassy-stm32/src/rcc/c0.rs | 10 | ||||
| -rw-r--r-- | embassy-stm32/src/rcc/g0.rs | 10 |
2 files changed, 16 insertions, 4 deletions
diff --git a/embassy-stm32/src/rcc/c0.rs b/embassy-stm32/src/rcc/c0.rs index 04cbe83ed..0b749bcff 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,16 @@ 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 => { | ||
| 131 | assert!(config.ls.lsi); | ||
| 132 | LSI_FREQ | ||
| 133 | } | ||
| 134 | Sysclk::LSE => unwrap!(config.ls.lse).frequency, | ||
| 127 | _ => unreachable!(), | 135 | _ => unreachable!(), |
| 128 | }; | 136 | }; |
| 129 | 137 | ||
| @@ -162,8 +170,6 @@ pub(crate) unsafe fn init(config: Config) { | |||
| 162 | RCC.cr().modify(|w| w.set_hsion(false)); | 170 | RCC.cr().modify(|w| w.set_hsion(false)); |
| 163 | } | 171 | } |
| 164 | 172 | ||
| 165 | let rtc = config.ls.init(); | ||
| 166 | |||
| 167 | config.mux.init(); | 173 | config.mux.init(); |
| 168 | 174 | ||
| 169 | set_clocks!( | 175 | set_clocks!( |
diff --git a/embassy-stm32/src/rcc/g0.rs b/embassy-stm32/src/rcc/g0.rs index f55b18290..2dbf62a9f 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,17 @@ 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 => { | ||
| 245 | assert!(config.ls.lsi); | ||
| 246 | LSI_FREQ | ||
| 247 | } | ||
| 248 | Sysclk::LSE => unwrap!(config.ls.lse).frequency, | ||
| 241 | _ => unreachable!(), | 249 | _ => unreachable!(), |
| 242 | }; | 250 | }; |
| 243 | 251 | ||
| @@ -286,8 +294,6 @@ pub(crate) unsafe fn init(config: Config) { | |||
| 286 | PWR.cr1().modify(|w| w.set_lpr(true)); | 294 | PWR.cr1().modify(|w| w.set_lpr(true)); |
| 287 | } | 295 | } |
| 288 | 296 | ||
| 289 | let rtc = config.ls.init(); | ||
| 290 | |||
| 291 | config.mux.init(); | 297 | config.mux.init(); |
| 292 | 298 | ||
| 293 | set_clocks!( | 299 | set_clocks!( |
