SNSへはこちら

マイコン向けの開発環境構築(VSCode) (2) - STM32のビルド・OCD書き込み

前回は中身がなかった記事でしたが、今回は STM32 について書きたいと思います。

C/C++の設定

まずはプロジェクトフォルダを開きましょう。言い忘れていましたが、本記事では System Workbench for STM32 で作成されたプロジェクトを VSCode で使うことを目的としています。

例によって、コマンドパレットから C/Cpp: Edit Configurations... をします。

STM32F303K8T6 の場合は以下のように記述します。

{
    "configurations": [
        {
            "name": "Mac",
            "includePath": [
                "${workspaceRoot}/inc",
                "${workspaceRoot}/HAL_Driver/Inc",
                "${workspaceRoot}/CMSIS/device",
                "${workspaceRoot}/CMSIS/core"
            ],
            "defines": [
                "STM32F303xx",
                "USE_HAL_DRIVER",
                "ARM_MATH_CM4"
            ],
            "browse": {
                "path": [
                    "${workspaceRoot}"
                ]
            }
        }
    ],
    "version": 4
}

こうすることで、CMSIS-DSP もシンタックスのエラー無くコードが書けますし、HAL だって使うことが出来ます。この JSON 記述ファイルは見て何となく分かると思います。一応補足しておくと、defines#define に相当する部分です。

Taskの設定

コマンドパレットからタスクの構成をしましょう。今回は書き込みに openocd を使うことを前提とします。

tasks.json は以下のようです。

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build all",
            "type": "shell",
            "group": "build",
            "command": "cd Debug; make all post-build -j4",
            "problemMatcher": "$gcc"
        },
        {
            "label": "flash through cmsis-dap",
            "type": "shell",
            "group": "none",
            "command": "openocd",
            "args": [
                "-f",
                "interface/cmsis-dap.cfg",
                "-f",
                "target/stm32f3x.cfg",
                "-c",
                "'program ${cwd}/Debug/Registers_F303.elf; reset; exit'"
            ],
            "problemMatcher": []
        }
    ]
}

まぁ至って普通ですね。特に難しいことはありません。僕は雰囲気で JSON を書いている。そうだ。

上の Registers_F303.elf の部分は各自のプロジェクト名(生成バイナリ名)に合わせてください。

ここで、「clean の実装がないじゃないか」と気付いた人がいるでしょう。そう、System Workbench の生成する makefile にある clean ターゲットは、カレントディレクトリのものを全て削除するという過激極まりないものなので除外しました。実行する前にご自身で実装をし直すことをおすすめします。それじゃ IDE の方はどうやっているんだろう。

さて

ここまで来れば簡単。コマンドパレットを出して、「タスクの実行」から所望のタスクを選ぶだけ。ビルドしてから書き込みを行いたい場合は、「build all」→「flash through cmsis-dap」をすれば OK。お手軽すぎる。

ということで、書き込みまでの説明でした。お次は CMSIS-DAP のデバッグです。