Плата на базе STM32F103C8T6 («Blue Pill») отказывается определяться по USB, а встроенная прошивка уже не работает — типичная ситуация, когда микроконтроллер нужно прошить внешним программатором через интерфейс SWD. У STM32 нет единственного «правильного» способа записи прошивки: выбор зависит от того, есть ли у вас отладчик, свободный UART, рабочий USB-порт и в каком состоянии находится сам чип.
В этой статье разберём все основные способы прошивки микроконтроллеров STM32: через отладчики ST-Link и J-Link, через встроенный заводской загрузчик по UART и USB (DFU), а также через open-source инструменты вроде OpenOCD. Для каждого метода укажем, какое оборудование понадобится, каким софтом пользоваться и в каких ситуациях способ предпочтителен.
Основные способы прошивки STM32
Микроконтроллеры STM32 поддерживают несколько независимых каналов записи прошивки, и это заложено на уровне архитектуры. Первый класс способов — отладочные интерфейсы SWD и JTAG, которые работают всегда, независимо от содержимого памяти чипа. Второй класс — фирменный bootloader, зашитый в системную память на заводе: он позволяет прошить контроллер через UART, USB, а у некоторых серий — через CAN, I2C или SPI.
Какой именно интерфейс активирует заводской загрузчик, зависит от конкретной серии и даже ревизии чипа. Точный перечень поддерживаемых интерфейсов для вашей модели указан в документе AN2606 от STMicroelectronics — сверьтесь с ним перед подключением.
- 🔌 SWD/JTAG — прошивка и отладка через ST-Link, J-Link или клоны; универсальный способ для разработки.
- 🔄 UART-загрузчик — прошивка через USB-UART адаптер с переводом чипа в режим bootloader.
- 💾 USB DFU — прошивка напрямую по USB без дополнительного железа, если серия это поддерживает.
- 🛠️ OpenOCD / pyOCD — открытые инструменты для тех, кто работает без фирменных утилит ST.
Прошивка через ST-Link и STM32CubeProgrammer
Самый распространённый вариант для разработчика — отладчик ST-Link в паре с официальной утилитой STM32CubeProgrammer. Подойдёт как фирменный ST-Link/V2, так и недорогой клон с AliExpress: для базовой прошивки по SWD их возможности одинаковы. К микроконтроллеру подключаются четыре линии: SWDIO, SWCLK, GND и питание 3.3V; линию NRST желательно подключить тоже — она помогает, когда чип «завис» или ножки SWD переназначены прошивкой.
Порядок действий в STM32CubeProgrammer простой: запустите программу, выберите тип подключения ST-LINK, нажмите Connect, затем откройте файл прошивки (.hex, .bin или .elf) и нажмите Download. Для файла .bin дополнительно укажите адрес загрузки — обычно это начало Flash-памяти 0x08000000.