2025-06-02 4:27 AM
I've designed my first custom board using the STM32F412 microcontroller. I'm currently facing issues trying to flash the firmware via USB and USART boot modes, but nothing seems to be working.
Here’s a summary of what I’ve tried and observed:
Boot0 is pulled high, RESET is toggled manually.
Tried both USB (DFU mode) and USART (USART2) flashing methods using STM32CubeProgrammer — no success.
Verified power supply: VDD, VDDA, and VCAP voltages are as expected.
Crystal (HSE) doesn't seem to be oscillating — no signal observed on the crystal pins using an oscilloscope.
At this point, I suspect it could be a hardware issue (clock or pin config), but I’d really appreciate help on how to debug this further.
What’s the best way to confirm if the HSE is working?
Any tips to verify if the chip is actually entering system bootloader mode?
2025-06-02 4:51 AM - edited 2025-06-02 4:51 AM
Hello @Strombeaker and welcome to the community,
May be you need to share your schematics so others can help you efficiently.
2025-06-02 4:52 AM
Welcome to the forum.
@Strombeaker wrote:custom board using the STM32F412 ... I suspect it could be a hardware issue (clock or pin config)
So please post your schematic, and your setup code - see How to write your question to maximize your chances to find a solution
2025-06-02 5:50 AM
HSE doesn't need to work to connect to the chip. Connecting over SWD is the best method.
Double check wiring, show pictures, show schematic.
2025-06-02 11:15 PM
This is the schematic. The boot pin side is not labeled, but I have added a switch to toggle it between low and high. I have also manually connected the RST pin to GND via a switch and added a 4.7 µF capacitor on the VCAP pin. Still, I am not sure why it is not booting via system bootloader, either through USB or USART.
2025-06-03 6:27 AM
Mandatory:
VDDA needs connected to VDD.
VCAP needs a 4.7 uF capacitor to ground.
Recommended:
BOOT0 should be tied or pulled to ground so user code starts.
NRST should have a 0.1 uF cap to ground so noise doesn't cause spurious resets.