Рейтинг:  0 / 5

Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
 
STM32CubeMX по умолчанию отключает SWD для серии F1
STM32CubeMX — это генератор исходного кода для микроконтроллеров STM32. Позволяет настроить периферию с помощью графического интерфейса.
Если создать проект в STM32CubeMX, выбрать микроконтроллер серии F1 и сгенерировать исходный код, не производя никаких настроек, то этот код отключит интерфейсы программирования JTAG и SWD. 
Если такую программу скомпилировать и прошить, то в следующий раз прошить микроконтроллер будет затруднительно.То есть новичок, делающий первую программу для STM32F1, гарантировано окажется в тупиковой ситуации. Проблема проявляется только для микроконтроллеров серии F1. Для проверки использовался STM32CubeMX последней (4.17.0, на 13.11.2016) версии. Проблема несколько раз упоминалась в 2015 году. И STM даже обещали (по третьей ссылке) ее исправить, но не исправили.
Код, отвечающий за отключение JTAG и SWD, находится в файле stm32f1xx_hal_msp.c в функции HAL_MspInit(), которая вызывается функцией HAL_Init(), и выглядит следующим образом:
Чтобы избежать этой проблемы, нужно в STM32CubeMX на вкладке Pinout в дереве настроек найти пункт Configuration -> Peripherals -> SYS -> Debug и из выпадающего списка выбрать подходящее значение:
No Debug — значение по умолчанию, отключает отладочные интерфейсы JTAG и SWD.
Serial Wire — отключает JTAG, включает SWD, который использует только два вывода, подходит для программатора ST-Link.
JTAG (4 pin) — включает JTAG и SWD, используется 4 вывода (без NJTRST).
JTAG (5 pin) — включает JTAG и SWD, используется 5 выводов (с NJTRST), что соответствует состоянию микроконтроллера после сброса.
Как прошить микроконтроллер с отключенными JTAG и SWD
Если SWD и JTAG отключились, то не все потеряно. Уверен, что есть проекты в которых это даже необходимо.
Для начала нужно создать прошивку, которая бы не отключала SWD и JTAG.
 
Читать всем, кто напоролся: