The Blue Pill (STM32) can be bought very cheaply on sites like eBay and Aliexpress, but they likely do not come shipped with a USB bootloader. You are then forced to use a USB to Serial/USB to TTL to interface with the BLue Pill, and that can be a nuisance sometimes, especially since you have to change the
BOOT0 pin from
1 to upload, and then the reverse to run a sketch.
This post will show you how to upload a new bootloader to the Blue Pill and upload sketches over USB with PlatformIO in Windows.
You will need a few things to get up and running:
- Blue Pill board
- USB to Serial/USB to TTL adapter
- Jumper cables for connecting
- Micro USB cable
- STM32 Flash loader demonstrator
- USB Maple serial drivers. Clone/download this repo.
- Proper bootloader
To get the proper bootloader for your Blue Pill, read the pin number for the built-in LED of the board. The following example picture has its LED on pin
Then nagivate to Roger Clark's STM32duino-bootloader repo and download the appropriate
.bin bootloader file that corresponds to your Blue Pill's LED pin. Since the example picture's LED pin is
PC13, I would download
For the USB Maple serial driver, navigate to the
drivers\win folder and run the
install_drivers.bat batch file. The drivers will automatically install. Approve any Administrator requests.
Preparing the Blue Pill for flashing
Connect the USB to Serial/USB to TTL adapter to your PC and the Blue Pill. The reference pins are:
|Adapter Pin||Blue Pill Pin|
Move the jumper on
1. Hit the
Here's a reference pinout diagram.
Your PC should recognize the USB serial device. To double-check, you can open up Device Manager and looking for the device under "Ports".
Flash the bootloader
Open the Demonstrator GUI. Make sure the right
COM port is selected.
Select "Next" The following screen should indicate that the
Target is readable. If not, reset the Blue Pill again. Check your connections. Proceed to the next screen, where you'll see the the available pages for flashing. Proceed to the next screen.
Download to Device radio button, and select the proper bootloader
Then select "Next" to flash the bootloader.
Once done, close out of the program.
IMPORTANT: Before powering off the Blue Pill, return the
BOOT0 jumper to
Then you're finished! Disconnect the USB to Serial/USB to TTL adapter, and connect the Blue Pill with a Micro USB cable. You should see the serial device in Device Manager:
Uploading Sketches with PlatformIO
You can create a new PlatformIO project for the Blue Pill by selecting the proper board during project creation:
For a new project or an existing project, ensure you have the proper
[env:bluepill_f103c8] platform = ststm32 board = bluepill_f103c8 framework = arduino upload_port = COM8 upload_protocol = dfu
The most important entry is
upload_protocol = dfu. PlatformIO will attempt to place the Blue Pill in DFU mode to upload the sketch, and then reset it.
If the upload process halts when "searching for DFU devices", you may need to manually reset the Blue Pill to upload the sketch.
Using PA11 and PA12
PA11 and PA12 are used for USB serial communication. They cannot be immediately used for regular pin interactions like IO, especially the PWM pin on PA11. To enable this functionality, we can disable USB serial by opening
usb_serial.cpp found in
Then comment out everything inside
Resetting the Blue Pill via USB will no longer work and will require a manual reset.