前回は中身がなかった記事でしたが、今回は 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 のデバッグです。