WeAct Black Pill STM32F411CE pinout
A tiny, low-cost STM32F411 board with USB-C. Fast (100 MHz), breadboard friendly, 3.3 V logic, and most pins tolerate 5 V.
The real app with a simulated WeAct Black Pill STM32F411CE, running in your browser. No install, nothing to plug in.
At a glance
- Chip
- STM32F411CE (STM32F411CEU6)
- Processor
- Arm Cortex-M4 with FPU at 100 MHz, 128 KB SRAM, 512 KB flash
- Logic level
- 3.3 V. Not 5 V tolerant unless marked below.
- Flashing tool
- STM32CubeProgrammer, stlink or dfu-util
- Arduino board (FQBN)
- STMicroelectronics:stm32:GenF4:pnum=BLACKPILL_F411CE,usb=CDCgen,upload_method=dfuMethod
- Live pin view in BoardPilot
- Yes (diagnostic agent available)
Pins to avoid or use with care
Strapping pins: B2
Their level at reset changes how the board boots. Usually fine after boot.
Native USB: A11, A12
The USB data lines. Using them breaks USB uploads and the serial monitor.
Debug port: SCK, DIO
SWD/JTAG. Using them can stop a debugger from reaching the chip.
Used on the board: A0, C15, C14
Already connected to something on the board (see the notes in the table).
Good pins for LEDs, buttons and signals
B12, B13, B14, B15, A8, B10, B0, B1, B8, B9, A15
Default pins in Arduino
- I2C
- SDA = B7, SCL = B6. Only these pins work with the Wire library defaults. Wire uses PB7 for SDA and PB6 for SCL. Only specific STM32 pin pairs can do I2C (for example PB9/PB8 with Wire.setSDA/setSCL).
- SPI
- MOSI = A7, MISO = A6, SCK = A5, CS = A4.
- Analog inputs
- A1, A2, A3, B0, B1, A4, A5, A6, A7, A0 (0–3.3 V)
- 5 V tolerant pins
- B10, B2, B1, B0, A7, A6, A5, A4, A3, A2, A1, C15, C14, C13, B12, B13, B14, B15, A8, A9, A10, A11, A12, A15, B3, B4, B6, B7, B8, B9, SCK, DIO
How to flash it
To upload over USB, hold BOOT0, press and release NRST, then release BOOT0 (DFU mode). An ST-LINK on the SWD pins also works.
All 44 pins
| Pin | GPIO | Chip pin | Functions | Notes |
|---|---|---|---|---|
| 5V | — | 5 V from USB-C (after a protection diode). Can also power the board. | ||
| G | — | |||
| 3V3 | — | 3.3 V output for sensors. | ||
| B10 | 26 | GPIO, I2C2_SCL, SPI2_SCK, TIM2_CH3, PWM | ||
| B2 | 18 | GPIO, BOOT1 | BOOT1 (10 kohm to GND on the board). Only matters when BOOT0 is held at reset. | |
| B1 | 17 | GPIO, ADC1_IN9, TIM3_CH4, TIM1_CH3N, PWM | 5 V tolerant only as a digital input. As an analog input keep it between 0 and 3.3 V. | |
| B0 | 16 | GPIO, ADC1_IN8, TIM3_CH3, TIM1_CH2N, PWM | 5 V tolerant only as a digital input. As an analog input keep it between 0 and 3.3 V. | |
| A7 | 7 | GPIO, ADC1_IN7, SPI_MOSI (default), SPI1_MOSI, TIM1_CH1N, TIM3_CH2, PWM | Also wired to the empty SPI flash footprint U3 on the back (only matters if you solder a flash chip). 5 V tolerant only as a digital input. As an analog input keep it between 0 and 3.3 V. | |
| A6 | 6 | GPIO, ADC1_IN6, SPI_MISO (default), SPI1_MISO, TIM3_CH1, PWM | Also wired to the empty SPI flash footprint U3 on the back (only matters if you solder a flash chip). 5 V tolerant only as a digital input. As an analog input keep it between 0 and 3.3 V. | |
| A5 | 5 | GPIO, ADC1_IN5, SPI_SCK (default), SPI1_SCK, TIM2_CH1, PWM | Also wired to the empty SPI flash footprint U3 on the back (only matters if you solder a flash chip). 5 V tolerant only as a digital input. As an analog input keep it between 0 and 3.3 V. | |
| A4 | 4 | GPIO, ADC1_IN4, SPI_CS (default), SPI1_NSS, SPI3_NSS | Also wired to the empty SPI flash footprint U3 on the back (only matters if you solder a flash chip). 5 V tolerant only as a digital input. As an analog input keep it between 0 and 3.3 V. | |
| A3 | 3 | GPIO, ADC1_IN3, UART2_RX, TIM2_CH4, TIM5_CH4, TIM9_CH2, PWM | 5 V tolerant only as a digital input. As an analog input keep it between 0 and 3.3 V. | |
| A2 | 2 | GPIO, ADC1_IN2, UART2_TX, TIM2_CH3, TIM5_CH3, TIM9_CH1, PWM | 5 V tolerant only as a digital input. As an analog input keep it between 0 and 3.3 V. | |
| A1 | 1 | GPIO, ADC1_IN1, TIM2_CH2, TIM5_CH2, UART2_RTS, PWM | 5 V tolerant only as a digital input. As an analog input keep it between 0 and 3.3 V. | |
| A0 | 0 | GPIO, ADC1_IN0, TIM2_CH1, TIM5_CH1, UART2_CTS, WKUP, PWM | KEY button is on this pin (to GND through 330 ohm): use INPUT_PULLUP, pressed = LOW. Not 5 V tolerant. | |
| R | — | Reset: connect to GND to restart the board (same as the NRST button). | ||
| C15 | 47 | GPIO, OSC32_OUT | 32.768 kHz crystal pin. Leave it free. | |
| C14 | 46 | GPIO, OSC32_IN | 32.768 kHz crystal pin. Leave it free. | |
| C13 | 45 | GPIO, RTC_OUT | Blue onboard LED, active LOW (LOW = on). Weak pin: do not drive other loads from it. | |
| VB | — | Input for a backup battery that keeps the RTC running. Gives no power. | ||
| B12 | 28 | GPIO, SPI2_NSS, TIM1_BKIN | ||
| B13 | 29 | GPIO, SPI2_SCK, TIM1_CH1N, PWM | ||
| B14 | 30 | GPIO, SPI2_MISO, TIM1_CH2N, PWM | ||
| B15 | 31 | GPIO, SPI2_MOSI, TIM1_CH3N, PWM | ||
| A8 | 8 | GPIO, TIM1_CH1, I2C3_SCL, UART1_CK, MCO1, PWM | ||
| A9 | 9 | GPIO, UART1_TX, TIM1_CH2, USB_VBUS, PWM | ||
| A10 | 10 | GPIO, UART1_RX, TIM1_CH3, USB_ID, PWM | ||
| A11 | 11 | GPIO, USB_DM, UART1_CTS, UART6_TX, TIM1_CH4, PWM | USB D- to the USB-C port. Used for USB serial and upload. | |
| A12 | 12 | GPIO, USB_DP, UART1_RTS, UART6_RX, TIM1_ETR | USB D+ to the USB-C port. Used for USB serial and upload. | |
| A15 | 15 | GPIO, JTDI, TIM2_CH1, SPI1_NSS, SPI3_NSS, PWM | JTAG JTDI after reset; works as a normal pin in Arduino. | |
| B3 | 19 | GPIO, SWO, TIM2_CH2, SPI1_SCK, SPI3_SCK, I2C2_SDA, PWM | JTAG SWO after reset; works as a normal pin in Arduino. | |
| B4 | 20 | GPIO, TIM3_CH1, SPI1_MISO, SPI3_MISO, I2C3_SDA, PWM | JTAG NJTRST after reset; works as a normal pin in Arduino. | |
| B5 | 21 | GPIO, TIM3_CH2, SPI1_MOSI, SPI3_MOSI, PWM | Not 5 V tolerant on the F411 (keep it at 3.3 V or below). | |
| B6 | 22 | GPIO, I2C_SCL (default), I2C1_SCL, UART1_TX, TIM4_CH1, PWM | ||
| B7 | 23 | GPIO, I2C_SDA (default), I2C1_SDA, UART1_RX, TIM4_CH2, PWM | ||
| B8 | 24 | GPIO, I2C1_SCL, TIM4_CH3, TIM10_CH1, PWM | ||
| B9 | 25 | GPIO, I2C1_SDA, TIM4_CH4, TIM11_CH1, SPI2_NSS, PWM | ||
| 5V | — | Same 5 V rail as the other 5V pin. | ||
| G | — | |||
| 3V3 | — | Same 3.3 V rail as the other 3V3 pin. | ||
| GND | — | |||
| SCK | 14 | GPIO, SWCLK | SWD debug clock (SWCLK). Leave it free if you use an ST-LINK. | |
| DIO | 13 | GPIO, SWDIO | SWD debug data (SWDIO). Leave it free if you use an ST-LINK. | |
| 3V3 | — | 3.3 V on the SWD header (same rail as 3V3). |
Questions
Which pins are I2C on the WeAct Black Pill STM32F411CE?
SDA is B7 and SCL is B6 (the defaults of the Arduino Wire library). Only certain pins support I2C in hardware, so use these unless you know your core allows others.
Which WeAct Black Pill STM32F411CE pins should I avoid?
A11, A12 (native USB); SCK, DIO (debug port); A0, C15, C14 (used on the board).
Is the WeAct Black Pill STM32F411CE 5 V tolerant?
The chip runs at 3.3 V, but these pins tolerate 5 V inputs: B10, B2, B1, B0, A7, A6, A5, A4, A3, A2, A1, C15, C14, C13, B12, B13, B14, B15, A8, A9, A10, A11, A12, A15, B3, B4, B6, B7, B8, B9, SCK, DIO. The others take at most 3.3 V.
Which pins can read analog voltage on the WeAct Black Pill STM32F411CE?
A1, A2, A3, B0, B1, A4, A5, A6, A7, A0, from 0 to 3.3 V.
How do I upload code to the WeAct Black Pill STM32F411CE?
In the Arduino IDE pick the board STMicroelectronics:stm32:GenF4:pnum=BLACKPILL_F411CE,usb=CDCgen,upload_method=dfuMethod (core STMicroelectronics:stm32). To upload over USB, hold BOOT0, press and release NRST, then release BOOT0 (DFU mode). An ST-LINK on the SWD pins also works.
Wiring guides for the WeAct Black Pill STM32F411CE
Step-by-step wiring, voltage checks and test code for the most used parts:
BME280 BMP280 DHT22 DHT11 HC-SR04 SSD1306 OLED MPU6050 DS18B20 WS2812B LED strip SG90 servo Relay module HC-SR501 PIR LCD 1602 I2C INA219 VL53L0X BH1750 MAX30102 RC522 RFID NEO-6M GPS Capacitive soil moisture sensor ADS1115 TM1637 28BYJ-48 stepper L298N Potentiometer Push button LED Joystick module SD card module AHT20
Compare
WeAct Black Pill STM32F411CE vs Raspberry Pi Pico NUCLEO-F401RE vs WeAct Black Pill STM32F411CE
Learn the basics
Lesson: What is a microcontroller? Lesson: Hardware basics for software developers Lesson: GPIO: pins in and out Pinout GPIO Logic level (HIGH and LOW) JTAG and SWD Debugger
Check your wiring with BoardPilot
BoardPilot shows this board in 3D, flags risky pins as you wire, and flashes it safely with a backup first.
Download BoardPilotSources
- WeAct MiniF4x1Cx V3.1 Board Shape, Top view: 52.81 x 20.78 mm, rows 15.22 mm apart, pin order, SWD header
- WeAct MiniF4x1Cx V3.1 schematic, Headers P1/P2/P3, KEY (PA0, 330R), BOOT0/PB2 pull-downs, LED PC13 active low, Y1 32.768 kHz, Y2 25 MHz, USB-C PA11/PA12, U3 flash footprint PA4-PA7
- ST STM32F411xC/xE datasheet DS10314 (DocID026289 Rev 7), Table 8 pin definitions: FT pins, PA0 and PB5 are TC; ADC1_IN channels
- stm32duino Arduino_Core_STM32, variants/STM32F4xx/F411C(C-E)(U-Y)/variant_BLACKPILL_F411CE.h (PIN_WIRE_SDA PB7, PIN_WIRE_SCL PB6, SPI PA7/PA6/PA5/PA4, LED PC13, USER_BTN PA0); boards.txt GenF4; platform.txt USB ids
- ST STM32F411xC/xE datasheet DS10314, Table 9 Alternate function mapping (AF numbers in pin af)
- Board data file and source notes on GitHub