You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Developing on an STM32F446 device, I've been seeing a 50/50 chance of the bus enable() function hanging waiting for the core soft reset to complete. It sits stuck in the loop in bus.rs:437. This happens at least 50% of the time, and it doesn't matter if the code being flashed is the same or not.
There are a number of folks complaining about similar issues around the internet, with varying causes noted:
I have confirmed that the HSE is stable and configured correctly. I am using the f446 nucleo board, which has an on-board 8MHz external oscillator signal passed through from the st-link. My clocks are configured using the stm32f4xx-hal package's code like so:
let clocks = rcc
.constrain().cfgr.use_hse(8.MHz()).bypass_hse_oscillator().sysclk(168.MHz()).require_pll48clk().pclk1(42.MHz()).pclk2(84.MHz()).sai1_clk(49_142_857.Hz()).freeze();
One consistent message in a few others' experience is that the otg core seems to need to have interrupts unmasked internally to function correctly, and that needs to happen early. This aligns with the programming model in RM0390, section 31.16.1:
I've given this a hacky go by doing the following before any other USB initialisation code:
Developing on an STM32F446 device, I've been seeing a 50/50 chance of the bus
enable()
function hanging waiting for the core soft reset to complete. It sits stuck in the loop in bus.rs:437. This happens at least 50% of the time, and it doesn't matter if the code being flashed is the same or not.There are a number of folks complaining about similar issues around the internet, with varying causes noted:
... and more.
I have confirmed that the HSE is stable and configured correctly. I am using the f446 nucleo board, which has an on-board 8MHz external oscillator signal passed through from the st-link. My clocks are configured using the
stm32f4xx-hal
package's code like so:One consistent message in a few others' experience is that the otg core seems to need to have interrupts unmasked internally to function correctly, and that needs to happen early. This aligns with the programming model in RM0390, section 31.16.1:
I've given this a hacky go by doing the following before any other USB initialisation code:
I can't 100% confirm this works, but I have yet to see another stall waiting for the core soft reset to clear.
The text was updated successfully, but these errors were encountered: