настройки трассировки в STM32CubeMX и Keil 5 через ST- Link V2 Jtag

С настройкой в Keil5 - довольно просто. Выбираешь нужный контроллер в списке и жмешь Install.

Или после генерации кода в STM32CubeMx сразу жмем "открыть проект" и если при генерации было указана среда MDK5 , то сразу взлетает Keil5 с вашим проектом. Все файлы уже внутри и компиляция практически проходит сразу без ошибок (т.е. как-бы все файлы разложены по каталогам и добавлены в проект корректно).

Ограничение триальной версии 32Кб кода. Но в отличии от STM Work Bench (AC6) сразу все нормально прошивается и отлаживается на ST-Link v2.

ST-Link v2 с алиэкспресс прекрасно позволяет прошивать и отлаживать по SWD программу для STM32F1403C8T6. Завелось почти сразу и отладка без срывов идет нормально (например отлаживаем USB Custom HID). Вывод SWO у ST-Link v2 штатно не выведен с ножки 31 процессора программатора.

    Вот,что выдает ST-Link Utility (у меня) при связи:
  • 13:42:46 : ST-LINK SN : 48FF6D066783505327122167
  • 13:42:46 : ST-LINK Firmware version : V2J28S7
  • 13:42:46 : Connected via SWD.
  • 13:42:46 : SWD Frequency = 4,0 MHz.
  • 13:42:46 : Connection mode : Normal.
  • 13:42:46 : Debug in Low Power mode enabled.
  • 13:42:46 : Device ID:0x410
  • 13:42:46 : Device flash Size : 64KBytes
  • 13:42:46 : Device family :STM32F10xx Medium-density

Для прошивки в Keil не надо джамперы выставлять (оба в положении 0).
Настройки программатора и отладчика по картинкам ниже (взято с работающего примера). По умолчанию не настроено , а надо-бы настроить "очищать весь чип перед прошивкой" и "делать его рестарт после прошивки".

фотка 1
фотка 2

На самом деле непонятно - на что влияет XTal=72Mh (см. закладка Target) , как я понял это STM32CubeMx установил). Я бы сказал , что XTal лучше не трогать.

Итак режим (Mode) и Reset Mode настраивается именно в ST-Link V2 (через Stm32-Link Utility). В Keil надо соответственно этому указать настройки. Например Normal Software System Reset.

фотка 3

Понятно, что ST-Link Debugger тут надо выбрать первый раз руками.

фотка 4

И вот тут важно. Мы сразу видим область "Debug Adapter" , в ней определился наш ST-Link V2 и в области SW Device может ничего не быть,а может и определиться
device. Это вводит в заблуждение, так как на самом деле возможность отладки определяется на этапе в Stm32CubeMx, надо установить serial wire, и только тогда отладка станет возможной:

фотка 5
    Важно понимать , что мы прошиваем ( джампер boot1 тот , что ближе к краю):
  • boot1 = 1, boot0 = 0 - указывает, как я понял , что прошиваем именно загрузчик.
  • boot1 = 0, boot0 = 0 - прошиваем программу.

boot1 = 1, boot0 = 0 выставляем только в Stm32-Link Utility для прошивки оригинального загрузчика!

В области Debug (Connect & Reset Option) надо руками выбрать то , что настроили в ST-Link V2. Хотя как это влияет я не понял. Работает прошивка/отладка и при Normal и underReset и with Pre-reset (даже перезагружался все-равно все работает при любом варианте).

Через Stm32-Link Utility я устанавливаю так: Connect Under Reset Hardware Reset и (при boot1 = 0, boot0 = 0 конечно же) программа прекрасно прошивается и отлаживается.

фотка 6
фотка 7

На закладке Trace не будем использовать функции отладки (передача по SWO линии например всех отладочных сообщений). т.к.SWO в нашем китайском ST-Link V2 нет (точнее вывод 31 STM32F103CBT6 в ST-Link V2 не выведен наружу).

фотка 8

Ну на последней закладке Flash Download полезно выставить Erase Full Chip и Reset and Run.

Можно ли одновременно работать по USB с STM32F103C8T6 и отлаживать в Keil? Теперь уверенно можно сказать - Да! Главное еще помнить , что когда вы останавливаетесь в отладчике ваш ПК не будет ждать пока вы там подумаете - все решают миллисекунды. Т.е. разово поймать остановку можно , но потом выполнение программы возможно пойдет не по правильному сценарию.