Возможно Вас заинтересует AN2606 "STM32 microcontroller system memory boot mode"
Если кратко, то у каждой СТМки с завода зашит бутлоадер. Опускаем кажись BOOT0 на землю, резетаем и погнали.
И если попсовая F103C8 может прошиться только по UART, то например F407VG уже умеет и UART, и USB, и DFU и SPI.
Вот Вам тулза что бы шить по ЮАРТу
https://github.com/jsnyder/stm32loader
Вот по ДФУ
dfu-util.sourceforge.net/dfuse.html
А вот АппНоут
https://www.st.com/content/ccc/resource/technical/...