VSCode下EIDE插件開發STM32

VSCode下STM32開發環境搭建

本STM32教程使用vscode的EIDE插件的開發環境,完全免費,有管理代碼文件的界面,不需要其它IDE
視頻教程見本人的

VSCode+EIDE開發STM32

安裝EIDE插件

Embedded IDE 嵌入式IDE

這個插件可以幫我們管理代碼文件,配置工具鏈(什么是工具鏈見下文)等。

這里先安裝此插件,此插件使用,工具鏈安裝等,后面配合示例工程講解。
在這里插入圖片描述在這里插入圖片描述

EIDE網站,可以查看此插件的更新日志。

這是什么? | Embedded IDE For VSCode

什么是工具鏈

簡單的說就是把源文件(也就是xx.c xxx.cpp等)變成可執行文件的東西。

在這里插入圖片描述

開發不同的東西需要不同的工具鏈,

比如在windows上,源文件最后會變成.exe
用Visual Studio寫.cpp用的就是MSVC 編譯器工具集(也稱為工具鏈或“生成工具”)
用VSCode寫.cpp,教程都會讓你下載mingw

而開發單片機,也需要對應其內核的工具鏈。

stm32是arm的內核,所以需要arm相關的工具鏈。
keil就是armcc v5 v6的工具鏈(收費)。
本教程使用的是免費gnu arm embedded toolchainGNU Arm 嵌入式工具鏈

這是它的網址Arm GNU Toolchain Downloads – Arm Developer,如果你想可以去下載最新版,我這里用EIDE安裝。
在這里插入圖片描述

使用EIDE安裝gcc工具鏈

點擊安裝實用工具,安裝gcc_arm工具鏈

在這里插入圖片描述

它會開始下載安裝工具鏈

在這里插入圖片描述

如果使用EIDE安裝工具鏈,它的安裝路徑如下
C:\Users\用戶名.eide\tools
在這里插入圖片描述

假如你本來就有,可以直接設置安裝位置。

比如你自己下載了工具鏈,或者安裝了stm32的工具包(STM32 VS Code Extension 插件讓你安裝的那個),或者安裝了STM32CubeIDE,就直接找到gcc_arm工具鏈填入其路徑就行。

點擊設置工具鏈,設置 GNU Arm Embedded Toolchain
在這里插入圖片描述

示例工程

創建一個示例工程,進一步說明。

示例工程實現LED閃爍。

用CubeMX生成工程代碼

打開stm32cubeMX,打開選擇器,選擇你開發板對應的芯片型號。
進入配置界面,設置LED對應引腳為輸出模式,通常是PC13因為這個引腳沒有太多其它功能。
順便設置個標簽,LED0,便于后面寫代碼。
工程名稱就叫demo1吧。
只復制必要的庫文件,為每個外設生成一對‘.c/.h’文件初始化外設等不再贅述。
在這里插入圖片描述

工具鏈/IDE選擇
這里的STM32CubeIDE CMake Makefile 使用的都是arm-gcc的工具鏈!
不過CMake Makefile產生的工程需要自己配置項目資源,CubeIDE產生的工程導入即可。
這里先選擇CMake或者Makefile自己配置一下項目,STM32CubeIDE導入的教程見下文。

在這里插入圖片描述

生成的工程文件夾
在這里插入圖片描述

EIDE插件的使用

新建空項目

在這里插入圖片描述

STM32選擇Cortex-M項目,項目名稱建議和之前的工程名稱保持一致。

在這里插入圖片描述
在這里插入圖片描述

項目保存位置為工程文件夾的位置(而不是工程文件夾內)

在這里插入圖片描述

項目文件夾已經存在的警告選是

在這里插入圖片描述

切換至工作區
在這里插入圖片描述

VSCode切換到了工作區

在這里插入圖片描述

編譯工程

添加項目資源
添加.c文件

添加普通文件夾,它具有遞歸查找能力,能往下查找到你的代碼文件。

在這里插入圖片描述

添加包含.c代碼的文件夾。

在這里插入圖片描述
.c文件添加完畢
在這里插入圖片描述

添加啟動文件startup.s

項目資源添加一個虛擬文件夾
在這里插入圖片描述

添加啟動文件startup.s,選擇文件的時候選擇any就可以看到所有文件。
在這里插入圖片描述在這里插入圖片描述
在這里插入圖片描述
啟動文件.s添加完畢
在這里插入圖片描述

順便說一下
普通文件夾要在工程文件夾下面添加。
當然如果你愿意,可以全部使用虛擬文件夾去添加所有源文件。
只要將工程涉及到源文件全部添加了就可以。

構建配置
選擇CPU類型

選擇CPU類型,根據你的單片機選擇,STM32F4選M4,F1選M3

在這里插入圖片描述

設置鏈接腳本路徑

設置鏈接腳本路徑,就是CubeMX生成的flash.ld文件。
在這里插入圖片描述

它就在工程文件夾那層里,把它文件名填上去就行
在這里插入圖片描述

項目屬性

就是,頭文件路徑、庫文件路徑、要預處理的宏定義這些。

如果搞不清楚CubeMX生成的代碼的相關配置,可以查看CubeMX生成的CMake或makefile。

在這里插入圖片描述

這里說一下,并沒有使用CMake,打開它只是為了確認要填入的信息。

添加頭文件目錄

就是所有.h所在的目錄。
在這里插入圖片描述
包含目錄添加完畢
在這里插入圖片描述

添加預處理宏定義

代碼文件里有類似這樣的代碼,這些編譯預處理命令需要添加預處理宏定義配合編譯。

#if defined (USE_HAL_DRIVER)//如果定義了它
//...
//做什么什么
//...
#endif /* USE_HAL_DRIVER */

在這里插入圖片描述
預處理宏定義添加完畢
在這里插入圖片描述

當然,如果你自己建立了代碼文件夾也需要添加相關的配置。

編譯

都配置好了,然后就能編譯了

隨便打開一個代碼文件,右上角既可以找到編譯。
在這里插入圖片描述

編譯完畢,沒有錯誤沒有警告。

在這里插入圖片描述

生成的可執行文件(待下載到單片機上)
在這里插入圖片描述

如何燒錄(下載)

安裝下載器對應的工具。

一般大家搞stm32都是用stlink因為便宜,如果是jlink就下載jlink的。

在這里插入圖片描述

安裝后它也會安裝STLINk的驅動等。
在這里插入圖片描述

燒錄配置,選擇燒錄工具

在這里插入圖片描述

添加工程代碼

添加讓LED0閃爍的代碼,并重新編譯。

    HAL_GPIO_WritePin(LED0_GPIO_Port, LED0_Pin, GPIO_PIN_SET);HAL_Delay(500);HAL_GPIO_WritePin(LED0_GPIO_Port, LED0_Pin, GPIO_PIN_RESET);HAL_Delay(500);
燒錄

點擊右上角的下載按鈕即可下載。

在這里插入圖片描述

提示:請正確連接你的下載器和開發板。

燒錄完畢

在這里插入圖片描述

LED0已經開始閃爍。

在這里插入圖片描述

調試

相關解釋請參考

cortex-debug 用法 - 博客 - Embedded IDE Forum

安裝調試用的插件和工具
安裝Cortex Debug

安裝VSCode插件 Cortex Debug,調試需要。

在這里插入圖片描述

安裝OpenOCD

OpenOCD是一個免費的開源軟件,用于調試和編程嵌入式設備。

可以直接在EIDE這里下載。

在這里插入圖片描述

假如你有OpenOCD就不用重新下載了,之后寫路徑的時候改一下就行。
比如你自己下載了OpenOCD,或者安裝了stm32的工具包(STM32 VS Code Extension 插件讓你安裝的那個),就直接找到填入其路徑就行。
在這里插入圖片描述

如果使用EIED安裝OpenOCD,它的安裝位置如下,安裝位置之后要用。
C:\Users\用戶名.eide\tools
在這里插入圖片描述

創建launch.json文件

launch.json 是 Visual Studio Code 中用于配置調試器的文件。

launch.json的創建

切換到代碼文件,點運行和調試。創建launch.json文件,在工程中。
在這里插入圖片描述
調試器選擇Cortex Debug
在這里插入圖片描述
自動生成代碼的時候選擇OpenOCD
在這里插入圖片描述

這是自動生成的launch.json還需要修改
在這里插入圖片描述

填寫可執行文件路徑

調試要用到可執行文件.elf,它在build/Debug下。
executable 這里填入

            //elf文件看當前工程名稱或是看build文件夾下的elf文件名稱"executable": "build/Debug/demo1.elf",

在這里插入圖片描述

填寫配置文件路徑

找到你OpenOCD的安裝位置
configFiles這里如下填寫

"configFiles": [//使用ST-LINK,路徑根據你的openOCD的安裝位置修改,stlink版本根據你的下載器修改"C:/Users/CaiYunWei/.eide/tools/openocd_7a1adfbec_mingw32/share/openocd/scripts/interface/stlink-v2-1.cfg",//使用stm32f?,路徑根據你的openOCD的安裝位置修改,stm32f?根據你的芯片修改"C:/Users/CaiYunWei/.eide/tools/openocd_7a1adfbec_mingw32/share/openocd/scripts/target/stm32f4x.cfg"],

stlink .cfg文件路徑如下,使用哪個根據你的下載器修改。
C:\Users\你的用戶名.eide\tools\openocd_7a1adfbec_mingw32\share\openocd\scripts\interface
在這里插入圖片描述
stm32 .cfg文件路徑如下,使用哪個根據你的芯片修改。
C:\Users\你的用戶名.eide\tools\openocd_7a1adfbec_mingw32\share\openocd\scripts\interface\target
在這里插入圖片描述

參考的launch.json文件
{// 使用 IntelliSense 了解相關屬性。 // 懸停以查看現有屬性的描述。// 欲了解更多信息,請訪問: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"cwd": "${workspaceRoot}",//.elf可執行文件路徑"executable": "build/Debug/demo1.elf","name": "Debug with OpenOCD","request": "launch","type": "cortex-debug","servertype": "openocd","configFiles": [//使用ST-LINK,路徑根據你的openOCD的安裝位置修改,stlink版本根據你的下載器修改"C:/Users/CaiYunWei/.eide/tools/openocd_7a1adfbec_mingw32/share/openocd/scripts/interface/stlink-v2-1.cfg",//使用stm32f?,路徑根據你的openOCD的安裝位置修改,stm32f?根據你的芯片修改"C:/Users/CaiYunWei/.eide/tools/openocd_7a1adfbec_mingw32/share/openocd/scripts/target/stm32f4x.cfg"],"searchDir": [],"runToEntryPoint": "main","showDevDebugOutput": "none"}]
}

生成的jlink相關代碼用不到,可以刪掉。

開始調試

搞好之后保存launch.json文件,選擇設置好的啟動項Debug with OpenOCD,加入斷點,即可開始調試

在這里插入圖片描述

成功
在這里插入圖片描述
可以在左面查看變量,添加監視等。

導入CubeIDE工程

CubeIDE實際上也是用的arm-gcc的工具鏈。

我這里用cubeMX生成一個來說明。

創建一個CubeIDE工程

在這里插入圖片描述

導入

導入空的嵌入式gcc項目
在這里插入圖片描述

項目資源,項目屬性等已經自動添加好了。

構建配置仍需手動修改。

在這里插入圖片描述

注意生成的flash.ld文件中

  .ARM.extab (READONLY) : /* The "READONLY" keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */{. = ALIGN(4);*(.ARM.extab* .gnu.linkonce.armextab.*). = ALIGN(4);} >FLASH

它有個關鍵詞需要gcc11以上的版本,目前(2025年1月20日)EIDE下載到的是10!可以刪除相關內容,或者手動更新工具鏈

之后即可正常編譯。
在這里插入圖片描述

燒錄、調試等完全一致,見上文。

后記

使用VSCode EIDE開發,不需要其它IDE。
使用arm-gcc完全免費

沒有這個EIDE插件確實能開發,但是要手動配置工具鏈,每次編譯代碼都需要在命令窗口中輸入相應的指令,很麻煩。

按理說,找到對應內核的工具鏈就能開發相應的單片機。
EIDE這個插件能設置的工具鏈挺多的。
在這里插入圖片描述

CMake現在在C/C++的項目中用的越來越多,建議了解一下。
STM32 VS Code Extension 插件用的是CMake。但它沒有圖形化的配置界面,比如加個文件,得自己寫路徑,比較麻煩。

參考資料

拋棄keil?VScode開發stm32完整教程_嗶哩嗶哩_bilibili

VSCode+EIDE開發CH32V系列RISC-V MCU - Wahahahehehe - 博客園

這是什么? | Embedded IDE For VSCode

cortex-debug 用法 - Blog - Embedded IDE Forum

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

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

相關文章

Linux內核編程(二十一)USB驅動開發

一、驅動類型 USB 驅動開發主要分為兩種:主機側的驅動程序和設備側的驅動程序。一般我們編寫的都是主機側的USB驅動程序。 主機側驅動程序用于控制插入到主機中的 USB 設備,而設備側驅動程序則負責控制 USB 設備如何與主機通信。由于設備側驅動程序通常與…

論文筆記-arXiv2025-A survey about Cold Start Recommendation

論文筆記-arXiv2025-Cold-Start Recommendation towards the Era of Large Language Models: A Comprehensive Survey and Roadmap 面向大語言模型(LLMs)時代的冷啟動推薦:全面調研與路線圖1.引言2.前言3.內容特征3.1數據不完整學習3.1.1魯棒…

C#使用WMI獲取控制面板中安裝的所有程序列表

C#使用WMI獲取控制面板中安裝的所有程序列表 WMI 全稱Windows Management Instrumentation,Windows Management Instrumentation是Windows中用于提供共同的界面和對象模式以便訪問有關操作系統、設備、應用程序和服務的管理信息。如果此服務被終止,多數基于 Windo…

風光并網對電網電能質量影響的matlab/simulink仿真建模

這個課題早在一幾年的時候比較熱門,之前作電科院配電網的一個項目中也有所涉及,我把其中一部分經典仿真模型思路分享給大家,電能質量影響這部分,我在模型中主要體現的就是不同容量的光伏、風電接入,對并網點的電壓影響…

Ubuntu 24.04 LTS linux 文件權限

Ubuntu 24.04 LTS 文件權限 讀權限 :允許查看文件的內容。寫權限 (w):允許修改文件的內容。執行權限 (x):允許執行文件(對于目錄來說,是進入目錄的權限)。 文件權限通常與三類用戶相關聯: 文…

第13章:Python TDD完善貨幣加法運算(二)

寫在前面 這本書是我們老板推薦過的,我在《價值心法》的推薦書單里也看到了它。用了一段時間 Cursor 軟件后,我突然思考,對于測試開發工程師來說,什么才更有價值呢?如何讓 AI 工具更好地輔助自己寫代碼,或許…

.Net Core微服務入門全紀錄(六)——EventBus-事件總線

系列文章目錄 1、.Net Core微服務入門系列(一)——項目搭建 2、.Net Core微服務入門全紀錄(二)——Consul-服務注冊與發現(上) 3、.Net Core微服務入門全紀錄(三)——Consul-服務注…

C#防止重復提交

C#防止重復提交 文章目錄 C#防止重復提交前言防止重復提交的思路Web API 防止重復提交代碼實現代碼講解使用方法 MVC防止重復提交總結 前言 當用戶在前端進行提交數據時,如果網絡出現卡頓和前端沒有給出響應的話顧客通常都會狂點提交按鈕,這樣就很容易導…

python學opencv|讀取圖像(三十九 )閾值處理Otsu方法

【1】引言 前序學習了5種閾值處理方法,包括(反)閾值處理、(反)零值處理和截斷處理,還學習了一種自適應處理方法,相關文章鏈接為: python學opencv|讀取圖像(三十三)閾值處理-灰度圖像-CSDN博客 python學o…

嵌入式硬件篇---PID控制

文章目錄 前言第一部分:連續PID1.比例(Proportional,P)控制2.積分(Integral,I)控制3.微分(Derivative,D)控制4.PID的工作原理5..實質6.分析7.各種PID控制器P控…

日志收集Day001

1.ElasticSearch 作用:日志存儲和檢索 2.單點部署Elasticsearch與基礎配置 rpm -ivh elasticsearch-7.17.5-x86_64.rpm 查看配置文件yy /etc/elasticsearch/elasticsearch.yml(這里yy做了別名,過濾掉空行和注釋行) yy /etc/el…

集合帖:前綴和及差分模板題 ← 一維及二維

【一維前綴和及一維差分知識點】 ● 一維“前綴和數組”預處理過程:cin>>a[i], sum[i]sum[i-1]a[i] 或者 cin>>sum[i], sum[i]sum[i-1] (1≤i≤n) ● 一維“區間和”計算過程:sum[y]-sum[x-1] (y…

《offer 來了:Java 面試核心知識點精講 -- 框架篇》(附資源)

繼上篇文章介紹了《offer 來了:Java 面試核心知識點精講 -- 原理篇》書后,本文章再給大家推薦兄弟篇 《offer來了:Java面試核心知識點精講--框架篇》, 簡直就是為Java開發者量身定制的面試神器。 本書是對Java程序員面試中常見的…

Low-Level 大一統:如何使用Diffusion Models完成視頻超分、去雨、去霧、降噪等所有Low-Level 任務?

Diffusion Models專欄文章匯總:入門與實戰 前言:視頻在傳輸過程中常常因為各種因素(如惡劣天氣、噪聲、壓縮和傳感器分辨率限制)而出現質量下降,這會嚴重影響計算機視覺任務(如目標檢測和視頻監控)的性能。現有的視頻修復方法雖然取得了一些進展,但通常只能針對特定的退…

Video-RAG:一種將視頻RAG新框架

1. 摘要及主要貢獻點 摘要: 檢索增強生成(RAG)是一種強大的策略,通過檢索與查詢相關的外部知識并將其整合到生成過程中,以解決基礎模型生成事實性錯誤輸出的問題。然而,現有的RAG方法主要集中于文本信息&…

Docker Load后存儲的鏡像及更改鏡像存儲目錄的方法

Docker Load后存儲的鏡像及更改鏡像存儲目錄的方法 Docker Load后存儲的鏡像更改鏡像存儲目錄的方法腳本說明注意事項Docker作為一種開源的應用容器引擎,已經廣泛應用于軟件開發、測試和生產環境中。通過Docker,開發者可以將應用打包成鏡像,輕松地進行分發和運行。而在某些場…

【零基礎入門unity游戲開發——unity通用篇37】鼠標指針(光標)修改隱藏鎖定(基于unity6開發介紹)

考慮到每個人基礎可能不一樣,且并不是所有人都有同時做2D、3D開發的需求,所以我把 【零基礎入門unity游戲開發】 分為成了C#篇、unity通用篇、unity3D篇、unity2D篇。 【C#篇】:主要講解C#的基礎語法,包括變量、數據類型、運算符、流程控制、面向對象等,適合沒有編程基礎的…

親測解決Latex File ended while scanning use of \@@BOOKMARK

這個問題只要刪除了.tex后綴文件外的其他同名文件,再次編譯即可。 環境 Win11 MikTex 問題原因 編譯的時候用了好幾種編譯器,然后編譯出現了錯誤。生成了不能使用的引用。 解決方法 刪除.tex后綴文件外的其他同名文件后,再次編譯。 筆…

Amazon MSK 開啟 Public 訪問 SASL 配置的方法

1. 開啟 MSK Public 1.1 配置 MSK 參數 進入 MSK 控制臺頁面,點擊左側菜單 Cluster configuration。選擇已有配置,或者創建新配置。在配置中添加參數 allow.everyone.if.no.acl.foundfalse修改集群配置,選擇到新添加的配置。 1.2 開啟 Pu…

Windows FileZila Server共享電腦文件夾 映射21端口外網連接

我有這樣一個使用場景,在外部網絡環境下,通過手機便捷地讀取存儲在電腦上的視頻文件。比如在外出旅行、出差,身邊沒有攜帶電腦,僅依靠手機設備,就能隨時獲取電腦里存儲的各類視頻,無論是學習資料視頻、工作…