Bluepill board

Support for the stm32f103c8 based bluepill board.

Overview

The bluepill is an STM32F103 based board which can be bought for around 2€ on sides like AliExpress, eBay and others. Although the STM32F130C8 MCU nominally has 64 KB flash, most actually have 128 KB flash.

Hardware

MCU

MCU STM32F103C8
Family ARM Cortex-M3
Vendor STMicroelectronics
RAM 20 KB
Flash 64 KB / 128 KB
Frequency up to 72 MHz
Timer 3x 16-Bit
ADC 2x 12-bit, 10 channels
UART 3
SPI 2
I2C 2
CAN 1
Vcc 2.0 to 3.6 V
Datasheet Datasheet

MCU

MCU STM32F103C8
Family ARM Cortex-M3
Vendor STMicroelectronics
RAM 20 KB
Flash 64 KB / 128 KB
Frequency up to 72 MHz
Timer 3x 16-Bit
ADC 2x 12-bit, 10 channels
UART 3
SPI 2
I2C 2
CAN 1
Vcc 2.0 to 3.6 V
Datasheet Datasheet

Implementation Status

ID Supported
GPIO yes
PWM yes
UART yes
ADC yes
I2C no
SPI yes
USB no
Timer yes
CAN no

Flashing

To program and debug the board you need a SWD capable debugger. The easiest way is using OpenOCD. If you have OpenOCD installed, you can flash the device with:

Additional Flash

To make use of the entire 128 KB flash, compile your application with:

This sets the CPU_MODEL make variable to stm32f103cb, the default value is stm32f103c8. These two CPU models basically only have one major difference, the latter has 128 KB flash while the former has 64 KB. You may also set STM32F103C8_FLASH_HACK as environment variable.

If you want to flash a binary compiled this way you either need to figure out how to adjust the OpenOCD configuration to make it use 128 KB flash or use this stlink fork which has a patch to make use of the entire 128 KB flash using:

Additional Flash

To make use of the entire 128 KB flash, compile your application with:

This sets the CPU_MODEL make variable to stm32f103cb, the default value is stm32f103c8. These two CPU models basically only have one major difference, the latter has 128 KB flash while the former has 64 KB. You may also set STM32F103C8_FLASH_HACK as environment variable.

If you want to flash a binary compiled this way you either need to figure out how to adjust the OpenOCD configuration to make it use 128 KB flash or use this stlink fork which has a patch to make use of the entire 128 KB flash using:

Connecting via Serial

The default UART port used is UART2, which uses pins A2 (TX) and A3 (RX). To use it, configure your UART to operate at a baudrate of 115200/8N1.

Using PWM

PWM is available at pins A8 to A11.

Known Issues

USB connector

The Micro-USB port is sometimes not soldered properly. Also, it is usually equipped with an incorrect resistor. This can be fixed multiple ways.

Flashing abortion

Some boards have problems to flash on the first try. It may help, to press the reset-button, start the flashing and release it while doing so.

USB connector

The Micro-USB port is sometimes not soldered properly. Also, it is usually equipped with an incorrect resistor. This can be fixed multiple ways.

Flashing abortion

Some boards have problems to flash on the first try. It may help, to press the reset-button, start the flashing and release it while doing so.

Where to buy

The board is sold under different names. On some sites it is called bluepill or blue pill. On others you might find it by searching for stm32f103c8 or stm32f103c8t6.

Try eBay or AliExpress.

Further reading

http://wiki.stm32duino.com/index.php?title=Blue_Pill http://wiki.stm32duino.com/index.php?title=Maple_Mini#Clones http://www.st.com/content/st_com/en/products/microcontrollers/stm32-32-bit- arm-cortex-mcus/stm32-mainstream-mcus/stm32f1-series/stm32f103/stm32f103c8.html

eet/33/d4/6f/1d/df/0b/4c/6d/CD00161566.pdf/files/CD00161566.pdf/jcr:content/tran slations/en.CD00161566.pdf

STM32_Blue_Pill_top.jpg