For working with STM32, general steps are:

1) Create based project with STM32CudeMX: config GPIO, Clocks, Midware, ... and select toolchain/IDE to generate: EWARM, MDK-ARM, STM32CudeIde, Makefile

2) Open chosen IDE to work with

In this article, I will guide you steps to develop STM32 under your favorite VSCode environment in Windows/Linux/Macos platforms.

Install VSCode plugin

In VSCode, search for plugin stm32-for-vscode


Install toolchains

Install toolchains in Windows

1) Install choco package manager. You can follow Chocolatey official guidance

2) Install latestARM GNU Toolchain and make:

choco install gcc-arm-embedded
choco install openocd
choco install make

Validate those tools are installed:

arm-none-eabi-gcc --version
arm-none-eabi-gcc.exe (GNU Arm Embedded Toolchain 10.3-2021.10) 10.3.1 20210824 (release)
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO

openocd --version
Open On-Chip Debugger 0.12.0 (2023-01-14-23:37)
Licensed under GNU GPL v2
For bug reports, read

make --version
GNU Make 4.4.1
Built for Windows32
Copyright (C) 1988-2023 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Install toolchains in Linux/Macos

Just look at your package management and install package gcc-arm-embedded and openocd

Archlinux based:

sudo pacman -Syu
sudo pacman -S arm-none-eabi-gcc
sudo pacman -S openocd

Debian based Linux:

sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa
sudo apt update
sudo apt-get install gcc-arm-embedded
sudo apt-get install openocd


brew install --cask gcc-arm-embedded
brew install open-ocd


1) In STM32CudeMX, in Project Manager select Toolchain/IDE as Makefile and generate Code

2) Open project with VSCode and open left menu STM32 for VScode - this plugin should recognize all tools automatically and you can build/flash/debug on the target board without any issue.

Debug with VSCode:

Advantage of this VScode plugin - it looks for toolchain/debug tool and also STM32CudeMX settings and generate:

  • VSCode tasks: compile/debug under subfolder .vscode
  • Generate openocd.cfg configuration under the main project folder