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


引言

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




准備過程

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

官方文檔:c_cpp_properties.json




實現步驟

  • 使用keil5新建好工程
  • 在工程根目錄新建文件夾 .vscode
  • .vscode 文件夾內新建文件 c_cpp_properties.json
  • 將下列代碼復制進 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_DRIVERSTM32F10X_HD 可以參考下面兩篇文章。
http://openedv.com/forum.php?mod=viewthread&tid=229746&highlight=USE%5C_STDPERIPH%5C_DRIVER
https://www.cnblogs.com/TrueElement/archive/2012/09/06/2673208.html

intelliSenseMode

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

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


version

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




結語

到此就結束了文件的配置。完成后工程根目錄如圖所示。
dTYCOs.png
補全功能如下所示。
dTYnl4.png

真的比keil5好用億點點!!!


免責聲明!

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



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