Подготовка рабочего окружения. STM32 + VS Code

Данная серия записей призвана, в первую очередь, упорядочить собственные знания, а также помочь тем, кто только начинает изучать микроконтроллеры.

Для работы с котроллерами STM32 в качестве IDE я буду использовать VS Code. 

Совсем недавно, в конце 2023 года STMicroElectrobics выпустило официальный плагин для этой IDE. Данное событие позволяет довольно легко начать её использование неподготовленными пользователями.

Для начала работы нам потребуются:

stm32cubecMX
stm32cubeclt
и непосредственно VS Code.

Весь перечисленный софт можно скачать с официальных сайтов.

mstsc mOVC8dUweY

​Все программы устанавливаем в папки, которые предлагает инсталлятор, иначе потом придётся в ручную править конфиги, чего на первых парах лучше избежать.

При установке CubeMX необходимо указать что он устанавливается для всех пользователей. Это повлияет на папку, в которую будет установлена программа.

После установки обязательно перезагружаемся, что бы обновились переменные среды. Без их обновления часть плагинов будет работать некорректно.
После установки и перезагрузки запускаем VS Code, выбираем тему, и если есть желание - занимаемся кастомизацией. Я просто завершаю работу мастера кастомизации, и попадаю на стартовую страницу.

Нам в первую очередь необходимо установить несколько плагинов. Для этого переходим на вкладку "Extensions", и вводим в поиск stm32. В результатах поиска нас интересует официальный плагин от компании STMicroElecrtonics.

mstsc zkWaHoAZcE

​Устанавливаем его. При его установке автоматически подтянутся зависимости. По окончании установке в левой панели появится новая пиктограмма с логотипом ST. Нажимаем на неё, и создаем новый проект.

mstsc oUWgT5iP5W

​При этом автоматически запустится STM32CubeMX. К сожалению в CubeMX необходимо авторизоваться, иначе он не подтянет с сайта необходимые для работы пакеты.

Тут у нас пока доступно всего 2 варианта. Либо Всё делать через прокси, либо в ручную подпихивать пакеты

Для проверки я буду использовать китайскую отладочную плату, основанную на микроконтроллере stm32f030f4p6. В CubeMX создаём новый проект. Далее в поиск пишем название нашего микроконтроллера, и выбираем его. Обязательно ставим "галку" на пункте "Debug serial wire". Далее нас интересует вкладка "Project Manajer", на которой мы указываем наименование проекта, папку в которую его необходимо сгенерировать и Toolchain/IDE, для которой необходимо сгенерировать проект. Всё остальное пока что нас не интересует, по этому оставляем значения, который были установлены по умолчанию.

mstsc j0J9vhm87d

Генерируем проект!

​После генерации проекта, CubeMX закрываем, и возвращаемся в VS Code, в которой выбираем пункт "Import a local project".

​После чего указываем местоположение файла .сproject сгенерированного Кубом. Далее выбираем во всплывающем меню настройку для конфигурации. Пока что будем использовать debug.

Поздравляю! На этом создание нового проекта с использованием микроконтроллера stm32 и перенос его в VS Code завершен. Можно его компилировать и прошивать в отладочную плату.

Для компиляции, прошивки и запуска отладки достаточно нажать "F5" на клавиатуре!

Управлять выполнением кода можно при помощи появившегося окошка, либо при помощи горячих клавиш на клавиатуре.

mstsc NwbTqeNjUz

В дальнейшем мы научимся и без такого огромного количества ненужных программ создавать проекты. Но пока версия плагина 1.0.0 приходится тащить кучу софта, который даже не будем запускать, но части от него используются плагином. 

 Сложности и проблемы возникавшие на этом этапе

1. Автоматически не установился CMake.

Решение - скачать CMake с офф. сайта и установить отдельной программой. Обязательно при установке указать что необходимо его прописать в PATH. После чего - перезагрузить компьютер.

2. Более сложная проблема. Если попытаться после установки CubeMX запустить его и авторизоваться, с использованием Российского адреса, то он начинает выдавать что отсутствует интернет соединение. И перезагрузка, либо удаление и заново установка программы решения не дало. Судя по всему при первом коннекте где то кэшируется информация об успешности соединения. Если проблема возникнет - необходимо будет найти где находится это кэш и удалить его.