back

Want to program STM32 Black Pill as a USB MIDI device.
Cannot launch Arduino 2 without unnatural acts
bogus incompatibility with ImDisk...

VSCode

rant

Visual Studio Code describes itself as a "standalone source code editor",
NOT an IDE, which it is indeed NOT, since more mashup than integrated.

Task-oriented vs event-driven
Users presumably employ VSCode to accomplish tasks.
Event-driven user interfaces can make that nearly impossible.
- some VSCode menus are empty until some other menu items are completed...

Configuring VSCode should be a rare event...
- Given that rarity, configuration should be easily accomplished and well explained.
- At least for VSCode-Arduino, configuration is hardly explained
	and unclear whether actually accomplished.

This is my first Visual Studio Code experience.
I downloaded and installed it,
 then immediately added Arduino Community Edition and Vim extensions
 - clicking on those extensions shows a page about installing, already done.. wtf???
After initial installation, Arduino Community Edition reported itself not activated...??
(... which is never explained ...)
Arduino Community Edition store page is at best misleading.
No Arduino CLI was bundled with it;  it silently used that already installed by Arduino 2.
When setting BlackPill F411CE Board, OUTPUT logged ESP32 installation...??!!

Admittedly, the store page did mention using F1, which I missed/forgot,
but F1 is absolutely essential to running Arduino in VSCode;
-  nearly everything task-oriented requires first pressing F1.

Adding insult to injury

VSCode editor response to keystrokes is unusably slow.

not just me


VSCode-Arduino

Community maintained version of Visual Studio Code extension for Arduino
- corresponding Arduino Tools extension for VS Code

So far
Installed VSCode (about 434MB in F:\VSCode + 309MB in ~\.vscode);
added extensions
- Arduino Community Edition
- Vim emulation
- selected BlackPill F411CE
- F1, Arduino: Verify SerialUSB.ino

This builds (F1, then scroll to and select Arduino: Verify)
  first OUTPUTs:

[Warning] Output path is not specified.
 Unable to reuse previously compiled files. Build will be slower. See README.
  • what Output path?
  • where to specify?
  • what README?
  • FWIW, found builds in F:\Temp\arduino
  • found configuration crap in /c/Users/bleke/AppData/Roaming/Code.
  • vscode-arduino stuff is in
    ~/.vscode/extensions/vscode-arduino.vscode-arduino-community-0.7.2-win32-x64
  • That [Warning] may be from arduino-cli
  • find . -name 'arduino-cli*' -print
    ~/.arduinoIDE/arduino-cli.yaml
    ~/.vscode/extensions/vscode-arduino.vscode-arduino-community-0.7.2-win32-x64/assets/platform/win32-x64/arduino-cli
    ~/.vscode/extensions/vscode-arduino.vscode-arduino-community-0.7.2-win32-x64/assets/platform/win32-x64/arduino-cli/arduino-cli.exe
    ~/AppData/Local/Arduino15/packages/STMicroelectronics/hardware/stm32/2.11.0/CI/build/arduino-cli.py
  • I find no Python installed...

  • arduino-cli.exe Version: 0.31.0 is installed;  1.3.0 is available,
    but does not by default find ~/.arduinoIDE/arduino-cli.yaml;
  • bundled arduino-cli does not support:
    build_cache:
        path: f:/Temp/arduino
  • My default shell is msys64 bash; added to .bash_profile:
    # 19 Aug 2025 arduino-cli
    if [ -r "${USERPROFILE}/.arduinoIDE/arduino-cli.yaml" ]; then
        export ARDUINO_CONFIG_FILE="${USERPROFILE}/.arduinoIDE/arduino-cli.yaml"
    fi
    if [ -d "/d/my/arduino-cli_1.3" ]; then
        PATH="${PATH}:/d/my/arduino-cli_1.3"
        alias arduino-cli="/d/my/arduino-cli_1.3/arduino-cli.exe"
    fi
    ...yielding:
    bleke@Antec UCRT64 ~
    $ arduino-cli version
    arduino-cli  Version: 1.3.0 Commit: 3eecf201 Date: 2025-08-11T08:40:48Z
    
    bleke@Antec UCRT64 ~
    $ arduino-cli config dump
    board_manager:
        additional_urls:
            - https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json
    build_cache:
        path: f:/Temp/arduino
    directories:
        builtin:
            libraries: C:\Users\bleke\AppData\Local\Arduino15\libraries
        data: c:\Users\bleke\AppData\Local\Arduino15
        user: c:\Users\bleke\Documents\Arduino
    locale: en
Consequently, must set arduino.json "output" uniquely for each sketch
e.g.:  $ cat .vscode/arduino.json
{
    "configuration": "pnum=BLACKPILL_F411CE,upload_method=swdMethod,xserial=generic,usb=none,xusb=FS,opt=osstd,dbg=none,rtlib=nano",
    "board": "STMicroelectronics:stm32:GenF4",
    "sketch": "SerialUSB.ino",
    "output": "f:/Temp/arduino/sketches/SerialUSB"
}

STM32 Upload method is set in Arduino Board Configuration;
NOT Arduino: Select Programmer
... but Upload is broken

Documentation
VS Marketplace   <- this wants careful reading (and rereading)
arduino-cli     GitHub
DeepWiki;
DEV
CIRCUITSTATE

ST has a non-Arduino VSCode plugin

maintained by blekenbleu