Чаще всего изучение микроконтроллеров начинают с использования покупных отладочных плат. Что очень удобно в плане того, что не надо разбираться какие ножки кроме портов ввода вывода для чего предназначены.
Но этот путь имеет и обратную сторону медали, а именно:
Если появится желание или потребность разобраться с микроконтроллером, для которого либо не существует отладочной платы, либо её необходимо заказывать и долго ждать, то задумку приходится откладывать в дальний ящик. И не редко бывает что так идеи и не доходят до реализации из за такой мелочи.
Хотя если посмотреть на минимальную схему включения в даташите, то оказывается что для запуска и работы микроконтроллера требуется минимальное количество обвязки.
Для этого запустим CubeMX.
В MCU selector выберем интересующий нас микроконтроллер, и перейдём на вкладку "Docs and Recources"
В Раскрывающемся списке "Application notes" найдём AN4325 - введение в разработку hardwere.
Тут нас интересует глава Reference Design.
И пролистав немного ниже мы находим референсную схему включения микроконтроллера, рекомендованную производителем.

Давайте разбираться во всём, что мы тут видим.
SWD connector - просто коннектор для подключения отладчика.
Boot mode - выбор режима загрузки.

Режим загрузки настраивается установкой BOOT0 через кнопку SW1, и установку бита nBoot1. Ничего не понятно, по этому идём смотреть подробнее.
Уже лучше. у нас оказывается есть 3 режима загрузки (эти режимы ещё попортят мне жизнь в дальнейшем). Нам необходим режим "Main Flash Memory". И для его выбора необходимо что бы на пине BOOT0 был низкий уровень, в не зависимости от непонятного бита nBoot1.
Возвращаемся обратно к нашей схеме.
LSE и HSE - два кварца, но если их использование не настраивать - микроконтроллер будет работать на встроенном тактовом генераторе, по этому эту часть отбрасываем.
Reset - самое интересное тут - низкий уровень активный. Это значит что бы сбросить микроконтроллер, необходимо Reset посадить на землю.
На аналоговом питании необходимо добавить 2 конденсатора.
И на цифровом питании - 100 нанофарад возле каждого вывода, и 1 общий на 4,7 микрофарада.
На этом собственно всё, давайте собирать.
Для сборки нам потребуется вот такая гора деталей.

А именно: вывод от какого то выводного компонента. конденсатор 100 нанофарад, конденсатор 5 микрофарад, сам микроконтроллер, и китайская плата-переходник с SSOP20 на DIP
За кадром собрал из деталей устройство, которое можно гордо именовать Development Board.
Давайте включем его в макетку, и попытаемся прошить. Программу, которую мы написали (а точнее накликали мышкой) в предыдущем занятии. Я, правда, на макетке уже собрал небольшую схему для следующего занятия, но она нам ни как не помешает. Вставляем нашу отладочную плату, подключаем к программатору.
Далее идём в VS Code, и пытаемся начать отладку как обычно, нажатием F5 на клавиатуре.
и-и-и-и-и..... получаем сообщение об ошибке - не удалось подключиться к целевому устройству.

Проблема в том, что в МК зашита уже какая то прошивка, и в ней отключено использование serial wire debug.
Для того, что бы удалить старую прошивку, идём на сайт STMicroElectronics и скачиваем STM32CubeProgrammer.
Устанавливаем его.
Запускаем, и пытаемся присоединиться к контроллеру - ошибка.
Теперь используем пин Reset по назначению. соединяем его с минусом источника питания, и сразу после нажатия кнопки Connect - убираем перемычку.
Как видно - удалось соединиться. После чего идём и удаяем все данные с микроконтроллера.
Отлично, микроконтроллер теперь чист - возвращаемся в VS Code и опять пытаемся запустить отладку.
Теперь - интереснее. по всем признакам видно что отладка запустилась, но выполнение программы не останавливается на старте. Ну и то, что осталось за кадром - на точки останова так же не реагирует.
Спустя какое то количество времени, я понял что сикроконтроллер запускается не с нашей программой, а с каким другим кодом. Для решения этой проблемы - пришлось вывод Boot0 припаять к земле, иначе из за наводок на нём - происходил запуск не из встроенного флеша.
Опять подключем нашу Dev Board к макетке, запускаем VS Code, и запускаем отладку.
Ура! выполнение программы остановилось! пошаговая отладка так же работает.
Теперь у нас есть самодельная отладочная плата, которую мы будем использовать в будущих занятиях.
А так же, если захотим протестировать другой микроконтроллер - знаем как его запустить при минимальных трудовложениях.