使用VScode開發STM32,主要需解決包含頭檔案路徑的問題。
當我們使用VScode打開一個STM32的工程後,編譯器會在包含檔案出提示很多錯誤,顯示無法找到檔案。
這時我們需要随便找到一處紅色波浪線,點選并把光标移到那一行,左上角會出現一個黃色小燈泡。點選黃色小燈泡并選擇“編輯‘includePath設定’”。

直接用
c_cpp_properties.json
來配置:
VS Code自動在目前目錄下的.vscode檔案夾下生成一個c_cpp_properties.json檔案,我的配置給出如下:
{
"configurations": [
{
"name": "Win32",
"includePath": [
"C:/Program Files (x86)/GNU Arm Embedded Toolchain/9 2020-q2-update/lib/gcc/arm-none-eabi/9.3.1/include",
"${workspaceFolder}/Inc",
"${workspaceFolder}/Drivers/STM32F4xx_HAL_Driver/Inc",
"${workspaceFolder}/Drivers/STM32F4xx_HAL_Driver/Inc/Legacy",
"${workspaceFolder}/Drivers/CMSIS/Device/ST/STM32F4xx/Include",
"${workspaceFolder}/Drivers/CMSIS/Include"
],
"defines": [
"USE_HAL_DRIVER",
"STM32F407xx"
],
"compilerPath": "C:/Program Files (x86)/GNU Arm Embedded Toolchain/9 2020-q2-update/bin/arm-none-eabi-gcc.exe",
"intelliSenseMode": "gcc-x64",
"browse": {
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": "",
"path": [
"${workspaceFolder}"
]
}
}
],
"version": 4
}
這個配置是我研究測試很久得到的,保證沒問題,下面詳細解釋幾個重要部分:
- “name”:這是用于标記使用的平台的标簽。除了win32還可以選Linux或Mac。也就是說,這個json裡“configuration“下可以寫三組配置,隻要每組配置前面寫上不同的平台,即可在不同的作業系統上使用就會自動适配不同的配置,非常友善
- "includePath":告訴VS Code該去哪裡查找頭檔案。第一個目錄是C語言标準庫的目錄, 剩下的幾個目錄直接從Makefile裡複制然後稍微修改下即可。
表示項目檔案夾;"${workspaceFolder}"
- ”defines“:全局宏定義,告訴VS Code這些宏都被定義了,隻是沒寫在源碼中而已。上述多加的兩個宏是makefile裡的。
- "compilerPath":指定編譯器的路徑。因為有一些宏是編譯器自帶的,連makefile裡都沒有,例如
。有些教程裡會讓你在defines裡面加上__GNUC__
,但是這是沒必要的。隻要你指定了編譯器路徑,所有的編譯器自帶的宏就都導入了VS Code。__GNUC__
- "intelliSenseMode":因為我們用的是gcc是以選gcc-x64
- "browse.path":源檔案搜尋路徑。據說是用來做代碼補全和查找定義的,但是我測試後發現删去也不影響使用,不過還是留着吧。這個路徑和includePath不同,browse.path是自動遞歸所有子目錄的。而include.path預設隻看本目錄。
Ctrl+S儲存c_cpp_properties.json檔案,發現左邊目錄裡一個紅點都沒有了,強迫症舒服了!