当前位置: 首页 > news >正文

STM32的VSCode下开发环境搭建

Visual Studio Code(简称VSCode) 是一款由微软开发的免费、开源的代码编辑器!!支持各种插件,很多的开发环境都可以通过插件安装的方式直接将 VSCode 化身为一个功能齐全的IDE,在功能强大的同时,它也没有忘记自己的底色——代码编辑器!有AI的加持,能让代码的编写更加方便快捷。

一、安装VSCode

我们打开VSCode的官方网站:https://code.visualstudio.com/download

我们直接双击安装包,即可进行安装。

  • 安装位置(切记不要使用中文路径!!!)
  • 附加任务【请注意!!这个很重要】选择完成之后点击下一步即可!

出现下面的页面即可!!

重启电脑(为了使设置生效)!

二、汉化界面

我们直接打开VSCode软件,点击下面小图片,进入扩展商店!

我们先安装Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code​,这是可以让界面汉化的工具!

在扩展商城搜索该插件的名字,选张第一个,点击Install​进行安装即可!

这里我已经安装过了,所以不会显示安装按钮!!

这个插件安装完成之后 VSCode​ 会在右下角提示你重启,点击 Restart​ 重启即可将界面变为中文!!

【如果重启之后没有变为中文,则看下面这个方法】:

先去扩展商店查看下扩展Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code​是否已经安装好了!

如果安装好了那就说明不是这个问题,就可以下一步了!

  1. 打开显示(View)菜单,选择命令面板(Command Palette)菜单项或(Ctrl+Shift+P)快捷键 打开命令面板。
  2. 在命令面板中,输入Configure Display Language,选择Configure Display Language命令,显示已安装的语言包列表。

  3. 在已安装的语言包列表中选择需要切换的语言包。

  4. 根据提示重启软件

三、安装插件【STM32Cube for Visual Studio Code】

在安装的过程中会同步安装其他的插件!在右下角会有提示。

等待右下角没有任何安装的信息弹出,说明已经安装完成,重启 VSCode​ 软件。

四、创建工程

1、CubeMX生成初始项目

我们点击左边的新出现图标,然后点击 Launch STM32CubeMX​,他会自动打开我们电脑中安装的 STM32CubeMX​ 软件。

在STM32CubeMX​ 中新建一个工程,进行一些简单的引脚功能配置(一般都是外部晶振,SWD,串口、时钟之类的....):

然后设定工程名,选择保存位置,设定目标IDE​,最后点击 GENERATE CODE​ 生成:

注意:这里的 Toolchain / IDE​ 一定要选择 CMake​ !!!

等待生成结束,就会在设定的位置(Project Location​)出现一个项目文件夹:

2、VSCode导入工程项目

我们直接用VSCode软件打开刚刚CubeMX​生成的工程文件夹:

然后VSCode​会自动帮我们配置相关的选项:

五、调试下载

这里我们有两种方式可以进行调试下载:

  • ​ST-Link​:无需额外的软件,能被STM32​的插件自动配置。
  • ​DAP-Link​:需要用到额外的OpenOCD​,进行配置。

1、ST-Link方式

我这里使用的是 ST-Link V2​ 的下载器,进行下载调试的,STLink​是ST​官方主推的一个下载器,使用这个的好处是不需要额外的配置,直接就可以使用,ST​官方已经配置好了。

在 Debug​ 页面中,可以看到我们的ST设备​:

点击左下角的小齿轮,可以直接进行编译:

设定调试文件,创建一个 launch.json​ 文件,我这里先选择STLink方式调试下载:

点击左下角调试下载按钮即可进行 【编译】->【下载】->【进入调试】​:

2、DAP-Link方式

1)安装OpenOCD

OpenOCD(Open On-Chip Debugger)是一款开源的调试工具,主要用于嵌入式系统的调试。它允许开发者通过硬件调试接口(如JTAG和SWD)与微控制器进行交互,执行调试任务,如下载固件、设置断点、单步执行代码等。

OpenOCD的核心功能包括:

  1. ​固件下载​:将编译好的二进制文件(固件)通过调试接口烧录到嵌入式设备的存储器中。
  2. ​断点设置​:在程序中指定的代码行或地址处设置断点,当程序运行到这些位置时暂停执行,便于开发者检查和调试。
  3. ​单步执行​:逐行执行程序代码,以便详细分析每一步的运行情况,帮助发现代码中的问题。
  4. ​寄存器和内存访问​:可以直接查看和修改处理器寄存器和内存的内容,这对于调试低级别的嵌入式代码非常重要。

​它是用C语言开发的​,具有较高的性能和跨平台支持,能够在多个操作系统(如Linux、Windows、macOS)上运行。

支持常见的硬件调试器,如JLINK,STLINK,DAPLINK等。

可以在这个链接下载:

和上面解压arm-none-eabi-gcc一样,解压到一个没有空格或中文字符的路径。然后把bin文件夹所处的目录添加至系统环境变量。

重启电脑并打开Windows PowerShell,输入openocd -v​像下图里面有输出就说明这个组件你安装好了,如果没有输出或者输出是红色的字,你就需要重新检测一下是不是环境变量添加错了。

2)新建launch.json​配置文件

选择 STM32插件​ 的通用GDB配置,自动生成文件:

我们需要修改几个参数:

  • ​serverExe​:设定exe可执行文件为openocd的文件
  • ​serverParameters​:设定dap和stm32h7的配置文件
  • ​serverPort​:填写默认端口

完成的配置为:

{// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"type": "stgdbtarget","request": "launch","name": "STM32Cube: STM32 Launch Generic GDB Server","origin": "snippet","cwd": "${workspaceFolder}","preBuild": "${command:st-stm32-ide-debug-launch.build}","program": "${command:st-stm32-ide-debug-launch.get-projects-binary-from-context1}","gdb": "${command:st-stm32-ide-debug-launch.get-gdb-executable}","deviceName": "${command:st-stm32-ide-debug-launch.get-device-name}","deviceCore": "${command:st-stm32-ide-debug-launch.get-core-name}","deviceTrustzone": "${command:st-stm32-ide-debug-launch.get-trustzone-status}","serverExe": "openocd", // 选择openocd可执行文件"serverParameters": ["-f", "interface/cmsis-dap.cfg", // 此.cfg的文件位置为OpenOCD-20250710-0.12.0\share\openocd\scripts\interface"-f", "target/stm32h7x.cfg" // 此.cfg的文件位置为OpenOCD-20250710-0.12.0\share\openocd\scripts\target],"serverHost": "localhost","serverPort": "3333", // 默认3333端口"serverCwd": "","runEntry": "main","imagesAndSymbols": [{"imageFileName": "${command:st-stm32-ide-debug-launch.get-projects-binary-from-context1}","imageOffset": "","symbolFileName": "${command:st-stm32-ide-debug-launch.get-projects-binary-from-context1}","symbolOffset": ""}]}]
}
3)调试下载

点击左下角调试下载按钮即可进行 【编译】->【下载】->【进入调试】​:

http://www.dtcms.com/a/393915.html

相关文章:

  • Rsync+sersync实现数据实时同步
  • HttpServletRequest/Response/请求转发/响应重定向
  • 数据结构(2) —— 双向链表、循环链表与内核链表
  • 告别传统打版:用CLO 3D联动Substance,打造超写实数字服装
  • Linux | i.MX6ULL Sqlite3 移植和使用(第二十三章)
  • SpringBoot整合Smart Doc
  • 部署dataxweb
  • C#练习题——双向链表的创建,添加和删除
  • 大厂思维与“小快轻准”产品的矛盾
  • C++二进制转八进制
  • STL容器 --- 模拟实现 list
  • Java LTS版本进化秀:从8到21的欢乐升级之旅
  • yolo转tensorrt nano
  • paimon实时数据湖教程-分桶详解
  • kafka集群部署
  • Windows系统安装OpenSSL库最新版方法
  • 因果推断:关于工具变量的案例分析
  • 字节面试题:激活函数选择对模型梯度传播的影响
  • 5.Spring AI Alibaba
  • 如何优化Java并发编程以提高性能?
  • 【重量上下限报警灯红黄绿】2022-12-13
  • Node.js后端学习笔记:Express+MySQL
  • Ubuntu24.04 安装 禅道
  • StandardScaler,MinMaxScaler 学习
  • vscode+ssh连接server
  • 一文快速入门 HTTP 和 WebSocket 概念
  • Vue.js 项目创建指南
  • 核心策略、高级技巧、细节处理和心理
  • 算法优化的艺术:深入理解 Pow(x, n) 及其背后的思考
  • Projection Approximation Subspace Tracking PAST 算法