The MCU you see above is know as the "Blue-Pill" , it belongs to the STM32 family.

To put it in simple terms.... its a bit like an Arduino on steroids.

STM32F103 Specs :-

  1.  ARM®Cortex®-M3 32-bit RISC core operating at a 72 MHz frequency,
  2. Flash memory up to 128 Kbytes and
  3. SRAM up to 20 Kbytes
  4. 26/37/51/80 I/Os, all mappable on 16 external interrupt vectors and almost all 5 V-tolerant
  5. 2x APB buses. 
  6. 7-channel DMA controller
  7. 2x 12-bit ADCs,
  8. 3x 16-bit timers, each with up to 4 IC/OC/PWM or pulse counter and quadrature (incremental) encoder input
  9. 2x  I2Cs and SPIs,
  10. 3xUSARTs,
  11. 1 USB 2 bus
  12. 1 CAN bus
  13. Serial wire debug (SWD) & JTAG interfaces

The STM32 sits in-between the Arduino and ESP32 Microprocessors (leans more towards the Arduino roughly, without the ESP32's Bluetooth and wifi).

The Generic STM32's can be picked up for a very low price, however getting a good one from the rabbit warren of vendors is a nightmare as there are many traps for the uninitiated.

The easiest way to program the STM32 is by using a ST-Link v2 programming dongle


Its a simple case of wiring up the 4 pins of the dongle  3.3V, 0V, SWCLK and SWDIO to the corresponding pins of the STM32.

Head over to the STMicroelectronis site. Here is a plethora or tools and development aids.

(Tip .... I found creating a user account simplifies downloading of the software).

To get up and running a good general starting point is to use the STM32 CUBE Programmer

Which will give quite a bit of control over Up/down loading its contents etcetera.

Along with this there is quite an interesting Software development package which is used to setup the barebones structure of the code  STM32CubeMX

Very graphical ... similar to FPGA style programming, after this a code project can be generated.

The project code can then be opened with your favorite "C/C++" IDE (even Eclipse after installing the Arm cortex software via "Help" pull down).

You can also plump for the STMicroElectronics STM32Cube IDE

The Toolchain is a bit long winded when you use the official "STM way"... I guess they have to cover all bases.

.............. however there is an easier Toolchain to program the STM32 which will follow in part_00x of this series..... enter the Arduino IDE

STM32F103C8T6 Blue Pill Pin Configuration


Pin Name



3.3V, 5V, GND

  • 3.3V – Regulated output voltage from the onboard regulator (drawing current is not recommended), can also be used to supply the chip.
  • 5V from USB or onboard regulator can be used to supply the onboard 3.3V regulator.
  • GND – Ground pins

Analog Pins

PA0 – PA7

PB0 – PB1

Pins act as ADCs with 12-bit resolution

Input/output pins

PA0 – PA15

PB0 – PB15

PC13 – PC15

37 General-purpose I/O pins.


TX1, RX1

TX2, RX2

TX3, RX3

UART with RTS and CTS pins

External interrupts

PA0 – PA15

PB0 – PB15

PC13 – PC15

All digital pins have interrupt capability


PA0 – PA3

PA6 – PA10

PB0 - PB1

PB6 – PB9

15 PWM pins total





Inbuilt LED


LED to act as a general-purpose GPIO indicator




Inter-Integrated Circuit communication ports



CAN bus ports