STM32 : начало работы
Программирование STM32 из Engee
В этом примере рассмотрено выполнение модели Engee на микроконтроллере STM32F407VGT6 на отладочной плате Discovery. Приводятся пояснения работы для двух доступных фреймворков для STM32: stm32duino и stm32cube. Приводятся примеры моделей и результаты их выполнения.
Введение
Интеграция Engee со встраиваемыми системами, равно как и с внешними устройствами/интерфейсами осуществляется через платформу Engee.Интеграции.
В первую очередь, необходимо установить этот компонент Engee согласно документации. И cоединить клиентскую программу с сервером Engee.
В этом примере нам потребуются два раздела библиотеки блоков Engee Оборудование -> Target:
Arduino- для работы через фреймворк stm32duinoSTM32- для работы через фреймворк stm32cube
Используемый в примере микроконтроллер - STM32F407VGT6 на отладочной плате Discovery (STM32F407G-DISC1). Плата имеет встроенный STLink отладчик, его мы и будем использовать для прошивки контроллера.
Для демонстрации работы мы задействуем 4 цифровых выхода, подключенных к встроенным на плату светодиодам LD3-LD6 (PD12-15).
Для обмена данными между микроконтроллером и Engee в интерактивном режиме используем USART2 (RX - PA3, TX - PA2). В качестве преобразователя UART<=>USB используется преобразователь на базе CP2102. Схема соединений представлена ниже.
Подключим отладочную плату к компьюетру и установим все необходимые драйвера (STLink и CP2102).
stm32duino (EDM-Target-Arduino)
Подготовка необходимых компонентов
При работе через пакет поддержки Arduino требуется:
-
скачать и установить arduino-cli.exe
-
добавить arduino-cli в системные пути, инициализировать конфигурацию, обновить индекс платформ
-
скачать и установить библиотеку STM32:
arduino-cli core install STMicroelectronics:stm32 --additional-urls https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json
Теперь, при вызове команды
arduino-cli board listall
можно наблюдать аналогичный вывод:
Наименование платы FQBN
.
.
.
Blues boards STMicroelectronics:stm32:Blues
Discovery STMicroelectronics:stm32:Disco
.
.
.
Generic STM32C0 series STMicroelectronics:stm32:GenC0
Generic STM32F0 series STMicroelectronics:stm32:GenF0
Generic STM32F1 series STMicroelectronics:stm32:GenF1
Generic STM32F2 series STMicroelectronics:stm32:GenF2
Generic STM32F3 series STMicroelectronics:stm32:GenF3
Generic STM32F4 series STMicroelectronics:stm32:GenF4
Generic STM32F7 series STMicroelectronics:stm32:GenF7
Generic STM32G0 series STMicroelectronics:stm32:GenG0
Generic STM32G4 series STMicroelectronics:stm32:GenG4
Generic STM32H5 series STMicroelectronics:stm32:GenH5
Generic STM32H7 Series STMicroelectronics:stm32:GenH7
Generic STM32L0 series STMicroelectronics:stm32:GenL0
Generic STM32L1 series STMicroelectronics:stm32:GenL1
Generic STM32L4 series STMicroelectronics:stm32:GenL4
Generic STM32L5 series STMicroelectronics:stm32:GenL5
Generic STM32U0 series STMicroelectronics:stm32:GenU0
Generic STM32U3 series STMicroelectronics:stm32:GenU3
Generic STM32U5 series STMicroelectronics:stm32:GenU5
Generic STM32WB series STMicroelectronics:stm32:GenWB
Generic STM32WB0 series STMicroelectronics:stm32:GenWB0
Generic STM32WBA series STMicroelectronics:stm32:GenWBA
Generic STM32WL series STMicroelectronics:stm32:GenWL
Generic STM32WL3 series STMicroelectronics:stm32:GenWL3
.
.
.
Это означает, что arduino-cli готов к работе с STM32
Модель примера
Теперь реализуем модель бегущих огней.
Модель примера - stm32duino_running_lights.engee.
Она реализует элементарный алгоритм поочередной передачи вектора включаемых и выключаемых светодиодов на демультиплексор с четырьмя выходами.
Для программирования целевого устройства Arduino необходимо установить блок EDM-Target-Arduino.
Для работы с STM32 в этом блоке нужно задать следующие настройки:
- Производитель:
STMicroelectronics. - Архитектура:
stm32. - Идентификатор платы:
Disco.
Эти три параметры (Полное имя платы) - это FQBN, который мы видели при вызове команды arduino-cli board listall. Также его можно узнать при вызове arduino-cli board list.
В разделе настроек "Окружение" следует обратить внимание на следующее:
- Путь к ArduinoCLI - можно указать явно
"D:\targets\engee-device-manager.exe", или можно указатьauto, тогда путь к arduino-cli будет взят из системных путей. - COM порт - имя порта, используемого для обмена данными в интерактивном режиме. В нашем случае - это
COM8, в который включен преобразователь CP2102. - Директория моделей - это папка на компьютере, в которой будут сохранены файлы сгенерированного из модели C-кода, скрипт .ino и бинарные файлы.
Для работы с периферией - цифровыми выходами используем блок Arduino-digitalWrite.
В них достаточно указать соответствующие номера каналов / имена портов для STM32 в символьном виде. В нашем случае:
:PD12, :PD13, :PD14, :PD15
Выполнение модели
Для выполнения модели нужно переключить среду выполнения: Engee -> Targer Hardware.
После можно выполнить модель в независимом (без обмена данными), или в интерактивном режиме (с обменом данными).
Во втором случае мы получаем возможность наблюдать за записываемыми сигналами в Engee и изменять параметры модели на лету.
Ниже приведена демонстрация работы модели в независимом режиме на STM32:
stm32cube (EDM-Target-STM32)
Подготовка необходимых компонентов
При работе через пакет поддержки Arduino требуется:
-
скачать и установить STM32CubeMX - будет использоваться для конфигурации периферии и генерации кода проекта CubeMX.
-
скачать и установить STM32CubeIDE - будет использоваться для компиляции кода и прошивки контроллера.
- STM32CubeIDE можно заменить использованием компилятора
gcc-arm-none-eabiи утилиты для прошивкиSTM32CubeProgrammerCLI.
- STM32CubeIDE можно заменить использованием компилятора
-
скачать, установить и добавить в системные пути CMake для генерации кода проекта.
-
подготовить проект CubeMX с конфигурацией используемой периферии и сгенерировать код.
Подготовка проекта CubeMX
Подробная инструкция для корректной настройки проекта CubeMX приведена в документации.
В этом примере мы используем:
- GPIO PD12-15.
- USART2 интерфейс для обмена данными согласно рекомендациям.
- FREERTOS планировщик согласно рекомендациям.
Ниже приведены изображения выбора пинов на карте контроллера:

Файл проекта CubeMX - stm32cube_running_lights.ioc приложен в файлах проекта.
Модель примера
Модель примера - stm32duino_running_lights.engee.
Рассматриваемая модель отличается от предыдущей только блоками пакета поддержки STM32:
.png)
Блок конфигурации проекта EDM-Target-STM32 требует определить следующие настройки для нашего примера:
- Семейство:
f4xx(для контроллера F407VGT6) - Программатор:
stlink(так как мы используем встроенный на плату STLink программатор) - Путь к тулчейну для сборки:
C:\ST\STM32CubeIDE_2.1.1\STM32CubeIDE\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.14.3.rel1.win32_1.0.100.202602081740\tools\bin\arm-none-eabi-gcc.exe(путь к расположениюarm-none-eabi-gccна компьютер, можно указать<auto>е) - Путь к утилите для прошивки:
C:\ST\STM32CubeIDE_2.1.1\STM32CubeIDE\plugins\com.st.stm32cube.ide.mcu.externaltools.cubeprogrammer.win32_2.2.400.202601091506\tools\bin\STM32_Programmer_CLI.exe(путь к расположениюSTM32_Programmer_CLIна компьютере, можно указать<auto>) - Путь к проекту CubeMX:
D:\targets\stm32cube\stm32cube_running_lights\(путь, по которому был сохранен и сгенерирован проект из CubeMX) - Планировщик:
freeRTOS(определён в проекте CubeMX) - COM-порт:
COM8(имя порта для обмена данными в интерактивном режиме) - Резервируемый модуль USART:
2(определён в проекте CubeMX)
После этих настроек можно перейти к выполнению модели на STM32
Выполнение модели
Аналогично предыдущему выполнению, необходимо переключить среду выполнения модели и можно использовать оба режима. Благодаря планировщику FreeRTOS при выполнении кода на контроллере будет выдерживаться размер шага модели.
Демонстрация работы модели на STM32 в независимом режиме показана на записи ниже:
Заключение
В примере мы рассмотрели и проверили программирование STM32 из Engee в двух фреймворках: stm32duino и stm32cube, и, соответственно, для двух пакетов поддержки - Arduino и STM32.
Файлы проекта - модели и проект CubeMX удобно использовать для старта в пользовательских проектах с STM32.