【STM32U385RG 測評】基于VSCode的STM32開發環境搭建

【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,直接在插件欄搜索即可找到,安裝即可。

需要注意的是,這個插件本身依賴另外幾個插件,如下圖所示:
image-20250720215419410

這幾個插件的作用分別為:

  • 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項目

  1. 首先打開STM32CubeMX,通過菜單File→New Project打開新建項目窗口,在彈出的界面中選擇“Board Selector”標簽頁:

    image-20250720230041339.png

    • 在Commercial Part Number欄中輸入U385RG,并回車;
    • 在MCUs/MPUs List下方選中Board列有NUCLEO-U385RG-Q的一行;
    • 點擊右上角Start Project按鈕;
    • 彈出TrustZone設置的話框,選擇Witout TrustZone activated;
  2. 按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相關的部分:
image-20250720232317629

圖中,可以看到引腳為:

  • GREEN:PA5

3.3 修改引腳功能

找到以上LED引腳后,在STM32CubeMX軟件的Pinout View中,可以通過搜索框,找到以上幾個引腳,并通過下拉菜單將其設置為GPIO_Output功能:
image-20250720232549016

LED控制引腳設置完成后,通過左側的Categories->System Core->GPIO也可以看到:
image-20250720232644377

修改User Label為LD2,如下圖:
image-20250720232816031

3.4 生成CMake項目

CubeMX中完成引腳功能修改后,切換到Project Manager標簽頁,Project設置部分,取消Appli Project復選框,Toolchain/IDE選擇CMake,如下圖:
image-20250720233036070

接著,切換到Code Generator設置,選中Generate peripheral initialization as a pair of ‘.c/.h’ per peripheral,如下圖:
image-20250720233146659

此時,點擊CubeMX界面右上角位置的“GENERATE CODE”,將開始生成代碼到項目目錄內,并顯示進度。

生成完成后,點擊Open Folder打開目錄,可以看到生成的文件和目錄如下圖:
image-20250720233422880

到這里,使用CubeMX創建項目完成了。

四、編輯/編譯/下載/調試

接下來就要使用VS Code,進行開發體驗了。通常我們開發過程中,需要不斷重復的幾個動作是: 編輯代碼、編譯構建、下載固件、斷點調試。

4.1 導入項目

打開VSCode,側邊欄點擊STM32 VS Code Extension插件圖標,可以看到插件的項目管理(Project Manager)菜單:
image-20250720233540962

首次使用,可能會提示找不到CLT,然后彈出對話框,選擇相應的CLT安裝目錄即可:
image-20250720233643178

選擇Import CMake project菜單,在彈出的文件目錄瀏覽對話框中,選擇剛剛CubeMX生成的目錄,如下圖:
image-20250720233740412

此時,點擊“選擇文件夾”,VSCode中將會彈出確認導入的對話框:
image-20250720233819099

此時,點擊懸浮菜單的Import project,導入過程中,VSCode狀態欄可以看到Importing…(上圖中紫色部分)。導入完成后,VSCode右下角彈出確認對話框:
image-20250720234039619

選擇Open in this window,即在當前VS Code窗口中打開項目。

此時,彈出配置預設選擇對話框,選擇Debug即可:
image-20250720234235223

選擇配置預設類型之后,可以看到輸出欄有如下輸出:
image-20250720234606479
這些輸出表示,已經根據CMake文件(CMakeLists.txt)生成了Ninja構建構建規則文件(build.ninja),具體位于build/Debug子目錄。

導入完成后,項目目錄內會生成.vscode目錄,里面會有一些配置文件。

4.2 修改代碼

打開Core\Src\main.c文件,找到其中的main函數中的while循環,將其修改為:
image-20250720235439319

以上代碼修改,實現了控制LED的閃爍。

4.3 編譯代碼

完成以上代碼修改后,點擊VS Code的CMake Tools插件圖標,在項目大綱中點擊“生成”按鈕,將會開始編譯構建:
image-20250720235621818

生成完成后,可以在輸出視圖看到生成了elf文件,以及RAM和Flash占用情況:
image-20250720235706860

4.4 下載固件

編譯完成后,就可以準備下載固件了。

還是在VS Code的CMake Tools插件菜單,找到 固定的命令-> 運行任務 右側的運行命令圖標,點擊該圖標:
image-20250720235905950

將會彈出”選擇要運行的任務“對話框,選擇CubeProg: Flash project (SWD)即可開始下載固件:
image-20250720235946963

下載完成,可以在輸出區域看到下載過程耗時(Time elapsed during download operation):
image-20250721000232348

4.5 啟動調試

默認導入的項目已經創建了調試配置文件,位于.vscode/launch.json:
image-20250721000445749

應該可以直接進行調試,接下來嘗試對點燈程序進行斷點調試。

VSCode點擊左側工具欄“調試”按鈕,切換到調試試圖,再點擊開始調試按鈕:
Snipaste_2025-07-21_00-05-57

非常順利的進入了調試狀態(gdb調試會話):
image-20250721000939192

4.6 斷點調試

進入gdb調試會話之后,斷點調試、查看寄存器、查看變量等功能應該都沒有問題。

以斷點調試為例,打開main.c文件, 在循環內添加斷點:
image-20250721001313275

打上斷點,按F5繼續,可以跑到斷點位置:
image-20250721001151193

通過頂部的幾個懸浮按鈕,就可以進行斷點調試的常用操作了。

最后,上一張板子上運行效果gif動圖:
GIF_20250721_004409

五、參考鏈接

  1. STM32 公眾號推文《全新STM32 VS Code擴展V2.1.0發布》: https://mp.weixin.qq.com/s/rP4aHoTdbVL5ZaArqYosdA
  2. ST官網文章《使用面向VS Code的STM32擴展簡化您的開發過程》: https://www.st.com.cn/content/st_com/zh/campaigns/stm32-vs-code-extension-z11.html
  3. STM32CubeMX下載頁面: https://www.st.com.cn/zh/development-tools/stm32cubemx.html
  4. STM32CubeCLT下載頁面: https://www.st.com.cn/zh/development-tools/stm32cubeclt.html
  5. ST-MCU-FINDER-PC下載頁面:https://www.st.com.cn/zh/development-tools/st-mcu-finder-pc.html
  6. VSCode下載頁面: https://code.visualstudio.com/Download
  7. NUCLEO-U385RG-Q開發板原理圖: https://www.st.com.cn/resource/en/schematic_pack/mb1841-u385rgq-e01-schematic.pdf

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/92537.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/92537.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/92537.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

設計模式(二)——策略模式

一、基本概念 既然你已經接觸到了設計模式,那你大概率你寫過類似這樣的代碼:根據不同的選擇條件(如排序、搜索或路由)執行不同的代碼邏輯。通常的解決方案是使用if-else或switch語句,但這些條件判斷有一個最大的問題是…

MySQL基礎知識總結

一、MySQL簡述 數據庫 是一個有組織的集合,用于存儲和管理數據的系統。它是一個軟件系統,被設計用來存儲、檢索和管理數據,并提供數據的快速訪問和處理。數據庫可以被看作是一種特殊的文件系統,但與傳統的文件系統不同的是&#…

數據倉庫命名規范

1. 概述 數據模型是數據管理的分析工具和交流的有力手段;同時,還能夠很好地保證數據的一致性,是實現商務智能(Business Intelligence)的重要基礎。因此建立、管理一個企業級的數據模型,應該遵循標準的命名…

FlinkSQL Joins全解析

1. Lookup Join用途:用于流表與外部維表(靜態或緩慢變化表)的關聯(如 MySQL、HBase 等)。特點:通過 實時查詢外部存儲 獲取維度數據。僅支持 處理時間(Processing Time)語義&#xf…

【FileZilla】基于 FTP 的 Windows 和 Linux 文件傳輸

在嵌入式開發過程中我們經常需要在 Windows 和 Linux 下進行文件傳輸,本文就介紹一種通過 FTP 實現 Windows 和 Linux 文件傳輸的方法。 Windows 為物理主機,Linux 是在 Vmware 虛擬機中安裝運行的 Ubuntu,版本為 18.04。 Ubuntu 安裝 FTP …

【GPT入門】第42課 ollama安裝與運行llama3模型

【GPT入門】第42課 ollama安裝與運行llama3模型1. 安裝ollama2.運行模型3.測試模型3.1 直接在命令行交互3.2 openai接口1. 安裝ollama https://ollama.com/ 選download, 選linux 執行安裝命令: curl -fsSL https://ollama.com/install.sh | sh2.運行模型 啟動服…

Lua語言元表、協同程序

元表元表的定義允許我們改變table的行為。setmetatable(普通表,元表)-- 元表a {"a","b","c"} -- 普通表 b {} --元表c setmetatable(a,b)print("------------------------")f {}print("f:",f)d setmetatabl…

[已解決]VSCode右鍵菜單消失恢復

前言 莫名其妙,好似VSCode自動更新以后,右鍵菜單就失效了,重裝也無果. 手動搞一個吧 保存下面代碼到桌面修復VSCODE右鍵菜單.reg,雙擊運行即可. Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\Directory\Background\shell\VSCode]"使用 VSCode 打開""…

什么是瀏覽器標識?

瀏覽器標識 層面一:網絡層指紋 (HTTP/TLS) 這是最基礎的指紋,即使不用瀏覽器,只用Go的 net/http 發請求也會留下。HTTP Headers (請求頭): User-Agent: 最著名的標識,聲明自己是什么瀏覽器。很容易偽造,但也很容易被識…

五十八、【Linux系統nginx服務】nginx代理服務器、nginx優化

Nginx代理技術全景圖 #mermaid-svg-0dRktnHYPXypO9xB {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-0dRktnHYPXypO9xB .error-icon{fill:#552222;}#mermaid-svg-0dRktnHYPXypO9xB .error-text{fill:#552222;stroke…

[0CTF 2016]piapiapia

usernamepassword回顯推斷admin123Invalid user name or passwordadmin123Invalid user name or passwordadmin123Invalid user name or passworda123Invalid user name說明username是adminadmin1Invalid password這很奇怪了admin0200?admin11Invalid user name or …

人工智能系列(7)人工神經網絡中的無監督學習

一. 無監督學習簡介神經網絡的一個關鍵屬性是能夠從環境中學習,并在不斷學習的過程中持續改善性能。在無監督學習(又稱自組織學習,self-organized learning)中,網絡無需外部教師提供目標輸出,而是通過對輸入…

250810-OpenWebUI集成Dify應用

A. 最終效果 B. 環境配置 配置并啟動Open-WebUI 隨后瀏覽器訪問:http://localhost:8080 pip install open-webui open-webui serve配置并啟動Pipelines Pipelines默認占用80端口相比于Docker的啟動方式,可以在相同的命令行中,查看pipelines …

day22|學習前端ts語言

抽象類,繼承。不能創造實例class類:屬性聲明,構造器,方法,實例繼承super()override重寫父類繼承的方法聲明提升(hoisting)同一個js作用域內部,編譯階段把函數…

【網絡安全】CTF——[網鼎杯2018]Unfinish-SQL注入-二次注入

目錄 一、前言 二、環境 三、復現 3.1尋找注入點 3.2嘗試盲注 3.3正則限制 3.4腳本注入獲取flag 四、總結 一、前言 前兩天復現了一道CTF題目[網鼎杯 2018]Comment,今天繼續來學習一下SQL二次注入。 二、環境 BUUCTF在線評測 三、…

【langchain】如何給langchain提issue和提pull request?

什么是issue? 可以這么理解,bug是issue的子集。issue可以包含bug\feature\sercurity and others. https://github.com/langchain-ai/langchain/issues/32484 什么是pull request? 其實我真不是很理解,但不妨我來提pr https://github.com/langchain-ai/…

MySQL的存儲引擎:

目錄 InooDB引擎: MyISAM引擎: InooDB引擎與MyISAM存儲引擎的區別: Archive引擎: Blackhole引擎: CSV引擎: Memory引擎: Federated引擎: Merge引擎: NDB引擎&a…

Mock與Stub

一、核心概念與差異對比特性MockStub核心目的驗證對象間的交互行為提供預定義的固定響應驗證重點方法調用次數、參數、順序不關注調用過程,只關注結果行為模擬可編程的智能模擬靜態的簡單響應適用場景驗證協作關系隔離依賴、提供固定數據復雜性較高(需要…

香港服務器容器網絡插件的多節點通信性能基準測試

香港服務器容器網絡插件的多節點通信性能基準測試在云計算和容器化技術快速發展的今天,香港服務器因其優越的地理位置和網絡環境,成為眾多企業部署容器服務的首選。本文將深入探討香港服務器環境下容器網絡插件的多節點通信性能,通過詳實的基…

Vue3 學習教程,從入門到精通,Vue 3 全局 API 語法知識點及案例詳解(32)

Vue 3 全局 API 語法知識點及案例詳解 Vue 3 提供了豐富的全局 API,用于創建應用實例、注冊全局組件、指令、插件等。以下將詳細介紹 Vue 3 的主要全局 API,并結合詳細的案例代碼進行說明。每個案例代碼都包含中文注釋,幫助初學者更好地理解…