STM32F401 / STM32F411 Black Pill Development Board — STM32F401CCU6 STM32F411CEU6

STM32F401 / STM32F411 Black Pill Development Board — STM32F401CCU6 / STM32F411CEU6

Compact "Black Pill" STM32 dev board. Fast Cortex-M4 MCU(s) with FPU, great for real-time projects, audio, sensors, robotics and compact IoT nodes. Choose STM32F401CCU6 or STM32F411CEU6 variants — check product photos / SKU.

Cortex-M4 (FPU) USB / ST-Link / Serial Compatible: Arduino Core for STM32, PlatformIO, STM32Cube Board: Black Pill

Why choose this board?

  • Powerful, low-cost Cortex-M4 development board for embedded projects
  • Small form-factor — great for compact prototypes & wearables
  • Supports Arduino Core for STM32, STM32CubeMX/HAL and PlatformIO
  • Works with ST-Link (external) or USB DFU/bootloader depending on variant

Specifications

MCU OptionsSTM32F401CCU6 (Cortex-M4, 84 MHz) or STM32F411CEU6 (Cortex-M4, 100 MHz) — variant dependent
CoreARM Cortex-M4 with FPU
Flash & RAMDepends on MCU variant (e.g. 128KB+ flash typical; check exact MCU datasheet)
InterfaceUSB (micro or Type-C depending on board), UART (Tx/Rx), SWD / ST-Link (external)
GPIOMultiple GPIOs, ADC, DAC (variant dependent), SPI, I2C, USART, TIMs
Operating Voltage3.3V
Form FactorBlack Pill standard

Item Specifics

BrandUnbranded / Generic
ModelBlack Pill — STM32F401 / STM32F411
MPNDoes Not Apply
MicrocontrollerSTM32F401CCU6 or STM32F411CEU6
ConditionNew
Compatible WithArduino IDE (STM32 core), PlatformIO, STM32CubeMX/HAL
Country/Region of ManufactureChina

Wiring & Flashing Notes

Tip: If you plan to use Arduino Core for STM32, install the STM32 boards package in the Arduino Boards Manager or use PlatformIO for easier multi-platform builds.

ST-Link / SWD Wiring & Flashing — Step-by-Step

These instructions show two safe ways to flash your Black Pill board: 1) ST-Link (SWD) — recommended, and 2) Serial / system bootloader (BOOT0) — fallback. Use ST-Link if available (fast, full debugging). Always power the board at 3.3V and never apply 5V to MCU pins.

A — Wiring: ST-Link V2 → Black Pill (SWD)

Typical ST-Link V2 pin names (adapt to your ST-Link clone): SWDIO, SWCLK, GND, 3.3V, NRST (optional).

ST-Link PinBlack Pill / STM32 Pin
3.3V (VTARGET)3.3V (Board VCC) — power target or verify external power
GNDGND
SWDIOPA13 (SWDIO) on STM32 — labelled SWDIO on many Black Pill headers
SWCLKPA14 (SWCLK) on STM32 — labelled SWCLK on many Black Pill headers
NRST (optional)NRST (Reset) — allows programmer to reset MCU during flashing

Notes: some Black Pill clones expose a 4- or 6-pin SWD header — match labels. If your ST-Link supplies power, you can power the board from ST-Link’s 3.3V; otherwise power the board separately but keep grounds common.

B — Flashing with STM32CubeProgrammer (GUI)

  1. Wire ST-Link as above and connect ST-Link to your PC via USB.
  2. Power the target board: either enable ST-Link target power (VTARGET) or supply the board externally (3.3V). Confirm GND common.
  3. Open STM32CubeProgrammer (download from ST if you don't have it).
  4. Click Connect → choose ST-LINK. The tool should show the connected device and device ID.
  5. Optional: Click Read Out Protection or check device info to confirm correct MCU (F401 / F411).
  6. Under Erasing & Programming, select your firmware file (BIN or HEX) and click Program. Enable Verify if you want.
  7. When programming finishes, click Run or reset the board — target will start executing the new firmware.

GUI tip: if the programmer fails to connect, double-check wiring (SWDIO / SWCLK / GND / 3.3V) and that BOOT0 is 0 (board boots from flash).

C — Flashing with STM32CubeProgrammer (CLI examples)

Example CLI commands (replace firmware.bin with your file):

STM32_Programmer_CLI -c port=SWD -w firmware.bin 0x08000000 -v
      

This connects via SWD, writes the binary at flash address 0x08000000, and verifies it. Use the full path to STM32_Programmer_CLI if it's not in your PATH.

D — PlatformIO / Arduino: upload via ST-Link

  1. In platformio.ini, set the upload protocol: upload_protocol = stlink (and the correct board). Example:
[env:blackpill_f401]
platform = ststm32
board = blackpill_f401
framework = arduino
upload_protocol = stlink
      

Then run pio run -t upload to build and flash via your connected ST-Link.


E — Fallback: Serial / System Bootloader (BOOT0) — use when no ST-Link

STM32 MCUs include a factory system bootloader that can accept firmware via UART. This method requires toggling BOOT0 pin to enter the system bootloader and a serial flasher (STM32CubeProgrammer or stm32flash).

  1. Locate BOOT0 pin on your board (often labelled BOOT0 or jumper pad).
  2. Put BOOT0 = 1 (connect BOOT0 to 3.3V) — this forces the MCU to boot from system memory on reset.
  3. Reset the board (toggle NRST or power cycle). MCU enters system bootloader and listens on UART (commonly USART1/USART2 depending on MCU/board).
  4. Connect USB-to-UART adapter to the appropriate UART pins (TX/RX). Match the board TX↔adapter RX and RX↔adapter TX. Set GND common.
  5. Open STM32CubeProgrammer and choose UART / Serial connection (select COM port and baud rate — 115200 is typical; check tool auto detect).
  6. Connect, then use the Erasing & Programming tab to upload your BIN file to 0x08000000. Click Start Programming.
  7. After programming, set BOOT0 = 0 (tie to GND), reset the board — it will boot your flashed firmware from flash memory.

Notes about serial bootloader: the exact UART (USART1/2) and baud supported varies by MCU and board wiring — if STM32CubeProgrammer cannot connect, consult your board pinout or use ST-Link instead.

F — DFU / USB Boot (if supported)

Some Black Pill variants with a USB connection and DFU support can be flashed using DFU mode — this depends on MCU variant and board wiring. If your board supports USB DFU:

  1. Set BOOT0 = 1 and reset to enter the built-in DFU (if supported).
  2. Use dfu-util or STM32CubeProgrammer (USB) to upload firmware.
  3. Return BOOT0 = 0 and reset after upload.

Important: USB DFU availability depends on MCU & board — ST-Link remains the most reliable method.

G — Common Troubleshooting

  • Programmer cannot connect: check wiring (VTARGET, GND, SWDIO, SWCLK), ensure BOOT0 = 0 for normal flash access.
  • Device ID not recognized: verify correct MCU variant (F401 vs F411) and power supply voltage (3.3V).
  • Stuck in bootloader after flashing: ensure BOOT0 is returned to 0 and reset the board.
  • Using external 3.3V power: always share common ground with ST-Link.
Safety & Final Notes:
  • Avoid 5V on MCU pins — Black Pill logic is 3.3V.
  • If unsure, use ST-Link to avoid manual BOOT0 fiddling.
  • Keep a copy of your working firmware and note the exact board variant to avoid flashing the wrong device.

Example Code — Arduino Core (Blink)

Click to expand — Arduino sketch (works with STM32 Arduino core)
// Blink example for STM32 (Black Pill)
// Select correct board & MCU in Arduino IDE / PlatformIO

const int LED_PIN = LED_BUILTIN; // often defined; otherwise use a known pin such as PC13

void setup() {
  pinMode(LED_PIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_PIN, HIGH);
  delay(250);
  digitalWrite(LED_PIN, LOW);
  delay(250);
}

Notes: In Arduino IDE choose the proper board package (STM32 boards by stm32duino or STMicro electronics core). LED_BUILTIN pin varies by board — check silkscreen or map to PC13/PA5 as appropriate.

Example Code — PlatformIO (Basic Serial & ADC)

Click to expand — PlatformIO (main.cpp)
// PlatformIO main.cpp example for STM32
#include <Arduino.h>

void setup() {
  Serial.begin(115200);
  while (!Serial) { delay(10); }
  Serial.println("STM32 Black Pill ready");
  pinMode(PC13, OUTPUT); // example LED pin (adjust per board)
}

void loop() {
  digitalWrite(PC13, HIGH);
  delay(500);
  digitalWrite(PC13, LOW);
  delay(500);
  int analogValue = analogRead(A0); // confirm ADC pin mapping for your board
  Serial.printf("ADC: %d\n", analogValue);
}

Notes: PlatformIO makes it easy to select the exact MCU (board = blackpill_f401 or similar). Check `platformio.ini` for framework and board settings.

Possible Uses

What’s Included

Shipping & Returns

Ships from UK. International shipping available via eBay Global Shipping Programme. 30-day returns accepted.