Плата на базе 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.

☑️ Прошивка STM32 через ST-Link

Подключите SWDIO, SWCLK, GND и 3.3V к целевой платеУстановите драйверы ST-Link и запустите STM32CubeProgrammerВыберите подключение ST-LINK и нажмите ConnectОткройте файл прошивки и укажите адрес 0x08000000 для .binНажмите Download и дождитесь верификацииВыполните сброс или перезапуск платыВыполнено: 0 / 6