Skip to content

Repository files navigation

Rust SWD Programmer for STM32 using ESP32

ESP32 connected to the STM32 SWD pins

This is an experimental learning project that uses an ESP32 DevKit V1 as an SWD programmer to flash firmware onto an STM32F103C8T6 (Blue Pill) using Rust. I wanted to see if it was possible to write the Rust code myself and flash the STM32 without using an ST-Link programmer.

It implements the SWD protocol to connect to the STM32, access its Debug and Access Ports, erase and program Flash memory, verify the firmware, and reset and run the STM32 core.

This project is intended for learning and experimentation, so DO NOT use it as a production programmer.

Circuit

ESP32 STM32
GPIO18 SWCLK (PA14)
GPIO19 SWDIO (PA13)
GND GND