Статья о настройке 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.

bandicam 2023-01-11 12-05-07-847.jpg

Cortex-Debug ARM Cortex-M GDB Debugger support for VSCode

bandicam 2023-01-11 12-05-35-202.jpg

Набора инструментов ARM

Набор инструментов под ARM (качаем на оф. сайте

Не забудте поставить галку на пункте "Добавить путь в переменные окружения"

bandicam 2023-01-11 11-45-29-655.jpg

Иначе придется вручную добавлять путь в переменную Path:

C:\Program Files (x86)\GNU Arm Embedded Toolchain\10 2021.10\bin

bandicam 2023-01-11 11-56-34-345.jpg

Для проверки наберите в командной строке

arm-none-eabi-gcc -v

Получаем вывод установленных компонентов, если этого не произошло, то проверяем Path в переменных ОС.

Установка Openocd

penocd - отладчик, качаем тут версию для Windows

Прямая ссылка на актуальную версию в момент написания статьи

Распаковываем в Program Files например..

bandicam 2023-01-11 12-19-02-194.jpg

Настройка Переменных Windows для Openocd

Добавляем путь до отладчика в переменную Path

bandicam 2023-01-11 12-29-01-787.jpg

Проверяем вывод отладчика набрав в командной строке openocd. Если что-то пошло не так, то проверяйте добавленные пути.

MinGW Installation Manager

Устанавливаем менеджер пакетов "Minimalist GNU for Windows" скачать

bandicam 2023-01-11 14-11-29-656.jpg

После выбираем 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