Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
how to install MicroPython on cheap STM32F4xx boards ("black pill", "black F407")

Installing MicroPython on inexpensive STM32F4xx boards

This tutorial will explain step by step how to build and deploy MicroPython on STM32F407xx and STM32F411CEU boards, using both DFU mode over USB, as well as SWD with ST-Link and OpenOCD in case you can't get the board into DFU mode (happened to me with the "black pill").

It should be applicable to other boards, such as the other "black pill" STM32F401, Nucleo boards etc., provided you can find an appropriate board definition to build.

1. clone the MicroPython repo:

git clone

2. build submodules

in micropython/ports/stm32 folder:

make submodules

(this will take a while, as it will built the necessary STM32 pieces of code)

3. build mpy-cross

in micropython/ folder:

make -C mpy-cross

(this will take a while, as it will build the necessary cross compiler code)

4. clone the board repo:

in micropython/ports/stm32/boards folder:

  • STM32F407xxx 'black tile'

git clone
  • STM32F411CEx 'black pill'

git clone

5. build uPy for the boards

in micropython/ports/stm32/ folder:

  • STM32F407xxx 'black tile'

  • STM32F411CEx 'black pill'


6. flash the board

  • using DFU mode: STM32F407xxx 'black tile' example

put the board into the DFU mode, connecting BT0 pin to 3V3 with a jumper as described, then connect the USB cable and do:

make BOARD=BLACK_F407VE deploy

after it's done, unplug the board, connect BT0 to GND with the jumper, and reconnect the board

  • using SWD with ST-Link: STM32F411CEx 'black pill' example

cd micropython/ports/stm32/build-WEACT_F411CEU6

openocd -f interface/stlink-v2.cfg -f target/stm32f0x.cfg

in another terminal window:

telnet localhost 4444

> reset halt
> flash write_image erase build-STM32F4NUCLEO/firmware.elf

7. test the MicroPython installation

rshell -p /dev/ttyACM0 repl


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment