Найти в Дзене
Степан Жданов

STM32: CubeMX + Linux + VSCode | Степан Жданов

В данной заметке речь пойдёт о настройке среды разработки под STM32 на линуксе. Будет рассказано как подготовить базовую среду и заставить плату мигать светодиодами, более сложные аспекты, такие как настройка отладчиков затрагиваться не будет. В качестве конфигуратора будет использоваться STM32 CubeMX. IDE - VSCode с отдельно установленными терминальными утилитами для работы с платами STM32. Переходим на официальную страницу для скачивания CubeMX, желательно с включенным VPN (если вы заходите из России). Выбираете последнюю версию для Linux: Далее соглашаетесь с лицензией и создаёте новый аккаунт, либо входите в свой, если такой имеется. Ссылку на скачивание установщика вам пришлют на почту. Она действует какое-то определённое время, поэтому желательно скачать сразу. Далее необходимо запустить установщик: chmod +x SetupSTM32CubeMX-6.10.0 ./SetupSTM32CubeMX-6.10.0 Название файла может немного отличаться, в зависимости от версии. Далее соглашаемся с лицензиями и устанавливаем всё с дефо
Оглавление
STM32F303 Discovery board
STM32F303 Discovery board

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

Общий концепт

В качестве конфигуратора будет использоваться STM32 CubeMX. IDE - VSCode с отдельно установленными терминальными утилитами для работы с платами STM32.

Установка CubeMX

Переходим на официальную страницу для скачивания CubeMX, желательно с включенным VPN (если вы заходите из России).

Выбираете последнюю версию для Linux:

Самый первый вариант - "Get latest "
Самый первый вариант - "Get latest "

Далее соглашаетесь с лицензией и создаёте новый аккаунт, либо входите в свой, если такой имеется. Ссылку на скачивание установщика вам пришлют на почту. Она действует какое-то определённое время, поэтому желательно скачать сразу.

Далее необходимо запустить установщик:

chmod +x SetupSTM32CubeMX-6.10.0
./SetupSTM32CubeMX-6.10.0

Название файла может немного отличаться, в зависимости от версии.

Запуск установщика
Запуск установщика
Выбор директории для установки
Выбор директории для установки
Установка
Установка

Далее соглашаемся с лицензиями и устанавливаем всё с дефолтными параметрами. В итоге CubeMX будет установлен в выбранную вами директорию (по-умолчанию : ~/STM32CubeMX).

В ней находится бинарник STM32CubeMX.

Генерация проекта - пример

Далее будет показан пример конфигурации и прошивки платы STM32 Discovery на контроллере STM32F303VCT6, но инструкция так же применима и к другим отладочным платам и контроллерам, например Blue Pill с STM32F103C8T6.

STM32 Discovery
STM32 Discovery

Нажимаем "Access to board selector" и через поиск находим наш контроллер.

-7

Далее "Start Project". Настроим пины PE8 и PE9 на выход (GPIO_OUTPUT), к ним подключены светодиоды LD4 и LD3.

Так же сконфигурировал режим отладки Serial Wire в вкладке SYS
Так же сконфигурировал режим отладки Serial Wire в вкладке SYS

Далее можно настроить остальные интерфейсы, частоты тактирования и так далее. Чтобы не усложнять пример оставим всё по-умолчанию, на среду разработки это не влияет. Переходим в раздел "Project Manager".

-9

Указываем название проекта и выбирает тулчеин (Toolchain/IDE): Makefile, как на скриншоте ниже:

-10

Теперь нажимаем на синюю кнопку "GENERATE CODE" в правом верхнем углу.

В итоге получим следующее уведомление:

-11

При нажатии "Open Folder" директория проекта откроется в дефолтном файловом менеджере, либо в VSCode (у меня настроено, чтобы все папки открывались в нём).

VSCode и прошивка платы

-12

Структура файлов кода проекта не отличается от той, которая будет в Keil. Добавим простой код, который будет мигать двумя светодиодами (через библиотеку HAL) в бесконечный цикл, в файле Core/Src/main.c

Мигание двумя светодиодами через HAL
Мигание двумя светодиодами через HAL
HAL_GPIO_TogglePin (GPIOE, GPIO_PIN_8);
HAL_GPIO_TogglePin (GPIOE, GPIO_PIN_9);
HAL_Delay (500);

Теперь необходимо скомпилировать проект, для этого в системе должен стоять make. Установить его легко:

sudo pacman -Sy make # Arch based
sudo apt install make # Debian

Для компиляции в терминале пишем:

make all
После компиляции и сборки будет примерно такой результат
После компиляции и сборки будет примерно такой результат

В итоге в директории build будут объектные файлы всех библиотек и бинарник итоговой прошивки (LinuxEnvTest.bin), которую необходимо загрузить на плату:

Все бинарники
Все бинарники

Прошивать плату будем через программатор STLink. На STM32 Discovery он разведён на плате, для Blue Pill необходимо использовать внешний.

Пакет инструментов для STLink легко устанавливается на большинство дистрибутивов Linux:

sudo pacman -Sy stlink # Arch
sudo apt install stlink-tools # Ubuntu

Через st-info --probe проверим подключение платы к компьютеру:

-16

Для прошивки используем следующую команду (замените название бинарника на своё):

st-flash write build/LinuxEnvTest.bin 0x08000000
Успешная прошивка
Успешная прошивка

Для полной очистки прошивки с платы используется следующая плата (необходимо задержать RESET кнопку на плате при подключении):

st-flash --connect-under reset write build/LinuxEnvTest.bin 0x08000000
-18

После прошивки всё работает и плата мигает двумя светодиодами.

-19

Заключение

Использование конфигурации проекта с помощью Makefile в STM32 CubeMX позволяет использовать любой редактор кода для разработки, который вы уже настроили под себя. Это достаточно удобно, но к сожалению, лишает некоторых специализированных инструментов. Например отладчика, который "из коробки" есть в Keil. Его можно заменить gdb или утилитами под JTAG.