VSCode下STM32開發環境搭建

VSCode下STM32開發環境搭建

需要的軟件
make-3.81
https://udomain.dl.sourceforge.net/project/gnuwin32/make/3.81/make-3.81.exe

arm-none-eabi-gcc
https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads https://links.jianshu.com/go?to=https%3A%2F%2Fdeveloper.arm.com%2Fopen- source%2Fgnu-toolchain%2Fgnu-rm%2Fdownloads

STM32CubeMX
https://www.st.com/zh/development-tools/stm32cubemx.html

OpenOCD
https://gnutoolchains.com/arm-eabi/openocd/
https://links.jianshu.com/go?to=https%3A%2F%2Fgnutoolchains.com%2Farm- eabi%2Fopenocd%2F

可下載安裝版文件自動配置環境變量,或將壓縮包解壓后,一般都將解壓出目錄下的“bin”文件夾添加到PATH環境變量即可

檢測環境變量配置是否可用,在命令行里運行:(有信息輸出則配置成功)
gcc -v
arm-none-eabi-gcc -v
make -v

必須的插件
C/C++ for Visual Studio Code
C/C++ Extension Pack
C/C++ Themes
CMake
Cortex-Debug
debug-tracker-vscode
MemoryView
Peripheral Viewer
RTOS Views

STM32CubeMx自動生成makefile文件,無需cmake再生成,若添加c文件h文件可修改makefile即可,在終端中運行make進行編譯:

OpenOCD可用如下命令:
#第一個f參數指定調試器,第二個f參數指定芯片,都到下載得OpenOCD安裝目錄去找對應文件 #注意xxxx.hex與自己的項目生成的build目錄下hex文件對應
openocd -f ./OpenOCD/share/openocd/scripts/interface/cmsis-dap.cfg -f./OpenOCD/share/openocd/scripts/target/stm32f1x.cfg -c “program build/STM32F103CB.hex verify reset exit”

配置在線調試
注意項目工程不能有中文目錄,否則運行 openocd 莫名失敗,運行調試需要在編譯、下載完成后
菜單欄中選擇運行和調試,點擊 “創建 launch.json 文件”,選擇 “Cortex Debug”
再添加具體的OpenOCD調試(添加配置)

需要修改三個參數信息:

  1. build目錄下生成的 xxx.elf 文件名要匹配
  2. 調試器配置文件(在OpenOCD解壓縮后的目錄下)
  3. 芯片型號配置文件(在OpenOCD解壓縮后的目錄下)
  4. SVD 文件路徑(仿真寄存器描述)獲取方式:在Keil.STM32Fxxx_DFP.x.x.x.pack 文件解壓縮后的目錄 “CMSIS/SVD”

參考配置信息如下:
{
// 使用 IntelliSense 了解相關屬性。
// 懸停以查看現有屬性的描述。
// 欲了解更多信息,請訪問: https://go.microsoft.com/fwlink/?linkid=830387
“version”: “0.2.0”,
“configurations”: [
{
“cwd”: “${workspaceRoot}”,
“executable”: “./build/STM32F103CB.elf”,
“name”: “Debug with OpenOCD”,
“request”: “launch”,
“type”: “cortex-debug”,
“servertype”: “openocd”,
“configFiles”: [
“./OpenOCD/share/openocd/scripts/interface/cmsis-dap.cfg”,
“./OpenOCD/share/openocd/scripts/target/stm32f1x.cfg”
],
“searchDir”: [],
“runToEntryPoint”: “main”,
“showDevDebugOutput”: “none”,
“svdFile”: “./SVD/STM32F103xx.svd”
}
]
}

點擊運行和調試菜單欄,選擇調試 “Debug with OpenOCD” 即可在線調試:

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

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

相關文章

RH850F1KM-S4-100Pin_ R7F7016453AFP MCAL Gpt 配置

1、Gpt組件包含的子配置項 GptDriverConfigurationGptDemEventParameterRefsGptConfigurationOfOptApiServicesGptChannelConfigSet2、GptDriverConfiguration 2.1、GptAlreadyInitDetCheck 該參數啟用/禁用Gpt_Init API中的GPT_E_ALREADY_INITIALIZED Det檢查。 true:開啟Gpt_…

Django5+React18前后端分離開發實戰13 使用React創建前端項目

先將nodejs的版本切換到18: 接著,創建項目: npx create-react-app frontend接著,使用webstorm打開這個剛創建的項目: 添加一個npm run start的配置: 通過start啟動服務: 瀏覽器訪問&…

機器學習之決策樹算法

使用決策樹訓練紅酒數據集 完整代碼: import numpy as np import matplotlib.pyplot as plt from matplotlib.colors import ListedColormap from sklearn import tree, datasets from sklearn.model_selection import train_test_split# 準備數據,這里…

【云原生】Kubernetes 核心概念

什么是 Kubernetes Kubernetes,從官方網站上可以看到,它是一個工業級的容器編排平臺。Kubernetes 這個單詞是希臘語,它的中文翻譯是“舵手”或者“飛行員”。在一些常見的資料中也會看到“ks”這個詞,也就是“k8s”,它…

科大訊飛筆試題---刪除數字

1、 題目描述: 給定一個長度為 n 的數組,數組元素為 a1, a2, . . , an,每次能刪除任意 a 的任意一位,求將所有數字變成 0 最少需要幾步。例如 103 若刪除第 1 位則變成 3; 若刪除第 2 位則變成13; 若刪除第 3 位則變成 10。 輸入…

AWS容器之Amazon ECS

Amazon Elastic Container Service(Amazon ECS)是亞馬遜提供的一種完全托管的容器編排服務,用于在云中運行、擴展和管理Docker容器化的應用程序。可以理解為Docker在云中對應的服務就是ECS。

c語言如何將一個文本內容復制到另外一個文本里

c語言如果要把一個文本文件的文件復制到另外一個文件里&#xff0c;代碼如下 #include<stdio.h>int main() {FILE *fp1,*fp2;char a;fp1fopen("D://cyy//aaa.txt","r");fp2fopen("ccc.cpu","w");while(a!EOF){afgetc(fp1);fput…

linux:切分大文件

文章目錄 1. 前言2. 用法3. 例子 1. 前言 如果傳輸、存儲過程中出現大文件&#xff0c;希望切分成小文件。在 Linux 中&#xff0c;可以使用多種工具來切分大文件&#xff0c;最常用的是 split 命令。split 命令可以將一個大文件按照指定大小切分成多個小文件。 2. 用法 spl…

ImageMagick入門教程(免費圖片格式轉換)

起因是因為我不會圖片轉換,且發現很多圖片轉換都要錢,尤其是pdf轉jpg,于是我就是找到了這個包,自己處理.當然包時不會導的,所以只能用它提供的命令了. 準備工作 下載imagemagick:ImageMagick – Download 我下載的這個,傻瓜式安裝就行,把所有勾勾都勾上,然后要記住安裝路徑,然…

一文讀懂RDMA: Remote Direct Memory Access(遠程直接內存訪問)

目錄 ?編輯 引言 一、RDMA的基本原理 二、RDMA的主要特點 三、RDMA的編程接口 四、RDMA的代碼演示 服務器端代碼&#xff1a; 客戶端代碼&#xff1a; 五、總結 引言 RDMA&#xff0c;全稱Remote Direct Memory Access&#xff0c;即遠程直接內存訪問&#xff0c;是…

客戶機/服務器交互模式

目錄 概述 網絡應用軟件的地位和功能 C/S 模式的特性 容易混淆的術語 C/S 模式的通信過程 網絡協議與 C/S 模式的關系 錯綜復雜的 C/S 交互 總結 概述 客戶機/服務器&#xff08;Client/Server&#xff0c;簡稱 C/S&#xff09;交互模式是一種常見的網絡應用軟件架構&a…

【ChatGPT】 Microsoft Edge 瀏覽器擴展使用 GPT

【ChatGPT】添加 Microsoft Edge 瀏覽器插件免費使用 GPT 文章目錄 準備工作添加擴展注意事項 使用 ChatGPT 可以更高效的搜索到想要的內容&#xff0c;有效節約在搜索引擎中排查正確信息的時間。 準備工作 準備一臺可上網的電腦電腦上安裝有 Windows 自帶的 Microsoft Edge …

二.常見算法--貪心算法

&#xff08;1&#xff09;單源點最短路徑問題 問題描述&#xff1a; 給定一個圖&#xff0c;任取其中一個節點為固定的起點&#xff0c;求從起點到任意節點的最短路徑距離。 例如&#xff1a; 思路與關鍵點&#xff1a; 以下代碼中涉及到宏INT_MAX,存在于<limits.h>中…

python+selenium - UI自動框架之封裝查找元素

單一的元素定位方法不能滿足所有元素的定位&#xff0c;可以根據每個元素的特點來找到合適的方法&#xff0c;可以參考下圖的方法&#xff1a; elementFind.py from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_con…

Vue filter實戰詳解

在 Vue.js 中&#xff0c;filter 是一種用于在模板中對數據進行格式化的功能。它可以用來對數據進行處理、過濾或格式化&#xff0c;然后在模板中直接使用。 filter 是一種全局的 Vue 實例方法&#xff0c;可以在任何組件的模板中使用。 1.定義全局過濾器&#xff1a; 在 Vue…

InnoDB如何解決幻讀的

InnoDB 使用一種稱為 Next-Key Locking 的鎖機制來解決幻讀問題。幻讀發生在一個事務在讀取某個范圍內的記錄時&#xff0c;另一個事務在這個范圍內插入新的記錄。InnoDB 的 Next-Key Locking 結合了行鎖&#xff08;Row Lock&#xff09;和間隙鎖&#xff08;Gap Lock&#xf…

MavLinK協議

由于在公司需要使用這個&#xff0c;我就寫一個文章用于入門級別 簡單介紹 MAVSDK是PX4開源團隊貢獻的基于mavlink通信協議的用于無人機應用開發的SDK&#xff0c;其可以部署在Windows、Linux、Android等多種平臺&#xff0c;并且支持多種語言如c/c、python、Java等。 在官網…

GIS讀研與求職準備:GNSS專業研0

本文介紹GIS方向研究生入學初期&#xff0c;為將來轉碼、從事開發類工作所作求職準備的規劃路徑、方向選擇等方面的建議。 最近&#xff0c;有很多師弟師妹詢問關于研究生方向選擇、求職準備、就業方向選擇等方面的問題。首先非常感謝大家的盲目信任&#xff08;開個玩笑&#…

基于 debian 12 利用 kubeadm 部署 k8s 1.29 版本

基于 debian 12 利用 kubeadm 部署 k8s 1.29 版本 預先準備 準備三臺debian 12的虛擬機&#xff0c;配置如下&#xff1a; HostnameIP配置k8s-master1192.168.31.604vCPU、8GiB 內存、50GiB 硬盤k8s-worker1192.168.31.614vCPU、8GiB 內存、50GiB 硬盤k8s-worker2192.168.31.6…

python從0開始學習(九)

前言 上一篇文章我們介紹了python中的序列類型和元組類型&#xff0c;本篇文章將接著往下將。 1、字典類型 字典類型是根據一個信息查找另一個信息的方式所構成的“鍵值對”&#xff0c;它表示索引用的鍵和對應的值構成的成對關系。它是一個可變數據類型&#xff0c;也就是說它…