【STM32U385RG 測評】搭建基于VSCode的STM32開發環境
文章目錄
- 【STM32U385RG 測評】搭建基于VSCode的STM32開發環境
- 一、安裝軟件
- 1.1 安裝VSCode
- 1.2 安裝STM32CubeMX
- 1.3 安裝STM32CubeCLT
- 1.4 安裝ST-MCU-FINDER-PC
- 二、安裝插件
- 2.1 安裝 STM32Cube for VSCode插件
- 三、創建項目
- 3.1 創建STM32CubeMX項目
- 3.2 查閱原理圖
- 3.3 修改引腳功能
- 3.4 生成CMake項目
- 四、編輯/編譯/下載/調試
- 4.1 導入項目
- 4.2 修改代碼
- 4.3 編譯代碼
- 4.4 下載固件
- 4.5 啟動調試
- 4.6 斷點調試
- 五、參考鏈接
本文將介紹如何搭建基于VSCode的STM32開發環境,并以NUCLEO-U385RG開發板上的LED閃爍為例,展示如何在VSCode環境下進行編碼、編譯、下載、調試全套的開發流程。
VSCode作為廣泛流行的文本編輯器,以豐富的插件生態而獨領風騷。在當今AI大流行的背景下,VSCode支持眾多AI編程輔助插件。在這樣的背景下,即便是嵌入式、單片機開發,使用VSCode(尤其是寫代碼)也應該成為一項基本技能。
一、安裝軟件
具體需要安裝下列軟件:
- VS Code,作為集成開發環境(IDE),當前最新版本:1.102.1;
- STM32CubeMX,用于生成初始化代碼,當前最新版本:6.15.0;
- STM32CubeCLT,用于編譯、調試、下載STM32代碼,當前最新版本:6.15.0;
- ST-MCU-FINDER-PC,ST MCU查找工具,當前最新版本:6.1.0;
1.1 安裝VSCode
VSCode是一個強大且開放的代碼編輯器,支持眾多編程語言(C、C++、Java、Python等等),以及各種插件。VSCode的插件生態非常豐富,這也是目前VSCode非常受大家歡迎的一個重要原因。
下載頁面: https://code.visualstudio.com/Download
VSCode可以直接下載,不需要注冊。安裝沒啥難度,不再贅述。
1.2 安裝STM32CubeMX
STM32CubeMX 實現了圖形化方式配置STM32 MCU的引腳功能、時鐘速率、中間件等等功能,并且可以一鍵生成整個項目的代碼。STM32CubeMX 的這些功能,極大的提升了開發效率,對于產品項目的原型開發,以及DIY愛好者進行電子制作非常有吸引力。
下載頁面: https://www.st.com.cn/zh/development-tools/stm32cubemx.html
需要注冊ST官網賬號之后才能下載。安裝沒啥難度,不再贅述。
1.3 安裝STM32CubeCLT
STM32CubeCLT官方的介紹是:
Toolset for third-party integrated development environment (IDE) providers, allowing the use of STMicroelectronics proprietary tools within their own IDE frameworks.
面向第三方集成開發環境(IDE)提供商的工具集,允許在其自己的IDE框架中使用STMicroelectronics的專有工具。
下載頁面: https://www.st.com.cn/zh/development-tools/stm32cubeclt.html
ST官網需要注冊之后,才能下載。安裝也沒啥難度,不再贅述。
安裝之后可以發現,STM32CubeCLT安裝目錄內包含了以下軟件:
- CMake,跨平臺構建工具,用于支持STM32CubeMX生成CMake項目的編譯構建;
- Ninja,一種輕量級的構建工具,用于支持STM32CubeMX生成CMake項目的編譯構建;
- GNU ARM交叉編譯工具鏈(arm-none-eabi-gcc),用于將C/C++源代碼編譯為STM32平臺的二進制代碼;
- STLink USB驅動,用于支持ST-Link調試器,安裝之后系統才可以正常識別ST-Link;
- STLink-gdb-server,用于支持通過ST-Link調試STM32 MCU;
- STM32 Programmer CLI,命令行界面的STM32下載工具,用于將固件下載到STM32 MCU的內部flash中;
其中,前三個工具(CMake、Ninja、arm-none-eabi-gcc)用于支持編譯,中間兩個(STLink USB驅動,STLink-gdb-server)用于支持調試,最后一個(STM32_Programmer_CLI)用于支持下載。
1.4 安裝ST-MCU-FINDER-PC
ST-MCU-FINDER-PC是 用于個人電腦的STM32和STM8產品查找工具。
下載頁面:https://www.st.com.cn/zh/development-tools/st-mcu-finder-pc.html
ST官網需要注冊之后,才能下載。安裝沒啥難度,不再贅述。
二、安裝插件
VSCode安裝完成后,還需要安裝STM32的VSCode插件,具體有:
- STM32Cube for Visual Studio Code(之前插件名是: STM32 VS Code Extension)
2.1 安裝 STM32Cube for VSCode插件
VSCode需要安裝的插件STM32 VS Code Extension,直接在插件欄搜索即可找到,安裝即可。
需要注意的是,這個插件本身依賴另外幾個插件,如下圖所示:
這幾個插件的作用分別為:
- C/C++ Extension Pack,用于支持C/C++語法高亮、代碼提示;
- Arm Assembly,用于支持ARM匯編的語法高亮、代碼提示;
- LinkerScript,用于支持鏈接腳本的語法高亮、代碼提示;
- GNU Linker Map files,用于支持生成的.map文件的代碼高亮;
- Hex Editor,用于支持以十六進制顯示并編輯二進制文件;
- Cortex-Debug,用于支持Arm Cortex-M內核MCU的調試;
完成以上軟件和插件的安裝,基于ST官方VSCode擴展的STM32開發環境已經搭建完成了!
三、創建項目
接下來,我們創建一個簡單的點燈程序,驗證一下剛剛搭建的開發環境是可以正常使用的。
3.1 創建STM32CubeMX項目
-
首先打開STM32CubeMX,通過菜單File→New Project打開新建項目窗口,在彈出的界面中選擇“Board Selector”標簽頁:
- 在Commercial Part Number欄中輸入U385RG,并回車;
- 在MCUs/MPUs List下方選中Board列有NUCLEO-U385RG-Q的一行;
- 點擊右上角Start Project按鈕;
- 彈出TrustZone設置的話框,選擇Witout TrustZone activated;
-
按Ctrl+S保存,選擇適當的位置保存ioc文件,例如保存到 E:\DIY\ST\STM32U385\21ic_bbs\Blink\ 目錄。
這樣CubeMX項目就創建好了。
3.2 查閱原理圖
STM32H7S78-DK開發板原理圖,下載鏈接為: https://www.st.com.cn/resource/en/schematic_pack/mb1841-u385rgq-e01-schematic.pdf
打開原理圖后,可以在第五找到如下LED相關的部分:
圖中,可以看到引腳為:
- GREEN:PA5
3.3 修改引腳功能
找到以上LED引腳后,在STM32CubeMX軟件的Pinout View中,可以通過搜索框,找到以上幾個引腳,并通過下拉菜單將其設置為GPIO_Output功能:
LED控制引腳設置完成后,通過左側的Categories->System Core->GPIO也可以看到:
修改User Label為LD2,如下圖:
3.4 生成CMake項目
CubeMX中完成引腳功能修改后,切換到Project Manager標簽頁,Project設置部分,取消Appli Project復選框,Toolchain/IDE選擇CMake,如下圖:
接著,切換到Code Generator設置,選中Generate peripheral initialization as a pair of ‘.c/.h’ per peripheral,如下圖:
此時,點擊CubeMX界面右上角位置的“GENERATE CODE”,將開始生成代碼到項目目錄內,并顯示進度。
生成完成后,點擊Open Folder打開目錄,可以看到生成的文件和目錄如下圖:
到這里,使用CubeMX創建項目完成了。
四、編輯/編譯/下載/調試
接下來就要使用VS Code,進行開發體驗了。通常我們開發過程中,需要不斷重復的幾個動作是: 編輯代碼、編譯構建、下載固件、斷點調試。
4.1 導入項目
打開VSCode,側邊欄點擊STM32 VS Code Extension插件圖標,可以看到插件的項目管理(Project Manager)菜單:
首次使用,可能會提示找不到CLT,然后彈出對話框,選擇相應的CLT安裝目錄即可:
選擇Import CMake project菜單,在彈出的文件目錄瀏覽對話框中,選擇剛剛CubeMX生成的目錄,如下圖:
此時,點擊“選擇文件夾”,VSCode中將會彈出確認導入的對話框:
此時,點擊懸浮菜單的Import project,導入過程中,VSCode狀態欄可以看到Importing…(上圖中紫色部分)。導入完成后,VSCode右下角彈出確認對話框:
選擇Open in this window,即在當前VS Code窗口中打開項目。
此時,彈出配置預設選擇對話框,選擇Debug即可:
選擇配置預設類型之后,可以看到輸出欄有如下輸出:
這些輸出表示,已經根據CMake文件(CMakeLists.txt)生成了Ninja構建構建規則文件(build.ninja),具體位于build/Debug子目錄。
導入完成后,項目目錄內會生成.vscode目錄,里面會有一些配置文件。
4.2 修改代碼
打開Core\Src\main.c文件,找到其中的main函數中的while循環,將其修改為:
以上代碼修改,實現了控制LED的閃爍。
4.3 編譯代碼
完成以上代碼修改后,點擊VS Code的CMake Tools插件圖標,在項目大綱中點擊“生成”按鈕,將會開始編譯構建:
生成完成后,可以在輸出視圖看到生成了elf文件,以及RAM和Flash占用情況:
4.4 下載固件
編譯完成后,就可以準備下載固件了。
還是在VS Code的CMake Tools插件菜單,找到 固定的命令-> 運行任務 右側的運行命令圖標,點擊該圖標:
將會彈出”選擇要運行的任務“對話框,選擇CubeProg: Flash project (SWD)即可開始下載固件:
下載完成,可以在輸出區域看到下載過程耗時(Time elapsed during download operation):
4.5 啟動調試
默認導入的項目已經創建了調試配置文件,位于.vscode/launch.json:
應該可以直接進行調試,接下來嘗試對點燈程序進行斷點調試。
VSCode點擊左側工具欄“調試”按鈕,切換到調試試圖,再點擊開始調試按鈕:
非常順利的進入了調試狀態(gdb調試會話):
4.6 斷點調試
進入gdb調試會話之后,斷點調試、查看寄存器、查看變量等功能應該都沒有問題。
以斷點調試為例,打開main.c文件, 在循環內添加斷點:
打上斷點,按F5繼續,可以跑到斷點位置:
通過頂部的幾個懸浮按鈕,就可以進行斷點調試的常用操作了。
最后,上一張板子上運行效果gif動圖:
五、參考鏈接
- STM32 公眾號推文《全新STM32 VS Code擴展V2.1.0發布》: https://mp.weixin.qq.com/s/rP4aHoTdbVL5ZaArqYosdA
- ST官網文章《使用面向VS Code的STM32擴展簡化您的開發過程》: https://www.st.com.cn/content/st_com/zh/campaigns/stm32-vs-code-extension-z11.html
- STM32CubeMX下載頁面: https://www.st.com.cn/zh/development-tools/stm32cubemx.html
- STM32CubeCLT下載頁面: https://www.st.com.cn/zh/development-tools/stm32cubeclt.html
- ST-MCU-FINDER-PC下載頁面:https://www.st.com.cn/zh/development-tools/st-mcu-finder-pc.html
- VSCode下載頁面: https://code.visualstudio.com/Download
- NUCLEO-U385RG-Q開發板原理圖: https://www.st.com.cn/resource/en/schematic_pack/mb1841-u385rgq-e01-schematic.pdf