Прошивка STM32F103C8T6 через ST-Link V2: полное руководство

Ошибка No target connected при попытке прошить STM32F103C8T6 через ST-Link V2 в подавляющем большинстве случаев означает одно из трёх: перепутаны линии SWDIO и SWCLK, микросхема не получает питание 3,3 В, либо активирована защита от чтения (RDP). Все три ситуации диагностируются за несколько минут и не требуют специального оборудования — достаточно мультиметра и внимательности при подключении четырёх проводов.

Эта статья разбирает весь цикл работы с отладчиком ST-Link V2: от распиновки и установки драйверов до загрузки прошивки через STM32CubeProgrammer и снятия защиты. Материал подходит как для популярных плат Blue Pill, так и для самодельных устройств на этом микроконтроллере.

Что понадобится для прошивки

Микросхема STM32F103C8T6 поддерживает отладку и программирование по интерфейсу SWD (Serial Wire Debug) — для этого нужны всего две сигнальные линии плюс питание и земля. Сам отладчик ST-Link V2 в китайском исполнении (металлический «брелок») стоит недорого и полностью справляется с задачей, хотя оригинальные программаторы от STMicroelectronics тоже подходят.

Минимальный набор выглядит так:

  • 🛠️ Отладчик ST-Link V2 (клон или оригинал) с соединительными проводами
  • 🔌 Плата с STM32F103C8T6 — например, Blue Pill или собственное устройство
  • 💻 Компьютер с Windows, Linux или macOS и свободным USB-портом
  • 📦 Программа STM32CubeProgrammer или альтернатива: ST-Link Utility, OpenOCD, STM32CubeIDE
  • 🔋 Источник питания 3,3 В для целевой платы (можно взять с пина 3.3V самого ST-Link)

Файл прошивки понадобится в формате .hex, .bin или .elf. Если вы собираете проект сами в STM32CubeIDE или Arduino IDE, готовый бинарный файл появится в папке сборки проекта.

Ключевой этап, на котором допускается больше всего ошибок. На плате Blue Pill контакты для программирования выведены на торцевой гребёнке из четырёх пинов, обычно подписанных как 3.3, SWDIO, SWCLK, GND (порядок может отличаться — сверяйтесь с шелкографией своей платы). На корпусе ST-Link V2 распиновка нанесена на наклейке.

Пин ST-Link V2Пин STM32F103C8T6 (Blue Pill)Назначение
SWDIOSWDIO (PA13)Данные отладочного интерфейса
SWCLKSWCLK (PA14)Тактовый сигнал SWD
GNDGNDОбщий провод
3.3V3.3VПитание целевой платы

Обратите внимание: линии SWDIO и SWCLK соединяются «напрямую», а не накрест, как TX/RX в UART. Это частая ошибка новичков, привыкших к последовательным портам. Пин NRST для прошивки не обязателен, но его подключение помогает в случаях, когда прошивка в чипе отключает отладочные пины или уводит контроллер в сон.

⚠️ Внимание: не подавайте на плату питание 5 В на пин 3.3V — микросхема рассчитана на напряжение до 3,6 В. На корпусе некоторых клонов ST-Link выведены оба напряжения, и перепутать их легко. Перед подключением проверьте мультиметром, какое напряжение реально присутствует на выбранном пине.

Установка драйверов и проверка связи

На Windows 10 и 11 клоны ST-Link V2 часто определяются системой автоматически, но для корректной работы с фирменными утилитами лучше установить драйвер ST-LINK USB driver с сайта STMicroelectronics. После установки в диспетчере устройств в разделе «Universal Serial Bus devices» должен появиться пункт STM32 STLink без восклицательных знаков.

На Linux драйвер не нужен — достаточно добавить правило udev, чтобы программатор был доступен без прав root. В macOS утилиты вроде STM32CubeProgrammer обычно работают сразу после установки.

Проверить связь можно ещё до прошивки: запустите STM32CubeProgrammer, выберите в правом верхнем углу тип подключения ST-LINK и нажмите Connect. Если всё собрано верно, программа покажет идентификатор чипа, объём флеш-памяти и текущее содержимое памяти.

📊 Каким способом вы чаще всего прошиваете STM32F103?
STM32CubeProgrammer
ST-Link Utility
Через Arduino IDE
OpenOCD из командной строки

Прошивка через STM32CubeProgrammer: пошагово

STM32CubeProgrammer — актуальная официальная утилита STMicroelectronics, заменившая устаревшую ST-Link Utility. Она бесплатна и доступна для всех основных платформ. Порядок действий следующий.

Сначала подключите собранную схему к компьютеру и запустите программу. В выпадающем списке справа выберите ST-LINK, оставьте режим SWD и нажмите Connect. При успехе статусная строка окрасится в зелёный цвет, а в логе появится информация о чипе.

☑️ Порядок прошивки в STM32CubeProgrammer

Выполнено: 0 / 6

Далее перейдите на вкладку Erasing & Programming (иконка со стрелкой вниз). Укажите путь к файлу прошивки, убедитесь, что стартовый адрес установлен в 0x08000000 — это начало флеш-памяти у STM32F103. Отметьте галочки Verify programming и Run after programming, затем нажмите Start Programming.

Процесс занимает несколько секунд. Строка Download verified successfully означает, что прошивка записана и контрольная проверка пройдена. Если вместо этого появляется ошибка верификации — возможная причина в нестабильном питании или слишком длинных проводах между отладчиком и платой; попробуйте укоротить их до 10–15 см.

Прошивка из командной строки

STM32CubeProgrammer имеет консольную версию. Пример команды для записи hex-файла: STM32_Programmer_CLI -c port=SWD -d firmware.hex 0x08000000 -v -rst. Это удобно для автоматизации и пакетной прошивки нескольких плат.

Альтернативные способы: Arduino IDE и OpenOCD

Если вы пишете код в среде Arduino IDE, прямой загрузки через ST-Link можно добиться после установки пакета поддержки STM32 (STM32duino). В настройках платы выберите Generic STM32F1 series, вариант BluePill F103C8, а в пункте Upload methodSTM32CubeProgrammer (SWD). После этого кнопка «Загрузить» будет прошивать чип через подключённый ST-Link без дополнительных действий.

Для приверженцев консоли существует OpenOCD — открытый отладчик, работающий со множеством программаторов. Типовая команда прошивки выглядит так:

openocd -f interface/stlink.cfg -f target/stm32f1x.cfg -c "program firmware.hex verify reset exit"

Какой бы инструмент вы ни выбрали, физический уровень остаётся тем же — те же четыре провода и тот же интерфейс SWD. Различается только программная обёртка.

Типичные ошибки и их решение

Разберём ситуации, с которыми чаще всего сталкиваются при прошивке STM32F103C8T6:

  • 🔴 No target connected — проверьте питание 3,3 В на плате, правильность подключения SWDIO/SWCLK и целостность проводов. Также попробуйте режим Connect Under Reset в настройках подключения.
  • 🟡 Error: Flash download failed — возможная причина в активированной защите от чтения (RDP Level 1). Снимается через пункт Option Bytes → установка RDP в AA с полным стиранием чипа.
  • 🟠 Не определяется сам ST-Link — переустановите драйвер, смените USB-порт или кабель; некоторые клоны конфликтуют с USB-хабами.
  • 🔵 Прошивка записывается, но устройство не работает — проверьте стартовый адрес (должен быть 0x08000000) и положение джамперов BOOT0/BOOT1: для запуска из флеш-памяти BOOT0 должен быть притянут к земле.

⚠️ Внимание: снятие защиты RDP (Read Protection) всегда сопровождается полным стиранием флеш-памяти микроконтроллера — это штатный механизм безопасности, заложенный производителем. Если на чипе находится прошивка, которую нужно сохранить, восстановить её после снятия защиты будет невозможно.

⚠️ Внимание: клоны ST-Link V2 с устаревшей внутренней прошивкой могут отказываться работать с новыми версиями STM32CubeProgrammer. Утилита предложит обновить прошивку отладчика через Firmware update — соглашайтесь, это безопасная штатная процедура, но во время неё не отключайте устройство от USB.

Проверка результата после прошивки

Убедиться, что всё прошло успешно, можно несколькими способами. Самый простой — наблюдение за поведением платы: если прошивка, например, мигает светодиодом на пине PC13 (стандартный «Hello World» для Blue Pill), результат виден сразу после сброса.

Программный способ — функция верификации в STM32CubeProgrammer, которая сравнивает записанные данные с исходным файлом. Дополнительно можно вручную считать содержимое флеш-памяти (вкладка Memory & File edition) и убедиться, что по адресу 0x08000000 находятся осмысленные данные, а не одни нули или FF.

Если устройство не подаёт признаков жизни при корректно записанной прошивке, проблема почти наверняка вне процесса программирования: проверяйте схему питания, тактирование и сам код. Отладчик позволяет поставить точку останова и пошагово выполнить программу — это самый быстрый способ локализовать ошибку.

Частые вопросы

Можно ли прошить STM32F103C8T6 без ST-Link?

Да. Микроконтроллер имеет встроенный загрузчик, работающий через UART (пины PA9/PA10): нужен USB-TTL адаптер и установка джампера BOOT0 в единицу. Также существуют прошиваемые загрузчики для загрузки по USB. Однако ST-Link удобнее — он не требует перестановки джамперов и даёт полноценную отладку.

Чем клон ST-Link V2 отличается от оригинала?

Функционально клоны справляются с прошивкой и отладкой STM32F1. Различия — в качестве сборки, отсутствии гарантированной поддержки обновлений прошивки и иногда в отсутствии вывода NRST. Для учебных и хоббийных задач клона обычно достаточно.

Почему после своей прошивки ST-Link перестал видеть чип?

Вероятная причина — код случайно переназначил пины PA13/PA14 или перевёл микроконтроллер в спящий режим сразу после старта. Подключите линию NRST и используйте режим Connect Under Reset либо удерживайте кнопку сброса, нажимая Connect, и отпускайте её в момент соединения.

Какой формат файла выбрать — hex или bin?

Оба подходят. Файл .hex содержит адреса внутри себя, поэтому надёжнее. Для .bin стартовый адрес 0x08000000 нужно указывать вручную — ошибка в адресе приведёт к нерабочей прошивке.

Можно ли питать плату от пина 3.3V программатора?

Да, для Blue Pill и подобных малопотребляющих плат это стандартная практика. Но если в схеме есть мощная периферия (реле, двигатели, дисплеи), используйте отдельный источник питания, соединив только земли обоих устройств.