“Generic STM32” boards

This page contains my experiences with generic STM32 boards.

Generic STM32F103C boards

From Banggood:

Banggood STM32F103C FrontBanggood STM32F103C Back

From AliExpress:

AliExpress STM32C103 backAliExpress STM32C103 back

The only difference between them seems to be that the USB connector on the Banggood board is soldered a little more robust.

The boards are what the stm32duino forum calls “blue pills“, except for the USB connector differences and the voltage regulator. On both my boards the U1 voltage regulator has “DE=A10” printed on them, which if I’m correct would make them RT9013-33PB 500mA 5v -> 3v3 LDO regulators. The usb pull-up resistor from PA12 to 3v3 is 10k.

The CPU is a STM32F103C8T6 in an LQFP48 package:

This schematic from vcc-gnd.com is almost the same as the Blue Pill boards, except for the R10 usb pull-up resistor.

Board Pinout

I’ve made a nice little stm32f103 pinout diagram in pdf format:

The Generic STM32F103 Pinout Diagram

Running Arduino on the Boards

Running Arduino on the boards is supported, but they don’t ship with a bootloader, only a small test program that flashes the PC13 LED.

To install Arduino support for the STM32 boards, follow Roger Clarks Arduino installation guide.

Using a serial connection, a program or a usb bootloader can be transferred to the board.

Connect A9/A10 on the board to RX/TX on a USB-to-Serial converter (i.e. FTDI232). If the converter supplies 3V3on Vcc, connect that to 3V3 on the board, if it supplies 5V, connect that to 5V on the board. Connect GND on the convert to GND on the board:

STM32F103 serial connection

To upload a program (from a Mac, but Linux/Windows should be similar), do the following in the Arduino IDE :

  • Choose board type: “Generic STM32F103C Series”
  • Choose upload method: “Serial”
  • Choose port, i.e.: “/dev/cu.usbserial-A50285BI”
  • Move the boot0 jumper (the one closest to B11 / B10) from 0 to 1
  • Reset board (push reset)
  • Upload

To upload a bootloader, so programs can be transferred via usb, use the above settings, and then:

  • cd Arduino
  • git clone https://github.com/rogerclarkmelbourne/STM32duino-bootloader.git
  • hardware/Arduino_STM32/tools/macosx/stm32flash/stm32flash -w STM32duino-bootloader/STM32F1/binaries/generic_boot20_pc13.bin /dev/cu.usbserial-A50285BI
  • Disconnect USB-to-serial
  • Move boot jumper from 1 to 0The bootloader is now uploaded and ready. To upload via the bootloader:
  • Connect via USB directly
  • Board now flashes PC13 LED 6 times quickly, then continues flashing slowly indicating the boot loader waits for a program.
  • Choose Upload method: “STM32duino bootloader”
  • Upload program
  • Reset (på board switch eller vha. Arduino_STM32/tools/macosx/upload-reset /dev/cu.usbmodem1421)

See github.com/rogerclarkmelbourne/STM32duino-bootloader for more information on the bootloader.

Generic STM32F411 boards

A STM32F411 pinout diagram I made, in pdf format: