配置vscode作為STM32代碼的編輯器(替代keil5)


前段時間在使用keil5編寫stm32相關代碼的時候,奇怪的代碼補全機制很讓人抓狂,於是想到了之前一直使用的vscode,就想着將編輯代碼的環節轉移到vscode中,而編譯與燒寫的過程仍然通過keil5軟件完成。

最開始在網絡上查到的一種方式是僅僅將vscode作為keil5的外部編輯器,但在實際使用過程中,這種方法並不能完成函數的補全。vscode作為“宇宙最強編輯器”(doge)很顯然發揮不出來他的真正威力。於是繼續查找,又想到stm32程序由c/c++編寫,於是去查了相關文檔,發現了通過配置文件c_cpp_properties.json可以實現相關代碼的智能補全。

官方文檔:c_cpp_properties.json

實現步驟
1. 使用`keil5`新建好工程
2. 在工程根目錄新建文件夾` .vscode`
3. 在` .vscode `文件夾內新建文件` c_cpp_properties.json`
4. 將下列代碼復制進` c_cpp_properties.json`

{
"configurations": [
{
"name": "STM32",
"includePath": [
"D://keil_v5/ARM/ARMCC/**",    //這里修改為相應的keil5文件目錄
"${workspaceFolder}/**"
],
"browse": {
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": "${workspaceRoot}/.vscode/.browse.c_cpp.db",
"path": [
"D://keil_v5/ARM/ARMCC/**",
"${workspaceFolder}/**"
]
},
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE",
"__CC_ARM",
"USE_STDPERIPH_DRIVER",
"STM32F10X_HD"
],
"intelliSenseMode": "msvc-x64"
}
],
"version": 4
}

 

代碼解釋

configuration:該組配置了補全引擎的相關信息。下文未提到的相關信息都可以從上文中的官方文檔查到。

${workspaceFolder} :工作目錄。

${workspaceFolder}/** 中的 **表示在該目錄下進行遞歸搜索,不填寫的話,搜索引擎默認不進行遞歸搜索

name:任意的名字。改名字是為了辨別當前的配置信息。

includePath:指定補全引擎進行搜索時從哪些目錄下搜索。

browse:該組內的配置信息主要在 Go To Definition/Declaration 起作用,告知實現跳轉功能的引擎應該去哪里尋找相關文件。

  • path:與 includePath 設置成一樣的就可以。
  • limitSymbolsToIncludedHeaders: 如果有部分文件不能正常跳轉,可以嘗試將該項設置為false,一般設置為true。
  • databaseFilename: 照抄即可

defines:該項包含了keil5中宏定義的部分,例如在keil5 options for target 中定義的 USE_STDPERIPH_DRIVER 就要寫在這里。上文defines中的前五項照抄即可,最后一項根據實際情況修改。

keil5中為何要定義 USE_STDPERIPH_DRIVER 和 STM32F10X_HD 可以參考下面兩篇文章。
STM32為什么要在C/C++配置里寫USE_STDPERIPH_DRIVER詳解
STM32標准外設庫中USE_STDPERIPH_DRIVER, STM32F10X_MD的含義

intelliSenseMode:將補全的智能感知模式映射到相關的編譯器變體上。不同平台有不同的默認值。

  • Windows: msvc-x64
  • Linux: gcc-x64
  • macOS: clang-x64

version:相當於該文件的識別碼,便於軟件識別該文件同時確定如何去解析該文件。該參數直接照抄即可。官方文檔中不推薦修改該信息。

結語

到此就結束了文件的配置。完成后工程根目錄如圖所示。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM