2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

STM32 VSCodeExtension v2.0を使ってみる

Posted at

はじめに

久しぶりにマイコンを触ることになり、最近の開発環境を調べていると「STM32 VS Code Extension」という便利そうなツールを見つけました。STM32CubeMXとSTM32CubeCLT、VSCodeを組み合わせて開発できるこの拡張機能、試してみる価値がありそうです。

ちなみに公式サイトによると、

  • vscode 編集、コンパイル、デバッグ
  • CubeIDE 強力なデバッグ

のように使い分けするようです。

使用環境

  • OS : win11
  • STM32VSCodeExtension v2.1.1
  • STM32CubeMX v6.13.0
  • STM32CubeCLT v1.17.0
  • ST-MCU-FINDER
  • テスト用マイコン : stm32f767

インストール

STM32 VSCodeExtension

vscodeの拡張機能からインストールできます。インストール後タブに追加されていれば成功です。
STM32VSCodeExtension.png

STM32CubeMX

ピン設定等を行いCmakeプロジェクトを生成するためのアプリケーションです。 v6.11.0移行のものが必要なようです。今回は公式サイトから最新版をダウンロードしました。

STM32CubeCLT

コマンドライン・ツールセットのようです。こちらも同様に公式サイトから最新版をダウンロードしました。

ST-MCU-FINDER

マイコンの性能検索等に用いるツールのようです。vscode拡張機能内に設定項目があったのでインストールしましたが、マイコンへの書き込み等には不要です。こちらも同様に公式サイトから最新版をダウンロードしました。

拡張機能の設定

STM32VSCodeExtensionの設定をする必要があるようです。拡張機能の設定から以下の三項目を設定します。

  • STM32 VSCode Extension › Project Creator: Executable Path
    STM32CubeMX.exeの絶対パスを設定します。
  • STM32 VSCode Extension › Product Finder: Executable Path
    STMCUFinder.exeの絶対パスを設定します。書き込み等には不要です。
  • STM32 VSCode Extension › Cube CLT: Path
    CubeCLTフォルダの絶対パスを設定します。
    ex) C:\ST\STM32CubeCLT_1.17.0

使ってみる

CubeMXを使用する方法と基本構成のプロジェクトセットアップを使う方法があるようです。今回はCubeMXを使っていきます。

CMakeプロジェクトの作成

CubeMXを起動し、新たなプロジェクトを作成します。CubeMXの使い方については省略します。ただし、ProjectManager -> Project -> Toolchain/IDE をCMakeに変更後GENERATE CODEを行うようです。スクリーンショット 2025-01-03 231725.png

vscodeにインポート

次にvscodeから作成したcmakeプロジェクトをインポートします。VSCodeExtensionのImport CMake projectから先ほど作ったCMakeプロジェクトを選択します。スクリーンショット 2025-01-03 233319.png

インテリセンス設定

コード補完等のためのインテリセンスの設定を行います。.vscode/c_cpp_properties.jsonにincludePathとdefineを追加します。今回は追記後以下のようになりました。

c_cpp_properties.json
{
    "version": 4,
    "configurations": [
        {
            /** 
             * ms-vscode.cmake-tools plugin should be installed.
             * 
             * It provides data for C/C++ plugin,
             * such as include paths, browse paths, defines, etc.
             */
            "name": "STM32",
            "configurationProvider": "ms-vscode.cmake-tools",
            "intelliSenseMode": "${default}",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [
                "USE_HAL_DRIVER",
                "STM32F767xx", //使用しているマイコンに合わせて変更
                "__CC_ARM" // uint32_t等の型を定義するために必要
            ]
        }
    ]
}

ビルドの構成

CMakeの構成の設定を行います。以下の画像のように構成を[Debug]に設定します。タブにCMakeのアイコンがないときはCMake拡張機能をインストールしてみてください。スクリーンショット 2025-01-03 235752.png
ここで一度ビルドしてみます。以下の画像の位置をクリックすることでビルドができます。終了コード0で終了したら成功です。スクリーンショット 2025-01-03 235939.png
ここまで出来たら環境構築は完了です。

プログラムの記述

今回は試しにLEDの点滅プログラムを作ってみます。main.cのwhileループ内に以下のコードを追加しました。

main.c
  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0);
    HAL_Delay(100);
    /* USER CODE END WHILE */
    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */

もし自作ファイルを新たに作る場合はCMakeLists.txtへの追記も忘れずに行ってください。

プログラムの実行とデバッグ

プログラムができたら実行してみましょう。マイコンとPCをst-linkで繋ぎ、[Build & Debug Microcontroller - ST-Link]を実行します。LEDが点滅し始めました。変数もしっかりと確認できるようです。
スクリーンショット 2025-01-04 001538.png

プログラムの書き込み

プログラムの書き込みのみを行いたい場合は[ターミナル] -> [タスクの実行] -> [Build + Flash]でできるようです。スクリーンショット 2025-01-04 002129.png

最後に

メインエディタvscodeが使えるようになったことでコーディングのストレスがかなり減りました!良ければ使ってみてください!
またVSCodeExtensionの中にUser guideもあります。そちらも併せて確認してみてください。

おまけ

gitignoreも作成してみました。STM32用のものとCMake用のものを併せた簡単なものですが、参考になれば幸いです。

.gitignore
/Debug/
/.settings/
.mxproject
*.launch
/build/

# CMake
CMakeLists.txt.user
CMakeCache.txt
CMakeFiles
CMakeScripts
Testing
Makefile
cmake_install.cmake
install_manifest.txt
compile_commands.json
CTestTestfile.cmake
_deps
CMakeUserPresets.json
build.ninja
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?