diff options
| author | Dario Nieuwenhuis <[email protected]> | 2024-05-21 22:06:24 +0000 |
|---|---|---|
| committer | GitHub <[email protected]> | 2024-05-21 22:06:24 +0000 |
| commit | 5ecc9b805d0c38768eb7d66bee7531585d69cbf9 (patch) | |
| tree | accb56c238b509f638e993c9021dad0530c213fd /embassy-stm32 | |
| parent | 9a4c4fe2c770b6881e0b93ff6d618b1fdf377a66 (diff) | |
| parent | 10ee1c1ae8cc7d1b561235c04b5dcc153b35e552 (diff) | |
Merge pull request #2829 from aurelj/stm32-rcc-hsi
stm32: ensure the core runs on HSI clock while setting up rcc
Diffstat (limited to 'embassy-stm32')
| -rw-r--r-- | embassy-stm32/src/rcc/f247.rs | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/embassy-stm32/src/rcc/f247.rs b/embassy-stm32/src/rcc/f247.rs index 555dd63a1..61f687d30 100644 --- a/embassy-stm32/src/rcc/f247.rs +++ b/embassy-stm32/src/rcc/f247.rs | |||
| @@ -146,17 +146,18 @@ pub(crate) unsafe fn init(config: Config) { | |||
| 146 | while !PWR.csr1().read().odswrdy() {} | 146 | while !PWR.csr1().read().odswrdy() {} |
| 147 | } | 147 | } |
| 148 | 148 | ||
| 149 | // Turn on the HSI | ||
| 150 | RCC.cr().modify(|w| w.set_hsion(true)); | ||
| 151 | while !RCC.cr().read().hsirdy() {} | ||
| 152 | |||
| 153 | // Use the HSI clock as system clock during the actual clock setup | ||
| 154 | RCC.cfgr().modify(|w| w.set_sw(Sysclk::HSI)); | ||
| 155 | while RCC.cfgr().read().sws() != Sysclk::HSI {} | ||
| 156 | |||
| 149 | // Configure HSI | 157 | // Configure HSI |
| 150 | let hsi = match config.hsi { | 158 | let hsi = match config.hsi { |
| 151 | false => { | 159 | false => None, |
| 152 | RCC.cr().modify(|w| w.set_hsion(false)); | 160 | true => Some(HSI_FREQ), |
| 153 | None | ||
| 154 | } | ||
| 155 | true => { | ||
| 156 | RCC.cr().modify(|w| w.set_hsion(true)); | ||
| 157 | while !RCC.cr().read().hsirdy() {} | ||
| 158 | Some(HSI_FREQ) | ||
| 159 | } | ||
| 160 | }; | 161 | }; |
| 161 | 162 | ||
| 162 | // Configure HSE | 163 | // Configure HSE |
| @@ -260,6 +261,11 @@ pub(crate) unsafe fn init(config: Config) { | |||
| 260 | }); | 261 | }); |
| 261 | while RCC.cfgr().read().sws() != config.sys {} | 262 | while RCC.cfgr().read().sws() != config.sys {} |
| 262 | 263 | ||
| 264 | // Disable HSI if not used | ||
| 265 | if !config.hsi { | ||
| 266 | RCC.cr().modify(|w| w.set_hsion(false)); | ||
| 267 | } | ||
| 268 | |||
| 263 | config.mux.init(); | 269 | config.mux.init(); |
| 264 | 270 | ||
| 265 | set_clocks!( | 271 | set_clocks!( |
