2026-05-07 8:43 PM - last edited on 2026-05-11 4:55 AM by mƎALLEm
Hi,
As per title I am unable to enter the System Memory bootloader when using the STM32C071FBP6N. Any assistance would be greatly appreciated.
Following the notes in AN2606, i have configured pattern 11 (line 2) using the CubeProgrammer but when completing the reset with the Boot0 pin high it does not enter the bootloader mode and can tell this because my user application runs immediately after the reset occurs.
I have been able to jump to the bootloader through my own firmware where I initialize the HAL and GPIOs and then check the status of the boot0 or other pins then manually change the PC and SP but wish to avoid this method as this should not be necessary.
-------
I have followed the steps below:
1. Using a ST-Link I have successfully changed the option bits nBOOT_SEL=0; nBOOT1=1; nBOOT1=1; BOOT_LOCK=0 using the CubeProgrammer and have also flashed a basic UART output program which outputs to USART2 the whether the PA14/BOOT0/PA15 is high or low.
2. disconnect the ST-Link (since it interferes with the BOOT0 pin of this chip)
3. Set the BOOT0 pin high and then set nRST low then high
At this point i still see my application code running and output to the UART saying the PA14/BOOT0/PA15 is high
note: I am using minicom to read the UART and I have 'read' the option bit configurations to ensure they are properly saved on the device; Hardware-wise I am using a 10k Ohm pulldown resistor for the BOOT0 pin
2026-05-07 9:12 PM
Any additional debugging ideas would also be great
2026-05-11 3:50 AM
Hello @NotThomasEdison
I attempted to boot the device into the system bootloader using a Nucleo board, and the boot sequence works as expected on my setup.
Please take a look to the schematic of NUCLEO-C071RB
2026-05-11 4:28 AM
What do you use for setting BOOT0 high? A mechanical switch?
Do you see any difference whether you set nRST low and high, or if you power cycle the microcontroller?
2026-05-11 6:09 AM
@EThom.3 wrote:
What do you use for setting BOOT0 high? A mechanical switch?
I used the boot mode button which set the pin BOOT0 to high.
I click on boot mode button to set BOOT0 pin high then click on reset button.
2026-05-11 6:16 AM
> I click on boot mode button to set BOOT0 pin high then click on reset button.
Ah! I had missed that you were using a Nucleo board. Sorry.
Try holding the boot mode button pressed while you click the reset button. If you click and release the boot button before you press the reset button, the BOOT0 pin will no longer be high when you reset.
2026-05-11 8:07 AM
@EThom.3 wrote:Try holding the boot mode button pressed while you click the reset button. If you click and release the boot button before you press the reset button, the BOOT0 pin will no longer be high when you reset.
That is exactly what I did. Sorry for not explaining it clearly in my previous comment. I kept the Boot mode button pressed to keep BOOT0 high, then pressed the Reset button.
2026-05-11 8:12 AM
Hi @Saket_Om
I'm clearly not firing on all cylinders today. :face_with_tears_of_joy:
I was trying to figure out if @NotThomasEdison remembered to hold the BOOT0 button while pressing the Reset button. Didn't realise that I was communicating with you instead.
I should probably log off and call it the day.
2026-05-11 8:36 AM
“What do you use for setting BOOT0 high? A mechanical switch?”
I am using a separate microprocessor to electronically (via 3V3 gpio) to pull the nRST and BOOT0 values high/low rather than using a button system.
While the nRST is low my application code does seem to stop (whether the BOOT0 pin is high or low) and as soon as the nRST is high it starts the application code again.
I haven’t tried power cycling it yet but will give it a try in the next 24hrs!
2026-05-11 8:55 AM
> While the nRST is low my application code does seem to stop (whether the BOOT0 pin is high or low)
At least that's good.
> and as soon as the nRST is high it starts the application code again.
And do you keep the BOOT0 pin low while nRST goes high? That is where it matters.
It doesn't matter what logic level you have on BOOT0 while nRST goes low. It is when nRST it goes high that the microcontroller can "decide" to start the bootloader.