
Все платы Nucleo оснащены программатором, который можно пере использовать для программирования внешних устройств. Выглядит это примерно так.

От платы Nucleo откалывается часть, которая называется программатор ST-Link/V2-1. Работает она по двум интерфейсам: SWD и UART.
SWD - двухпроводной полудуплексный интерфейс для программирования микроконтроллеров.
UART - двухпроводной полнодуплексный интерфейс для передачи данных между микроконтроллером и PC.
target устройство - то, что мы программируем. Электронная плата с микроконтроллером.
Из документов вам потребуется 68 страничный pdf с названием User manual STM32 Nucleo-64 boards (UN1724). Даташит для STM32F103CBT6.
Что потребуется из оборудования?
Оборудование |
Назначение |
Программатор ST-Link/V2-1 |
Переходник между интерфейсом USB и интерфейсом SWD |
Кабель USBa-USBmini |
Для соединения LapTopa и программатора |
Перемычки гнездо-гнездо |
Для соединения внешней PCB и программатора по интерфейсам SWD и UART. |
Target устройство |
То что мы будем программировать |
Аппаратная часть
Ядром программатора является микроконтроллер STM32F103CBT6.

Электрическая цель программатора широко известна и свободно скачивается ST-LINK/V2-1

Чтобы переключить программатор в боевой режим программирования внешних плат надо открепить два джампера от разъёма CN2.
Программирование происходит через 6ти пиновый разъём CN4. На CN4 выведен интерфейс SWD. По выбору пинов можно заметить, что в прошивке ST-Link-а интерфейс SWD реализован скорее либо на основе SPI, либо программно на GPIO.
Pin |
Name |
Dir for PCB |
WireName |
GPIO |
Пояснение |
1 |
VDD_TARGET |
in |
-- |
-- |
Детектор напряжения на стороне target. По сути СN4.1 это однобитный ADC. |
2 |
SWCLK |
out |
T_JTCK |
PB13 |
тактирование SWD шины |
3 |
GND |
in |
-- |
-- |
заземление |
4 |
SWDIO |
io |
T_JTMS |
PB14 |
провод для данных |
5 |
NRST |
out |
T_NRST |
PB0 |
сброс target устройства |
6 |
SWO |
in |
T_SWO |
PA10 |
лог от target устройства |
Микроконтроллер воплощает не только программатор но и, внезапно, переходник с USB-UART. Разъём CN3 выводит на улицу USART2.
Pin |
Имя провода |
Направление для платы |
GPIO |
PinMux |
MCU pin |
1 |
STLINK_TX |
out |
PA2 |
USART2_TX |
12 |
2 |
STLINK_RX |
in |
PA3 |
USART2_RX |
13 |
Программная часть
Из ПО вам потребуется
Название программы |
Назначение |
STM32 ST-Link Utility |
Клиентская утилита для программатора (GUI исполнение) |
ST-LINK_CLI.exe |
Клиентская утилита для программатора. (CLI версия) |
TeraTerm |
Терминал последовательного порта |
Само собой абсолютные пути к бинарям этих утилит следует прописать в переменную PATH. У меня этот путь выглядел так. C:\Program Files (x86)\STMicroelectronics\STM32 ST-LINK Utility\ST-LINK Utility
При соединении программатора и NetTop PC в операционной системе появляется новое устройство. ST-link debug. Еще появляется виртуальный последовательный порт STMicroelectronics STLink Virtual Com Port (COM4)

Светодиоды. LED устроен так, что не могут одновременно светиться красный и зеленый. При 3,3V светит красный, при 0 V зеленый.
Цвет |
Поведение |
Смысл |
Красный |
Мигание |
до инициализации |
Красный |
непрерывный |
инициализация прошла успешно |
Зеленый |
непрерывный |
Внешнее устройство проинициализировано |
красный-зеленый |
мигание |
происходит обмен данными между программатором и устройством |
оранжевый |
непрерывный |
сбой в обмене данными |
При корректном подключении программатора утилита STM32 ST-Link Utility распознает подключенный программатор и сможет вычитать часть значений физических адресов.

Записывание прошивки
Инициировать процесс перепрошивки можно вот таким скриптом
echo off
cls
set project_name=stm32_board
set project_dir=%cd%
set ARTEFACT_HEX=%project_dir%\build\%project_name%.hex
set FLASH_TOOL=ST-LINK_CLI.exe
set OPTIONS=-c SWD freq=4000 UR
set OPTIONS=%OPTIONS% -P %ARTEFACT_HEX%
set OPTIONS=%OPTIONS% -V "after_programming"
set OPTIONS=%OPTIONS% -Log
set OPTIONS=%OPTIONS% -TVolt
call %FLASH_TOOL% %OPTIONS%
call %FLASH_TOOL% -Rst
Лог записи прошивки

Считывание прошивки
Этой же утилитой можно считать прошивку из микроконтроллера. Это сработает, если при записи не были установлены option bytes для запрета считывания.
echo off
cls
set PROJECT_NAME=read_firmware.bin
set FLASH_TOOL=ST-LINK_CLI.exe
set OPTIONS=-с SWD freq=2000
set OPTIONS=%OPTIONS% -Dump 0x08000000 0x100000 %PROJECT_NAME%
%FLASH_TOOL% %OPTIONS%
В консоли появится такой лог считывания прошивки.

Достоинством данного отладчика является то, что в нем помимо интерфейса USB и SWD есть ещё UART. Это позволяет буквально не отходя от кассы поглядывать еще и на printf- отладку, что сыплет микроконтроллер в UART по мере своей прогрузки и работы .

Отладочный сервер
Обладая отладчиком ST-Link/V2-1 вы можете подключить к этому переходнику GDB сервер и отлаживать программу по шагам. Если вы скачаете Atollic TrueSTUDIO, то у вас появится отладочный сервер. Хранится он будет в папке C:\Program Files (x86)\Atollic\TrueSTUDIO for STM32 9.3.0\Servers\ST-LINK_gdbserver\
echo off
cls
set GDBServerDir="C:\Program Files (x86)\Atollic\TrueSTUDIO for STM32 9.3.0\Servers\ST-LINK_gdbserver\"
set GDBServerPath=%GDBServerDir%ST-LINK_gdbserver.bat"
cd %GDBServerDir%
call %GDBServerPath%
Внутри ST-LINK_gdbserver.bat
@echo off
cmd /K "ST-LINK_gdbserver.exe -c config.txt || echo GDB server exited"
Файл с конфигом указывает порт приложения, режим, интерфейс связи с target (SWD) и прочие параметры.
###############################################################
#### ST-LINK_gdbserver - Sample Configuration File
#### Each Line Contains one argument
#### Comment lines begin with #
####
#### Use option -c <config-file> to start with config file
#### ST-LINK_gdbserver -c config.txt
####
#### Using STM32F4_Discovery, 168MHz, SWO Clock 1000 MHz.
#### ST-LINK_gdbserver.exe -e -d -z 61235 -a 168000000 -b 168
####
#### Programming elf file
#### ST-LINK_gdbserver.exe -e -d -j C:\dev\workspace\MyProg\Debug\MyProg.elf
####
#### Get option information
#### ST-LINK_gdbserver.exe -h
####
###############################################################
###############################################################
# -e : Enables persistant mode
###############################################################
-e
###############################################################
# -f <Log-File> : Name of log file. Please make sure
# that directory not is write protected.
# : Example
-f debug.log
###############################################################
###############################################################
# -l <Log-Level> : Logging level between 0 & 31
# 0 Disables logging
# >=1 Enables logging of error messages
# >=2 Adds warning messages
# >=4 Adds communication specific messages
# >=8 Adds all information messages
# >=16 Adds all HW specific messages
###############################################################
#-l 31
###############################################################
# -p <Port-Number> : TCP-Listen Port-Number.
###############################################################
-p 61234
###############################################################
# -v : Enables verbose mode
###############################################################
#-v
###############################################################
# -r <delay-sec> : Maximum Delay in status refresh
###############################################################
-r 15
###############################################################
# -d : Enables SWD mode
###############################################################
-d
Появится лог пуска отладочного сервера. Запустится процесс, который ожидает подключения по порту 61234.

Далее уже GDB клиентом можно будет отлаживать прошивку по шагам. Как из консоли, так и через eclipse. Подробнее про это написано тут.
Результат
Удалось пристроить старый кусок от платы Nucleo в качестве программатора и отладчика ST-Link. Научился загружать в микроконтроллер *.hex файл через SWD интерфейс. Это простое решение которое порой не стоит ничего.
Источники
Название |
ссылка |
Сливаем дамп флешки STM32 стандартными инструментами |
|
Настройка ToolChain(а) для Win10+GCC+С+Makefile+ARM Cortex-Mx+GDB @aabzel |
|
UM0892 User manual STM32 ST-LINK utility software description |
|
Пошаговая GDB отладка ARM процессора из консоли в Win10 @aabzel |
|
ST-LINK/V2 [Original], Внутрисхемный программатор/отладчик JTAG для мк STM8 и STM32 |
Комментарии (4)

DanilinS
11.12.2025 18:04Странная статья. Все платы Nucleo имеют такой программатор. И в инструкции прямо указывается, что при необходимости программатор можно отделить по специальным насечкам и использовать как отдельное устройство. Это штатный функционал платы. Смысл пилить об этом статью?

karenic Автор
11.12.2025 18:04Это инструкция для тех кому сразу вручат этот фрагмент.
Без объяснения его происхождения. Как было у меня.
Мне выдали его и сказали, что это программатор.
Вот и решил написать инструкцию, что делать с этой странной железкой.
mlnw
Фирменных программаторов гораздо больше, чем "ST-Link ISOL"