眾所周知,Keil是一款收費軟件,雖然可以Po解使用,但很多公司還是有點害怕,想必有不少讀者都收到過**函。
之前,開發(fā)單片機項目,可以說 Keil 是最佳選擇之一,但VSCode橫空問世之后,這種格局被打破。
因為 VSCode 免費且好用,可以安裝各種插件,很多工程師逐漸從Keil 轉(zhuǎn)向了 VSCode。而且,VSCode還能實現(xiàn) Keil 不能實現(xiàn)的一些功能。
?下面就給大家分享一下 VSCode 搭建 STM32 開發(fā)環(huán)境的一些常規(guī)且使用的功能。


我們選擇使用ST-link,SWD接口,目標(biāo)芯片為stm32f1x。 (PS:這里注釋掉了SWD接口,如果采用Jlink 則需要SWD接口)。這樣,我們連好板子上好電,直接在終端里敲openocd,即可啟動。
openocd運行時,這個shell終端就被占用了,我們一會要新開一個終端。
?下面就給大家分享一下 VSCode 搭建 STM32 開發(fā)環(huán)境的一些常規(guī)且使用的功能。
01
需要的軟件和工具- 下載最新版VS Code: 安裝好插件,具有良好的代碼補全與調(diào)試功能。
VS Code下載地址:https://code.visualstudio.com/
- 下載 LLVM:用于代碼補全,其實可以理解為 Clang。因為VS Code 中“C/C++”插件的自動補全功能不太好用。STM32中好多庫函數(shù)都補全不出來。記得按照好之后,將路徑添加到環(huán)境變量里。
LLVM下載地址:http://releases.llvm.org/download.html
- 下載安裝 Git for Windows: 提供Git支持和MINGW64指令終端。
Git下載地址:https://gitforwindows.org/
-
下載安裝 arm-none-eabi-gcc:選擇
gcc-arm-none-eabi-5\_4-2016q3-20160926-win32.exe(md5)這里是一個2016年的,我目前也是用的這個,好像還有其他的新版的下載,GNU Arm Embedded Toolchain。正常安裝后,記得需要將軟件的安裝目錄下的bin文件夾設(shè)置進(jìn)入環(huán)境變量PATH中。
arm-none-eabi-gcc下載地址:https://launchpad.net/gcc-arm-embedded/+download
- 下載 OpenOCD for Windows:一個開源的片上調(diào)試器(Open On-Chip Debugger)。在Windows下自己編譯可能有問題 。所以,我們選擇編譯好的。下載后的文件不是安裝包,把程序文件夾放入自己的軟件安裝目錄下,將軟件的bin文件夾路徑加入用戶環(huán)境變量PATH中。
OpenOCD下載地址:http://gnutoolchains.com/arm-eabi/openocd/
- STM32CubeMX:用于生成帶makefile的工程。這樣我們就可以不用自己寫MakeFile了。套用他的模板,然后修改為自己的目錄就可以。
STM32CubeMX鏈接:http://www.stm32cube.com/
02
搭建編譯環(huán)境1. 用STM32Cube創(chuàng)建工程。
STM32CubeMX生成的是用HAL庫開發(fā)的項目,具體怎么配置這里就不介紹了,只介紹與主題有關(guān)的部分。(1)STM32CubeMx芯片包(固件庫)下載,注意事項:

help -> updater settings ->Connection Parameters設(shè)置好網(wǎng)絡(luò)后,才能下載固件包。(2)生成工程。選擇MakeFile選項。注意: 4.18.0以下的版本是沒有Makefile這個選項的。最后下載一個中間版本,因為5.0以上的版本界面很亂。我選擇的是 4.27.0.

2.配置VS Code
(1)打開工程所在的文件夾。在右鍵“用VS Code打開工程文件夾”,


.ioc文件是STM32Cube的工程文件,Inc和Src是供用戶修改的源碼,Driver里是STM32和ARM CMSIS的庫,最好不要修改。不過,如果你要采用標(biāo)準(zhǔn)庫開發(fā)的話,就修改為標(biāo)準(zhǔn)庫的Driver.(2)安裝VS Code插件,需要這幾樣:


(3)配置VS Code內(nèi)置終端
這里將我們上面安裝的 Git for Windows 設(shè)置為VScode 的內(nèi)置終端。文件–首選項–設(shè)置,搜索terminal,設(shè)置內(nèi)置終端的Shell為Bash(安裝VS Code的時候它會推薦你安裝Git,里面有這個Bash)?;蛘叽蜷_ Settings.json添加下面兩句。"terminal.integrated.shell.windows":"D:\ProgramFiles\Git\bin\bash.exe", "terminal.external.windowsExec":"D:\ProgramFiles\Git\bin\bash.exe" 然后按Ctrl+` 就可以打開終端,看到Bash了

(4)配置智能補全、智能感知插件。
前面我們安裝了 LLVM 用它來實現(xiàn)智能補全,與糾錯,自然就需要一個路徑去尋找這些文件。因此我們需要一個。c\_cpp\_properties.json文件的配置文件。我們在當(dāng)前目錄的.vscode文件夾下創(chuàng)建c\_cpp\_properties.json配置文件,用來告訴VS Code我們定義的宏與文件的路徑。{ "configurations":[ { "name":"Win32", "browse":{ "path":[ "${workspaceFolder}/", "${workspaceFolder}/Drivers/CMSIS", "${workspaceFolder}/Drivers/FWlib/inc", "${workspaceFolder}/Drivers/CMSIS/startup", "${workspaceFolder}/User/inc", "${workspaceFolder}/User", "${workspaceFolder}/ThirdParty/crclib/include" ], "limitSymbolsToIncludedHeaders":true }, "includePath":[ "${workspaceFolder}/", "${workspaceFolder}/", "${workspaceFolder}/Drivers/CMSIS", "${workspaceFolder}/Drivers/FWlib/inc", "${workspaceFolder}/Drivers/CMSIS/startup", "${workspaceFolder}/User/inc", "${workspaceFolder}/User", "${workspaceFolder}/ThirdParty/crclib/include" ], "defines":[ "_DEBUG", "UNICODE", "_UNICODE", "__CC_ARM", "USE_STDPERIPH_DRIVER", "STM32F10X_HD" ], "compilerPath":"C:\ProgramFiles\LLVM\bin\clang-format.exe", "cStandard":"c11", "cppStandard":"c++17", "intelliSenseMode":"clang-x64" } ], "version":4 } 注意:如果提示
variable “uint32\_t” is not a type name不是一個type類型。則需要 添加宏定義\_\_CC\_ARM,如果沒有該宏定義,則uint32\_t類型會報錯。并且結(jié)構(gòu)體中使用了uint32\_t定義的成員,也會補全不了。(5)編譯程序
gcc下編譯過程如下圖所示:
-
.c文件 經(jīng)過arm-none-eabi-gcc編譯成.o文件 -
.s文件 經(jīng)過arm-none-eabi-as編譯成.o文件 -
.o文件 和.a文件 經(jīng)過arm-none-eabi-ld鏈接成.elf文件 -
.elf文件 經(jīng)過arm-none-eabi-objcopy和arm-none-eabi-objdump轉(zhuǎn)換成 hex文件/dis文件 -
arm-none-eabi-gdb使用.elf文件 進(jìn)行debug

在Terminal下輸入make指令,即會開始build程序

編譯完成后,生成的所有文件都會放在Build文件夾下.


03
布局搭建調(diào)試環(huán)境
1.配置openocd。
要運行openocd這個gdb server,需要配置如下幾個參數(shù):首先我們打開openocd的安裝目錄,打開share/openocd/scripts,里面有很多提前寫好的配置文件。

openocd–finterface/stlink.cfg–ftarget/stm32f4.cfg 【注】配置仿真器的參數(shù)必須在配置目標(biāo)MCU的參數(shù)之前,否則將報錯。如果我們不帶參數(shù)啟動,openocd就會自動查找當(dāng)前目錄下有沒有名為openocd.cfg的文件,并把它作為配置文件來啟動。因此,我們就在當(dāng)前工程下創(chuàng)建一個名為openocd.cfg的文件。
我們選擇使用ST-link,SWD接口,目標(biāo)芯片為stm32f1x。 (PS:這里注釋掉了SWD接口,如果采用Jlink 則需要SWD接口)。這樣,我們連好板子上好電,直接在終端里敲openocd,即可啟動。
openocd運行時,這個shell終端就被占用了,我們一會要新開一個終端。2.用gdb連接上openocd
(1)直接啟動gdb,參數(shù)為編譯好的調(diào)試文件(.elf)

targetremotelocalhost:3333


3.配置openocd任務(wù)與build任務(wù)
為了避免每次都在終端輸入 make 和 make clean ,與 openocd 。我們可以在VSCode 中,建立一個 Task 來幫我們完成這個任務(wù),(1)在當(dāng)前目錄下創(chuàng)建build.py的文件。

(2)在VSCode界面下,單擊“任務(wù)”,選擇“配置任務(wù)”
按 F1,選擇"配置任務(wù)" .vscode目錄下就會創(chuàng)建一個tasks.json配置文件.


4.配置VS Code的調(diào)試功能
使用VS Code,肯定是圖方便,圖好看。所以我肯定不會讓大家靠敲命令來調(diào)試,這樣豈不是開倒車,還不如用keil。因此,這里要配置VS Code的調(diào)試功能,相當(dāng)于對gdb的一個圖形化吧。在VS Code內(nèi)選擇debug(就是左邊那個??蟲子圖標(biāo)),選擇“添加配置”,類型為GDB。就會在.vscode文件夾下生成launch.json配置文件。 按照下面來配置:{ "version":"0.2.0", "configurations":[ { "name":"ARMDebug", "type":"cppdbg", "request":"launch", "program":"${workspaceFolder}/Build/STM32F103RC_Template.elf", "args":[], "stopAtEntry":false, "cwd":"${workspaceFolder}", "environment":[], "externalConsole":false, "MIMode":"gdb", "miDebuggerPath":"C:\ProgramFiles(x86)\GNUToolsARMEmbedded\5.42016q3\bin\arm-none-eabi-gdb.exe", "targetArchitecture":"arm", "setupCommands":[ { "description":"選擇調(diào)試文件(.elf)到gdb", "text":"fileE:/VScode/STM32_VSCode/stm32f103_temp/Build/STM32F103RC_Template.elf", "ignoreFailures":false }, { "description":"連接GDBServer", "text":"targetremotelocalhost:3333", "ignoreFailures":false }, { "description":"ResetMCU", "text":"monitorreset", "ignoreFailures":false }, { "description":"Halt", "text":"monitorhalt", "ignoreFailures":false }, { "description":"下載代碼到MCU", "text":"load", "ignoreFailures":false } ], "preLaunchTask":"build", } ] } 可以看到,setupCommands里面就是我們之前試用gdb時操作過的流程:連接GDB Server——reset——halt——下載代碼。而preLaunchTask中是我們之前在tasks.json中配置的build任務(wù)。它可以讓我們每次調(diào)試時都先編譯一遍。保存后,隨便打幾個斷點,按下F5,就可以快樂調(diào)試了??梢钥吹焦δ苓€是很齊全的。


審核編輯 :李倩
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
單片機
+關(guān)注
關(guān)注
6078文章
45590瀏覽量
673943 -
STM32
+關(guān)注
關(guān)注
2313文章
11195瀏覽量
374744 -
vscode
+關(guān)注
關(guān)注
1文章
173瀏覽量
9281
原文標(biāo)題:用 VS Code 搭建 STM32 開發(fā)環(huán)境。
文章出處:【微信號:All_best_xiaolong,微信公眾號:大魚機器人】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
熱點推薦
如何使用 powerquad 加速器中的一些功能以及 CMSIS 原始實現(xiàn)中的一些功能?
)。
如何使用 powerquad 加速器中的一些功能以及 CMSIS 原始實現(xiàn)中的一些功能。
Example: I do not want to call arm_mat_tran
發(fā)表于 04-03 06:37
RA MCU眾測寶典 | 環(huán)境搭建之【FPB-RA0E2】開發(fā)環(huán)境搭建
RA生態(tài)工作室關(guān)注我們“RAMCU眾測寶典”環(huán)境搭建專題更新啦!這次我們聚焦【FPB-RA0E2】開發(fā)板,一步步打通開發(fā)“第
使用CMake+VSCode環(huán)境移植ThreadX到極海G32R501 MCU
我本人是 cmake+vscode 組合的忠實用戶,之前寫了一篇文章介紹了在 cmake+vscode 環(huán)境下開發(fā) G32R501 的
開發(fā)者分享 | 一次完整的 HPM EtherCAT 實戰(zhàn):環(huán)境、通信與極限測試
概要1、vscode開發(fā)環(huán)境搭建2、EtherCAT與RK3562通訊測試3、編程IGH主站+HPM極限通訊測試4、ADC+EUI顯示測試5、ADC遠(yuǎn)采系統(tǒng)1.
【正點原子STM32N647開發(fā)板試用】--開箱與開發(fā)環(huán)境搭建
環(huán)境搭建
1.軟件與工具安裝
開發(fā)環(huán)境安裝主要包含如下軟件工具STM32CubeProgrammer、S
發(fā)表于 01-25 00:01
當(dāng)RA MCU遇見Zephyr系列(3)——在Vs code中配置Zephyr集成開發(fā)環(huán)境
嵌入式開發(fā)任督二脈!當(dāng)RAMCU遇見Zephyr系列(2)——搭建瑞薩RAVScode開發(fā)環(huán)境接下來我們就正式開始Zephyr開發(fā)的介紹,同
經(jīng)驗分享 | eclipse搭建先楫開發(fā)環(huán)境
最近有小伙伴留言,想在eclipse平臺下開發(fā)先楫的MCU,但是苦于沒有工程模板,自己折騰了半天又遇到一堆報錯,很費時間。基于此需求,筆者基于HPM6E00EVK一步一步
【CPKCOR-RA8D1】1、VSCODE+CMAKE開發(fā)環(huán)境搭建
一、開發(fā)環(huán)境搭建
1、安裝VSCODE
官方下載地址:Visual Studio Code - Code Editing. Redefine
發(fā)表于 10-09 16:17
【EK-RA6E2開發(fā)指南】開發(fā)環(huán)境搭建
瑞薩電子的開發(fā)工具有很多,筆者習(xí)慣使用MDK開發(fā),因此本文將基于MDK+RA Smart Configurator搭建開發(fā)環(huán)境。
ESP32-S3的MicroPython開發(fā)環(huán)境搭建
本文通過搭建Thonny IDE開發(fā)環(huán)境,了解了如何給ESP32-S3燒錄MircoPython固件和MircoPython應(yīng)用程序。
hpm的vscode開發(fā)環(huán)境搭建openocd燒錄問題求解
最近嘗試搭建基于vscode的hpm芯片開發(fā)環(huán)境,遇到一些問題,求大佬們幫忙看看。
使用hpm6e00evk
發(fā)表于 09-09 09:55
【匠芯創(chuàng)D133CBS KunLun Pi開發(fā)板試用體驗】《匠芯創(chuàng)D133CBS RISC-V KunLun Pi 》 開箱及搭建vscode開發(fā)環(huán)境
供電電壓5v,mcu供電電壓3.3v,1.1V供MCU CORE使用均正常
三、開發(fā)流程
開發(fā)環(huán)境搭建流程
1.安裝LubanLite SDK
訪問匠芯創(chuàng)官方資源中心:Luban-l
發(fā)表于 09-04 22:33
開發(fā)環(huán)境一鍵部署 | 如何搭建Docker環(huán)境編譯ARM程序?
智能化科技領(lǐng)域,嵌入式系統(tǒng)開發(fā)占據(jù)著極為重要的地位。瑞迅科技RK3568、RK3588主板及核心板以其卓越的性能,為眾多應(yīng)用場景賦能?;贚inux系統(tǒng)搭建其開發(fā)環(huán)境,為用戶開啟高效
第三章 開發(fā)環(huán)境搭建
本章介紹了W55MH32開發(fā)環(huán)境搭建。常用工具 KEIL MDK功能強大,安裝需注意路徑等要點并安裝芯片包。還講解MDK5使用技巧,如文本美化、語法檢測、代碼編輯等實用
VSCode搭建STM32開發(fā)環(huán)境的一些常規(guī)且使用的功能
評論