0


用vscode搭建stm32开发环境

一、软件和工具包安装下载

####以下所有软件和工具包均可自己去官网下载,就不提供下载网址,需要可以后台私信,建议将工具包安装到同个盘,防止找不到文件####

1、安装vscode

(1) 下载完成打开后安装需要的插件,可参考以下列表:

Arm Assembly;   C/C++;          C/C++ Extension Pack;   C/C++ Snippets;     简体中文;
CMake;         file-icons;      LinkerScript;           One Dark Pro;      vscode-icons

(2) 使用git终端

最新版本的vscode,菜单栏终端-->新建终端-->右下角选择+可以选择电脑有的终端,选择git即可

2、安装llvm

(1) LLVM 的 Clang 编译器是一个功能强大、性能优异的编译器前端,它支持各种编程语言,如 C、C++、Objective-C 等。你可以使用 Clang 来增强 Visual Studio Code (VS Code) 中的代码补全和语法检查功能,因为 Clang 提供的编译器和静态分析工具在代码补全和错误提示方面表现出色。

(2) 安装完成后,将路径添加到环境变量里面:

1、右键点击“此电脑”或“我的电脑”,选择“属性”。
2、进入“高级系统设置”。
3、在“系统属性”窗口中,点击“环境变量”。
4、在“系统变量”部分,找到并选择 PATH,然后点击“编辑”。
5、点击“新建”,并将llvm安装目录的 bin 路径(例如 D:\llvm\bin)添加进去。
6、点击“确定”保存更改。
3、安装git for windows

一个在 Windows 操作系统上使用 Git 的工具集。它提供了一个 Bash 模拟环境,可以在 Windows 上运行 Git 命令,并且包含了一些基本的 Unix 工具(如

ssh

ls

grep

等)

4、安装arm-none-eabi-gcc

(1) 一个用于嵌入式系统开发的编译器、它是 GNU 编译器套件(GCC)的一个特定版本,用于编译针对 ARM Cortex-M、Cortex-R 等架构的裸机代码(不依赖操作系统)。

(2) 安装完成后,将路径(如:D:\gcc\10 2021.10\arm-none-eabi\bin)添加到环境变量里面

(3) 在cmd 中输入**arm-none-eabi-gcc -v **打印gcc版本信息即是安装成功

5、安装mingw64

(1) MinGW-w64(Minimalist GNU for Windows)是一个在 Windows 平台上开发、编译和构建 Windows 应用程序的开源工具链,它包括了 GCC 编译器(包括 C、C++ 和 Fortran 编译器),并且支持 32 位和 64 位的 Windows 程序开发

(2) 安装完成后,将bin目录下的mingw32-make.exe 重命名为make.exe

(3) 将路径(如:D:\x86_64-8.1.0-release-win32-seh-rt_v6-rev0\mingw64\bin)添加到环境变量里面,加入成功后打开cmd 输入make -v 打印出版本号就是安装成功

6、安装openocd

(1) 一款开源工具,用于调试嵌入式系统,特别是那些使用 ARM Cortex-M 等架构的微控制器。

(2) 安装完成后,将路径(D:\OpenOCD-20231002-0.12.0\bin)添加到环境变量里面,同时也将scripts路径(如:D:\OpenOCD-20231002-0.12.0\share\openocd\scripts)添加到里面

(3) 在cmd命令中输入openocd -v打印版本号后即安装成功

7、安装STM32CubeMX

(1) STM32CubeMX 是 STMicroelectronics 提供的一款图形化工具,用于生成 STM32 微控制器项目的初始化代码

(2) 用于生成makefile文件

创建工程可以参考博客:https://blog.csdn.net/lc_guo/article/details/135071885?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522172325666316800175729351%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=172325666316800175729351&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-135071885-null-null.142^v100^pc_search_result_base5&utm_term=%E7%94%A8stm32cubemx%E5%88%9B%E5%BB%BA%E5%B7%A5%E7%A8%8B&spm=1018.2226.3001.4187

注意:我们需要生成makefile文件,在命令行环境下管理和编译你的 STM32 项目,而不必依赖于特定的 IDE

(3) 将生成的工程用vscode打开,新建终端,选择使用git bash,在打开的终端中输入make 等待编译成功

二、编译烧写代码环境

1、方法一

在makefile中配置下载代码,使用stlink进行下载

**

openocd

**:这是一个开源的调试器,用于编程、调试和测试嵌入式设备。

**

-f interface/stlink.cfg

**:指定 ST-LINK 调试器的配置文件,这个配置文件告诉 OpenOCD 如何与 ST-LINK v2-1 适配器通信。(可以根据自己的需要去选择不同版本的调试配置文件)

**

-f target/stm32h7x.cfg

:指定 STM32H7 系列微控制器的配置文件。(根据自己板子的型号去选择,源文件路径在openocd\scripts\target** 文件夹中,此文件夹前面已经加入到环境变量中)

**

-c "program $(BUILD_DIR)/$(TARGET).elf reset exit"

**:

  • **program**:告诉 OpenOCD 进行编程操作。
  • **$(BUILD_DIR)/$(TARGET).elf**:这是你要烧录的 ELF 文件的路径。通常 $(BUILD_DIR) 代表构建目录,$(TARGET) 代表目标文件名。
  • **reset**:在烧录完之后,复位微控制器。
  • **exit**:在烧录和复位操作完成后,退出 OpenOCD。

增加flash命令:

flash:
    openocd -f interface/stlink.cfg -f target/stm32h7x.cfg -c "program $(BUILD_DIR)/$(TARGET).elf reset exit" 
​

为了将编译和下载命令合为一体,新增以下命令,含义是先编译,后自动下载:

download:$(BUILD_DIR)/$(TARGET).elf $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).bin
    openocd -f interface/stlink.cfg -f target/stm32h7x.cfg -c "program $(BUILD_DIR)/$(TARGET).elf reset exit" 

编译命令:

make 只编译不下载
make flash 下载编译好的文件
make download 编译并下载
2、方法二

(1)openocd配置

打开openocd的安装目录,打开share/openocd/scripts,可以看到很多的配置文件

target里存放目标芯片的配置文件,例如stm32h7.cfg

interface里存放仿真器相关的配置文件,例如jlink.cfg,stlink.cfg.、

我们启动openocd时,可以用-f参数来指定一个配置文件:

 openocd –f interface/stlink.cfg –f target/stm32h7.cfg

不带参数启动,就需要在当前文件夹创建openocd.cfg的文件

板子上电,连接号好后,打开终端在git bash里面直接输入openocd,就可以启动openocd

此时openocd已经正在运行,已被占用,后面的操作需要自己再打开一个终端

(2)openocd和gdb的连接

使用命令行启动gdb,参数为编译好的调试文件(.elf)(在build文件夹下面可以找到)

arm-none-eabi-gdb build/demo3.elf

使用命令行使gdb连上openocd

target remote localhost:3333

(3)下载代码,直接使用load命令直接烧写进板子,使用continue命令执行烧写的程序

三、搭建调试环境

1、单击左侧栏运行和调试图标,再点击创建launch.json文件选项,会在右侧出现选择调试器菜单。接着单击**C++(GDB/LLDB)**,这里的GDB、LLDB是可以作为C/C++的调试器(debugger)

2、执行完步骤1,会在工作区code中的.vscode文件夹里面生成一个launch.json配置文件。这里的launch.json文件是首次配置,默认为空

3、在configurations的中括号里进行配置launch.json文件,配置的内容如下

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "ARM Debug",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/build/demo3.elf",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "D:\\gcc\\10 2021.10\\bin\\arm-none-eabi-gdb.exe",
            "targetArchitecture": "arm",
            "setupCommands": [
                {
                    "description": "选择调试文件(.elf)到gdb",
                    "text": "file \"D:/New Folder/demo3/build/demo3.elf\"",
                    "ignoreFailures": false
                },
                {
                    "description": "连接GDB Server",
                    "text": "target remote localhost:3333",                                 
                    "ignoreFailures": false
                },
                {
                    "description": "Reset MCU",
                    "text": "monitor reset",                                              
                    "ignoreFailures": false
                },
                {
                    "description": "Halt",
                    "text": "monitor halt",                                                  
                    "ignoreFailures": false
                },
                {
                    "description":"下载代码到MCU",
                    "text": "load" ,              
                    "ignoreFailures": false                                      
                }
            ],
            //"preLaunchTask": "build"
        }
    ]
}

**

"name": "ARM Debug"

**:

  • 这是配置的名称,可以在调试任务列表中看到。

**

"type": "cppdbg"

**:

  • 指定调试类型为 C++ 调试。

**

"request": "launch"

**:

  • 表示要启动程序进行调试。

**

"program": "${workspaceFolder}/build/demo3.elf"

**:

  • 指定要调试的 ELF 文件的位置。

**

"args": []

**:

  • 传递给程序的命令行参数,此处为空。

**

"stopAtEntry": false

**:

  • 如果设置为 true,程序将停止在 main() 函数的入口点。

**

"cwd": "${workspaceFolder}"

**:

  • 设置调试器的工作目录为当前工作区目录。

**

"environment": []

**:

  • 传递给调试器的环境变量,此处为空。

**

"externalConsole": false

**:

  • 是否使用外部控制台,false 表示不使用。

**

"MIMode": "gdb"

**:

  • 使用 GDB 模式进行调试。

**

"miDebuggerPath": "D:\\gcc\\10 2021.10\\bin\\arm-none-eabi-gdb.exe"

**:

  • 指定 GDB 调试器的路径。

**

"targetArchitecture": "arm"

**:

  • 指定目标架构为 ARM。

**

"setupCommands": []

**:

  • 在调试会话开始时运行的一组命令:- file "D:/New Folder/demo3/build/demo3.elf": 选择要调试的 ELF 文件。- target remote localhost:3333: 连接到 GDB 服务器,通常通过 OpenOCD 提供。- monitor reset: 复位 MCU。- monitor halt: 停止 MCU 的运行。- load: 将代码烧写到 MCU。

**

"preLaunchTask": "build"

**:

  • (被注释掉)指在调试前运行的任务,通常用于自动编译代码。如果没有这行代码,就需要手动编译。

参考的博客:

1、https://blog.csdn.net/ciqujinnian_/article/details/129115305
2、https://blog.csdn.net/m0_61687959/article/details/133823780 
3、https://blog.csdn.net/m0_46610658/article/details/140450473?ops_request_misc=&request_id=&biz_id=102&utm_term=vscode%E6%80%8E%E4%B9%88%E9%85%8D%E7%BD%AEc_cpp_properties&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-3-140450473.142^v100^pc_search_result_base5&spm=1018.2226.3001.4187 
4、https://blog.csdn.net/ben_black/article/details/109906781?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522172316253216800186589683%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=172316253216800186589683&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-4-109906781-null-null.142^v100^pc_search_result_base5&utm_term=%E4%BD%BF%E7%94%A8VSCode%20%E6%90%AD%E5%BB%BA%20STM32%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83&spm=1018.2226.3001.4187 
5、https://blog.csdn.net/m0_46610658/article/details/140450473?ops_request_misc=&request_id=&biz_id=102&utm_term=vscode%E6%80%8E%E4%B9%88%E9%85%8D%E7%BD%AEc_cpp_properties&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-3-140450473.142^v100^pc_search_result_base5&spm=1018.2226.3001.4187 
6、调试方法:https://blog.csdn.net/szm1234/article/details/115716470?ops_request_misc=&request_id=&biz_id=102&utm_term=vscode%E4%BD%BF%E7%94%A8gdb%E8%B0%83%E8%AF%95%E6%95%99%E7%A8%8B&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-4-115716470.142^v100^pc_search_result_base5&spm=1018.2226.3001.4187
标签: vscode stm32 ide

本文转载自: https://blog.csdn.net/2301_77584021/article/details/142553072
版权归原作者 Steven(Cj) 所有, 如有侵权,请联系我们删除。

“用vscode搭建stm32开发环境”的评论:

还没有评论