記事ディレクトリ
VSCodeはSTM32開発環境を構築します
以前にSTM32を開発するために使用された開発環境はMDK+STM32CubeMX方式です。MDKは有料ソフトウェアであり、開発環境は作業後にLinuxに集中し、IDEが高い確率で使用されるため、クロスプラットフォームのパフォーマンスは低くなります。 VSCode、またはその他のelicpiseベースのフレームワークMDKを使用しなくなったため、VSCodeを使用してSTM32を開発する方法を学びます。このセクションでは、VSCodeを使用してSTM32開発環境を構築するプロセスを記録します。開発チェーン全体は次のとおりです。VSCode編集コード-> ARMGCCコンパイル->OpenOCDシミュレーションのダウンロード
1.ソフトウェアツールの準備
環境を設定する前に、いくつかのツールとソフトウェアを準備する必要があります
- VSCodeソフトウェア
公式ウェブサイトのダウンロード:VSCode公式ウェブサイト
- STM32CubeMX
公式ウェブサイトのダウンロード:STM32CubeMXダウンロード
- Gitツール
公式ウェブサイトのダウンロード:Gitダウンロード
- OpenOCD
公式サイトOpenOCDをダウンロードしてください。ダウンロードが完了すると、インストーラーではなくフォルダーになります。ダウンロード後、解凍する固定の場所を見つけて、解凍ディレクトリをシステム環境に追加します。
- arm-none-eabi-gccコンパイラのダウンロード
公式Webサイトをダウンロードする:公式Webサイトをダウンロードし、サフィックスwin32.exeを選択してダウンロードしてインストールし、インストール後にシステム環境変数にインストールパスを追加します。
2.VSCode構成
ソフトウェアの準備ができたら、VSCode環境をさらに構成します。ソフトウェアを開いた後、最初にいくつかの重要なプラグインをインストールします。
ARMはアセンブリコードの読み取りに使用され、C / C ++は自動完了に便利であり、Cortex-Debugはチップのデバッグに使用され、プラグインのインストールは完了します。CubeMXを使用して新しいSTM32プロジェクトを作成し、IOポートを構成します。照明用:
次に、ビルドをmakefileプロジェクトとして設定します。
コードを生成したら、プロジェクトディレクトリに移動し、VSCodeを開きます。ここで右クリックしてgit bash
入力code .
し、Enterキーを押してVSCodeプロジェクトのフォルダーを開きます。
2.1設定コマンドライン
VSCodeはコマンドラインに大きく依存しているため、最初のステップはコマンドラインをGitBashに変更し、左下隅の記号をクリックしてシステム設定を入力することです。
設定ファイルを開く
次の構成コードを挿入します。
"terminal.integrated.profiles.windows": {
"GitBash": {
"path": "D:\\Git\\bin\\bash.exe",
"args": [],
}
},
"terminal.integrated.defaultProfile.windows": "GitBash",
"terminal.external.windowsExec": "D:\\Git\\bin\\bash.exe",
Gitインストールディレクトリにbashパスを書き込みます。これは、
D:\\Git\\bin\\bash.exe
次に、ctrl + shift + `を使用してコマンドラインを開きます。デフォルトでは、GitBashがコマンドラインとして使用されていることがわかります。
2.2作成ツールを追加する
次に、コマンドラインでmake -j4と入力して、4コアのコードをコンパイルします。makeが見つからないというエラーがある場合は、ezwinportsに移動してダウンロードmake-4.1-2-without-guile-w32-bin.zip
し、解凍したコンテンツをGITインストールの下のmingw64フォルダーに配置します。パスGit\mingw64\
、入れて繰り返しを選択問題を防ぐためにファイルを上書きしないでください。そうすれば、makeコマンドを通常どおりに使用できます。makeコンパイルは、CubeMXによって生成されたMakefileルールに従ってコンパイルされ、コンパイルされたファイルが生成されます。
Makefileを変更して、生成されたファイル名、コンパイルレベル、およびその他のパラメータを設定できます。makefileの構文をある程度理解している必要があります。
2.3構成のダウンロード
コンパイルが完了し、生成されたファイルは\ build \の下にあり、生成されたファイルにはVSCode_Test.elf、VSCode_Test.bin、VSCode_Test.hexが含まれ、binはバイナリファイル、hexは16進ファイル、elfはに基づいて含まれます。 bin他の多くの情報、ここではOpenOCDを使用してプログラムをダウンロードしてダウンロードし、ダウンロードファイルは.elf実行可能ファイルを使用します
task.json構成ファイルを作成して、後でダウンロード命令をすばやく実行できるようにするタスクを作成します。作成方法は次のとおりです。
デフォルト形式でタスクを作成し、task.jsonファイルを選択して、MSbuildを使用してエクスポートします
作成が完了すると、.vscodeフォルダーにtask.json構成ファイルがあることがわかります。それをクリックすると、ファイルにデフォルトの構成タスク形式があることがわかります。
これに基づいて変更しました:ダウンロードタスクを追加し、
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "download",
"type": "shell",
"command": "openocd",
"args": [
"-f",
"D:/VSCode/ARM/ARM_PACK/OpenOCD-20211118-0.11.0/share/openocd/scripts/interface/stlink-v2.cfg",
"-f",
"D:/VSCode/ARM/ARM_PACK/OpenOCD-20211118-0.11.0/share/openocd/scripts/target/stm32f4x.cfg",
"-c",
"program build/VSCode_Test.elf verify reset exit"
],
"group": "build",
"presentation": {
// 配置静默输出
"reveal": "silent"
},
// 报错匹配
"problemMatcher": "$gcc"
}
]
}
labelはタスク名、typeは実行シェルスクリプト、commandは実行された命令、ここではopenocd、argは実行命令のパラメーターを含み、2つの主要なパラメーターは次のとおりです。
"D:/VSCode/ARM/ARM_PACK/OpenOCD-20211118-0.11.0/share/openocd/scripts/interface/stlink-v2.cfg"
"D:/VSCode/ARM/ARM_PACK/OpenOCD-20211118-0.11.0/share/openocd/scripts/target/stm32f4x.cfg",
stlink-v2.cfgはダウンローダーのバージョンです。stlink-v2はstlink-v2.cfgを使用し、jlinkはjlink.cfgを使用します。これらのファイルは、openocdの解凍ディレクトリにあります。
stm32f4x.cfgは、対応するチップの構成ファイルであり、openocdの解凍ディレクトリにもあります。これらの2つのパラメーターは、2つのファイルの絶対パスです。追加が完了したら、ダウンロードプログラムを実行します。
ショートカットを使用してダウンロードをctrl+shift+b
実行します
次に、プログラムがダウンロードされます
2.4シミュレーションの構成
上記のダウンロードが完了したら、シミュレーションのパラメーターを構成し、OpenOCDを使用してシミュレーションし、シミュレーション実行構成ファイルを追加します。
環境の選択CortexDebug
追加が完了すると、シミュレーション実行構成ファイル(launch.json)が作成され、ファイルを開いて構成を追加し、OpenOCDを選択すると、コード変更テンプレートが自動的に追加されます。
彼のパラメータを変更します:
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"cwd": "${workspaceRoot}",
"executable": "./build/VSCode_Test.elf",
"name": "STM32 Debug",
"request": "launch",
"type": "cortex-debug",
"showDevDebugOutput": true,
"servertype": "openocd",
"device": "STM32F407VE",
"configFiles": [
"D:/VSCode/ARM/ARM_PACK/OpenOCD-20211118-0.11.0/share/openocd/scripts/interface/stlink.cfg",
"D:/VSCode/ARM/ARM_PACK/OpenOCD-20211118-0.11.0/share/openocd/scripts/target/stm32f4x.cfg",
],
"svdFile": "./STM32F407.svd"
},
]
}
主なものはファイルをダウンロードすることです
"executable": "./build/VSCode_Test.elf",
ダウンローダー構成ファイル
"configFiles": [
"D:/VSCode/ARM/ARM_PACK/OpenOCD-20211118-0.11.0/share/openocd/scripts/interface/stlink.cfg",
"D:/VSCode/ARM/ARM_PACK/OpenOCD-20211118-0.11.0/share/openocd/scripts/target/stm32f4x.cfg",
],
また、stm32シミュレーション時のオンチップペリフェラルレジスタファイル。このファイルは、STM32公式Webサイトからダウンロードし、対応するモデルを選択して、シミュレーションプロセス中にペリフェラルレジスタ情報を表示するディレクトリにコピーする必要があります。 STM32F4:SVDファイル
"svdFile": "./STM32F407.svd"
構成が完了したら、main関数にブレークポイントを設定し、F5キーを押してシミュレーションを実行します。
シミュレーションが完了しました
2.5コード環境を作成するようにVSCodeを構成する
上記のシミュレーションとダウンロードは完了しましたが、コードを記述したところ、コードに多くのエラーと警告が含まれていることがわかりました。プログラムの実行には影響しませんが、主にVSCodeがインデックスを作成しなかったため、非常に面倒でした。プロジェクトパス全体次のステップインデックスを追加し、これらのエラーと警告を削除し、CおよびCPP環境構成ファイルを追加し、ctrl + shift + Pを押してコマンドパレットを開き、C / Cppを実行します:構成を編集してc_cpp_propertiesを生成します.json構成ファイル:
ファイルは次のとおりです。
次のコードに変更されました。
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**",
"${workspaceFolder}/Drivers/STM32F4xx_HAL_Driver/Inc",
"${workspaceFolder}/Drivers/STM32F4xx_HAL_Driver/Inc/Legacy",
"${workspaceFolder}/Drivers/CMSIS/Device/ST/STM32F4xx/Include",
"${workspaceFolder}/Drivers/CMSIS/Include",
"${workspaceFolder}/Drivers/CMSIS/Include",
"${workspaceFolder}/Core/Inc",
"D:/VSCode/ARM/ARM_PACK/ARM_GCC/10 2021.10/arm-none-eabi/include"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE",
"USE_HAL_DRIVER",
"STM32F407xx"
],
"compilerPath": "D:\\VSCode\\ARM\\ARM_PACK\\ARM_GCC\\10 2021.10\\bin\\arm-none-eabi-gcc.exe",
"cStandard": "c11",
"cppStandard": "c++14",
"intelliSenseMode": "windows-gcc-x86"
}
],
"version": 4
}
変更が保存された後、C / CPPは上記のパスに従ってファイルにインデックスを付け、設定されたコンパイラに従ってCの構文を完成させます。エラーや警告は表示されなくなり、開発がより快適になります。
この時点で、STM32開発環境のVSCode構成が完了します。これらの操作のアイデアは、STM32に限定されません。基本的に、すべてのチップが共通です。それは、投げる意思があるかどうかによって異なります。