stm32: ensure the core runs on HSI clock while setting up rcc
This commit is contained in:
parent
bd13b5c060
commit
10ee1c1ae8
1 changed files with 15 additions and 9 deletions
|
@ -146,17 +146,18 @@ pub(crate) unsafe fn init(config: Config) {
|
|||
while !PWR.csr1().read().odswrdy() {}
|
||||
}
|
||||
|
||||
// Turn on the HSI
|
||||
RCC.cr().modify(|w| w.set_hsion(true));
|
||||
while !RCC.cr().read().hsirdy() {}
|
||||
|
||||
// Use the HSI clock as system clock during the actual clock setup
|
||||
RCC.cfgr().modify(|w| w.set_sw(Sysclk::HSI));
|
||||
while RCC.cfgr().read().sws() != Sysclk::HSI {}
|
||||
|
||||
// Configure HSI
|
||||
let hsi = match config.hsi {
|
||||
false => {
|
||||
RCC.cr().modify(|w| w.set_hsion(false));
|
||||
None
|
||||
}
|
||||
true => {
|
||||
RCC.cr().modify(|w| w.set_hsion(true));
|
||||
while !RCC.cr().read().hsirdy() {}
|
||||
Some(HSI_FREQ)
|
||||
}
|
||||
false => None,
|
||||
true => Some(HSI_FREQ),
|
||||
};
|
||||
|
||||
// Configure HSE
|
||||
|
@ -260,6 +261,11 @@ pub(crate) unsafe fn init(config: Config) {
|
|||
});
|
||||
while RCC.cfgr().read().sws() != config.sys {}
|
||||
|
||||
// Disable HSI if not used
|
||||
if !config.hsi {
|
||||
RCC.cr().modify(|w| w.set_hsion(false));
|
||||
}
|
||||
|
||||
config.mux.init();
|
||||
|
||||
set_clocks!(
|
||||
|
|
Loading…
Reference in a new issue