Vscode и STM32 без CubeMX и HAL под Windows
Статья о настройке Visual Studio Code для работы с микроконтроллерами STM32 в среде Windows используя минимальный набор файлов без HAL библиотек, данный шаблон одинаково хорошо подходит для Windows и Linux.
Описанный шаблон можно легко расширить. Для примера Я использую отладочную плату STM32F407G-DISC1 с чипом STM32F407VGT6, но если у Вас что то другое, то данный пример легко можно изменить под ваши задачи.
Список необходимого:
Visual Studio Code
Набор инструментов под ARM
Openocd - бесплатный отладчик.
Менеджер пакетов "Minimalist GNU for Windows"
CMAKE
Исходники CMSIS и другое бирем с гита
Visual Studio Code
После установки (ссылка), добовляем необходимые расширения C/C++ и Cortex-Debug:
C/C++ IntelliSense, debugging, and code browsing.
Cortex-Debug ARM Cortex-M GDB Debugger support for VSCode
Набора инструментов ARM
Набор инструментов под ARM (качаем на оф. сайте)
Не забудте поставить галку на пункте "Добавить путь в переменные окружения"
Иначе придется вручную добавлять путь в переменную Path:
C:\Program Files (x86)\GNU Arm Embedded Toolchain\10 2021.10\bin
Для проверки наберите в командной строке
arm-none-eabi-gcc -v
Получаем вывод установленных компонентов, если этого не произошло, то проверяем Path в переменных ОС.
Установка Openocd
penocd - отладчик, качаем тут версию для Windows
Прямая ссылка на актуальную версию в момент написания статьи
Распаковываем в Program Files например..
Настройка Переменных Windows для Openocd
Добавляем путь до отладчика в переменную Path
Проверяем вывод отладчика набрав в командной строке openocd. Если что-то пошло не так, то проверяйте добавленные пути.
MinGW Installation Manager
Устанавливаем менеджер пакетов "Minimalist GNU for Windows" скачать
После выбираем mingw32-make-bin и жмем Apply Changes для установки. mingw32-make-bin необходим для сборки прокта.
CMAKE
качаем тут https://cmake.org/download/
CMake нужен для описания правил сборки проекта.
Настройка шаблона проекта
Данная информация скорее предназначина для того если у вас другой микроконтрллер и вы хотитите собрать свой шаблон ориентируясь на пример.
Готовый шаблон выложен на https://bitbucket.org/ivankoff/stm32f407_cmsis/src/master/
Вот така структура каталогов должна получиться для STM32F407. Соответственно используя другой микроконтроллер следует использовать соответствующие файлы.
stm32f407_cmsis
│ build_all.bat
│ build_all.sh
│ build_debug.bat
│ build_debug.sh
│ build_release.bat
│ build_release.sh
│ clean.bat
│ clean.sh
│ CMakeLists.txt
│ gcc_cm4f.cmake
│ README.md
│ STM32F407.svd
│
├───.vscode
│ .cortex-debug.peripherals.state.json
│ .cortex-debug.registers.state.json
│ c_cpp_properties.json
│ launch.json
│ settings.json
│ tasks.json
│
├───app
│ main.c
│
└───STM32F407_sdk
└───platform
├───CMSIS
│ └───Core
│ └───Include
│ cmsis_compiler.h
│ cmsis_gcc.h
│ cmsis_version.h
│ core_cm4.h
│ mpu_armv7.h
│
└───Device
└───ST
└───STM32F407
│ License.md
│
├───Include
│ stm32f407xx.h
│ stm32f4xx.h
│ system_stm32f4xx.h
│
└───Source
│ system_stm32f4xx.c
│
└───GCC
startup_STM32F407.s
STM32F407.ld
Чтобы не описывать покажу что и откуда нужно взять и куда переместить и переименовать
Скрипт для линковщика (*.ld)
STM32CubeF4\Projects\STM32F4-Discovery\Templates_LL\SW4STM32\STM32F4-Discovery\STM32F407VGTx_FLASH.ld
копируем и переименовываем в
stm32f407_cmsis\STM32F407_sdk\platform\Device\ST\STM32F407\Source\GCC\STM32F407.ld
Файл startup
STM32CubeF4\Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\gcc\startup_stm32f407xx.s
копируем и переименовываем в
stm32f407_cmsis\STM32F407_sdk\platform\Device\ST\STM32F407\Source\GCC\startup_STM32F407.s
Заголовочные файлы микроконтроллера
STM32CubeF4\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f4xx.h
копируем в
stm32f407_cmsis\STM32F407_sdk\platform\Device\ST\STM32F407\Include\stm32f4xx.h
STM32CubeF4\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f407xx.h
копируем в
stm32f407_cmsis\STM32F407_sdk\platform\Device\ST\STM32F407\Include\stm32f407xx.h
STM32CubeF4\Drivers\CMSIS\Device\ST\STM32F4xx\Include\system_stm32f4xx.h
копируем в
stm32f407_cmsis\STM32F407_sdk\platform\Device\ST\STM32F407\Include\system_stm32f4xx.h
STM32CubeF4\Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\system_stm32f4xx.c
копируем в
stm32f407_cmsis\STM32F407_sdk\platform\Device\ST\STM32F407\Source\system_stm32f4xx.c
CMSIS : Заголовочные файлы ядра
STM32CubeF4\Drivers\CMSIS\Core\Include\cmsis_compiler.h
копируем в
stm32f407_cmsis\STM32F407_sdk\platform\CMSIS\Core\Include\cmsis_compiler.h
STM32CubeF4\Drivers\CMSIS\Core\Include\cmsis_gcc.h
копируем в
stm32f407_cmsis\STM32F407_sdk\platform\CMSIS\Core\Include\cmsis_gcc.h
STM32CubeF4\Drivers\CMSIS\Core\Include\cmsis_version.h
копируем в
stm32f407_cmsis\STM32F407_sdk\platform\CMSIS\Core\Include\cmsis_version.h
STM32CubeF4\Drivers\CMSIS\Core\Include\core_cm4.h
копируем в
stm32f407_cmsis\STM32F407_sdk\platform\CMSIS\Core\Include\core_cm4.h
Файл модуля управления защитой памяти STM32
STM32CubeF4\Drivers\CMSIS\Core\Include\mpu_armv7.h
копируем в
stm32f407_cmsis\STM32F407_sdk\platform\CMSIS\Core\Include\mpu_armv7.h
CMSIS-SVD файл микроконтроллера
stm32f407_cmsis\STM32F407.svd
скачан отсюда: https://github.com/posborne/cmsis-svd/blob/master/data/STMicro/STM32F407.svd
Также там-же можно скачать файл svd если у вас другая модель микроконтроллера https://github.com/posborne/cmsis-svd/tree/master/data/STMicro
Описаник файлов конфигурации VSCode
В каталоге .vscode находятся файлы конфигурации для работы в VSCode
tasks.json - содержит команды для сборки различных конфигурация (Build All, Build Debug, Build Release, Clean Project). Чтобы вызвать определенную конфигурацию для сборки проекта нажмите CTRL+SHIFT+B. В самом файле находятся только ссылки на скрипты для сборки проекта.
{
"version": "2.0.0",
"tasks": [
{
"label": "Build All",
"type": "shell",
"command": "${workspaceFolder}/build_all",
"group": "build"
},
{
"label": "Build Debug",
"type": "shell",
"command": "${workspaceFolder}/build_debug",
"group": "build"
},
{
"label": "Build Release",
"type": "shell",
"command": "${workspaceFolder}/build_release",
"group": "build"
},
{
"label": "Clean Project",
"type": "shell",
"command": "${workspaceFolder}/clean",
"group": "build"
}
]
}
launch.json
settings.json
c_cpp_properties.json
.cortex-debug.peripherals.state.json
.cortex-debug.registers.state.json
Подключение платы и тестирование
Comments
Comments are closed