用vs code 搭建stm32 开发环境(详细)

本文详细指导如何在VSCode中配置STM32开发环境,包括安装STM32CubeMX、ARMGCC、OpenOCD,以及编译、调试和烧写全过程,适合STM32新手入门。

用vs code 搭建stm32 开发环境

一、 软件安装

二、编译

三、调试

一 软件安装

1.1需要的软件

STM32CubeMX 生成工程模板
VS Code 编辑和调试程序
Make 启动编译
ARM GCC 编译程序
OpenOCD 连接调试器。

1.2 软件连接
1.2.1
安装java(安装STM32CubeMX,在这之前要先安装java),
https://www.java.com/zh_CN/download/windows-64bit.jsp;
1.2.2
安装STM32CubeMX
https://www.st.com/zh/development-tools/stm32cubemx.html。
1.2.3
安装ARM GCC,https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads。
把bin文件夹加到环境变量。
运行arm-none-eabi-gcc -v,测试环境变量是否正常。
1.2.4
安装OpenOCD
http://www.gnutoolchains.com/arm-eabi/openocd/
将bin目录添加到环境变量。
1.2.5
下载安装VSCode
打开浏览器输入(进入到网:https://code.visualstudio.com/),然后进入VSCode的首页,按照下图中指示步骤点击下载安装。
1.2.6
下载安装make
百度直接搜索即可

1.3 安装软件具体步骤
注意:所有软件安装的路径都不能出现中文。

1.3.1 Vs code

下载后的VScode文件如下图。
在这里插入图片描述

安装如下图:
在这里插入图片描述

勾选【我接受协议】,继续点击下一步。
在这里插入图片描述

选择安装位置,位置目录中尽量不要出现中文字符。
在这里插入图片描述

继续点击下一步。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

到这里安装完成。

安装后打开的界面。
在这里插入图片描述

添加插件如下
在这里插入图片描述

1.3.2 openocd 安装
1、下载之后解压文件
在这里插入图片描述

2、复制路径

在这里插入图片描述

3、右击-》 此电脑 选择属性-》选择高级系统设置
在这里插入图片描述

4、选择环境变量

在这里插入图片描述

5双击pasth
在这里插入图片描述

6选择新建,把刚刚复制的路径添加即可。
在这里插入图片描述

1.3.3 安装ARM-GCC
1、下载后安装包
在这里插入图片描述

2、双击应用程序,选择ok
在这里插入图片描述

3、点击下一步
在这里插入图片描述

4、选择我接受
在这里插入图片描述

5、选择路径并安装
在这里插入图片描述

6、安装完成之后,添加路径
在这里插入图片描述

7、右击-》选择属性-》选择高级系统设置
在这里插入图片描述

8、选择环境变量
在这里插入图片描述

9双击pasth
在这里插入图片描述

10选择新建,把刚刚复制的路径添加并点击确定
即可。
在这里插入图片描述

1.3.4 安装make
1、双击

在这里插入图片描述

2、点击next
在这里插入图片描述

3、点击接受
在这里插入图片描述

4、选择路径并安装
在这里插入图片描述

5、添加环境路径
在这里插入图片描述

7、右击-》选择属性-》选择高级系统设置
在这里插入图片描述

8、选择环境变量

在这里插入图片描述

9双击pasth
在这里插入图片描述

10选择新建,把刚刚复制的路径添加并点击确定
即可。
在这里插入图片描述

1.4 软件安装检测

1.4.1 步骤
1、在此收入cmd
在这里插入图片描述

2、显示
在这里插入图片描述

3、依次收入以下命令

(1)、检测 make make -v
(2)、检测 ARM-GCC arm-none-eabi-gcc -v
(3)、检测 openocd openocd -v
4、显示以下内容即软件安装成功(显示出软件的版本号)
在这里插入图片描述

二、编译
1、用stm32cobemx 生成一个点灯的工程。
在这里插入图片描述

2、用vscode打开(或把文件夹直接拖进vscode),出现如下界面。
在这里插入图片描述

3、打开(管理)—》命令面板—》编辑配置
在这里插入图片描述

注意:只有安装c/c++其才会弹出
4、添加路径
在这里插入图片描述

(1)路径分析
在这里插入图片描述

这些路径都为绝对路径(即gcc-arm-none-eabi-7-2018-q2-update-win32-sha2 (1)安装位置),在下图文件中都找到。
在这里插入图片描述

(2)下图都为相对路径
在这里插入图片描述

都是从下图中查找并复制添加
在这里插入图片描述

(3)宏定义分析
在这里插入图片描述

(3.1)添加可以从MakeFile中查找添加
在这里插入图片描述

(3.2)添加 (直接复制下图添加即可)
“__CC_ARM”
在这里插入图片描述

添加完保存即可
4、输入命令编译
(1)打开在终端输入 make
在这里插入图片描述

(2)编译之后发现无错误,生成 .elf .hex .bin 文件

在这里插入图片描述

三、调试、烧写
1、流程分析
此图与本次开发环境流程类似,借以引用。
在这里插入图片描述

1.1本次主要讲述流程如下
在这里插入图片描述

1.2编译器vscode生成.bin .hex 文件---->>调试下载工具(openocd)---->>st-link烧写器–>>单片机

2、openocd配置
要运行openocd这个gdb server,需要配置如下几个参数:
用什么仿真器?(J-link, ST-link…)
用什么接口?(JTAG, SWD…)
目标芯片是什么?(STM32F4x, tm4c123g…)
2.1在本例中,有如下对应关系:

GDB——————arm-none-eabi-gdb.exe
GDB Server————OpenOCD
仿真器——————stlink-v2
MCU——————STM32F405RGT6

(1)首先我们打开openocd的安装目录,打开openocd/scripts,里面有很多提前写好的配置文件

(2)target里存放目标芯片的配置文件,例如stm32f4x.cfg
在这里插入图片描述

(3)interface里存放仿真器相关的配置文件,例如stlink-v2.c(本次用的)
在这里插入图片描述

2.2 打开终端连接调试器与pc端。
启动openocd用-f参数来指定配置文件,输入命令如下:
openocd –f interface/stlink-v2.cfg -c “transport select hal_swd” –f target/stm32f4x.cfg

我们也可以创建一个openocd .cfg 文件,并把它作为配置文件来启动(即敲击openocd即可启动)。
在这里插入图片描述

选择使用stlink-v2下载器 hal_swd接口 目标芯片为stm32f4x。连接好板子,直接在终端里敲openocd启动连接。

在这里插入图片描述

即连接成功,shell终端被占用,需新开一个终端。
3.openocd 试运行
3.1如果你的电脑没有开启telnet功能,在搜索框搜索“启用或关闭Windows功能”,然后在里面找到“telnet客户端”,勾选点击确。
在这里插入图片描述

3.2 openocd默认TCP/IP的3333端口作为gdb端口,4444作为telnet端口。在连接gdb之前,我们可以先用telnet连上试用一下。然后点击终端窗口右上角的“+”号新建一个终端,输入:

telnet localhost 4444

在这里插入图片描述

就连接到本机的4444端口,也就是GDB Server了
3.3 烧写程序 终端敲入:
program ./build/led.hex
显示下图即可下载成功。
在这里插入图片描述

4 用gdb连上openocd
(1)直接启动gdb,参数为编译好的调试文件(.elf)
在这里插入图片描述

(2)openocd留给gdb的TCP/IP端口是3333,因此输入:
target remote localhost:3333
在这里插入图片描述

(3)烧写代码
与之前流程一样,先reset,在halt,最后下载。
在这里插入图片描述

(4)退出 输入q
在这里插入图片描述

5.配置vs code 的调试功能
(1)在VS Code内选择debug(就是左边那个虫子图标),选择“添加配置”,类型为GDB。就会在.vscode文件夹下生成launch.json配置文件。
(2)setupCommands里面就是我们之前试用gdb时操作过的流程:连接GDB Server——reset——halt——下载代码。
在这里插入图片描述

而preLaunchTask中是下图在tasks.json中配置的build任务。它可以让我们每次调试时都先编译一遍。
在这里插入图片描述

保存后,随便打几个断点,按下F5,就可以调试了。

在这里插入图片描述
最后:如有错误,望谅解,小白初次用用vs code 搭建stm32 开发环境.

### 搭建 STM32 开发环境STM32Cube 与 Visual Studio Code 配置 搭建 STM32 开发环境需要安装和配置多个工具,包括 Visual Studio Code (VSCode)STM32CubeMX、STM32CubeIDE 和 STM32 VSCode 插件。以下是详细的配置说明: #### 1. 安装必要软件 为了使用 STM32Cube 和 Visual Studio Code 进行开发,首先需要安装以下软件包或插件: - **Visual Studio Code**: 可以从 [Visual Studio Code 官网](https://code.visualstudio.com/) 下载并安装。 - **STM32CubeMX**: STM32 的图形化配置工具,用于生成初始化代码。可以从 ST 官网下载[^1]。 - **STM32Cube for Visual Studio Code 插件**: 适用于 Visual Studio CodeSTM32Cube 扩展,可以从 [Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=STMicroelectronics.stm32-for-vscode) 安装[^1]。 #### 2. 配置开发环境 完成上述软件的安装后,需要进行以下配置步骤: - **安装 C/C++ 插件**: 在 Visual Studio Code 中安装 Microsoft 提供的 C/C++ 插件,用于代码编辑和调试支持。 - **安装编译器工具链**: 推荐使用 GNU ARM Embedded Toolchain,可以从 [GNU Arm Embedded Toolchain](https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads) 下载并安装。 - **配置路径**: 将 GNU ARM 编译器工具链的路径添加到系统环境变量中,确保在命令行中可以运行 `arm-none-eabi-gcc` 命令[^2]。 #### 3. 使用 STM32CubeMX 生成代码 - 打开 STM32CubeMX,选择目标芯片型号并配置时钟、外设等参数。 - 在项目设置中选择 “Generate code as” 为 “Makefile Project”,然后选择 “Create project”。 - 生成的代码将包含 Makefile 和初始化代码,可以直接导入到 Visual Studio Code 中[^3]。 #### 4. 导入项目到 Visual Studio Code - 打开 Visual Studio Code,选择生成的项目文件夹。 - 安装 STM32 VSCode 插件后,会自动识别项目类型并配置编译环境。 - 如果需要自定义编译选项,可以在项目的 `Makefile` 中进行修改[^2]。 #### 5. 配置调试环境 - 确保已安装 OpenOCD 调试工具,并将其路径添加到系统环境变量中。 - 在 Visual Studio Code 中配置调试环境,创建 `.vscode/launch.json` 文件,内容如下: ```json { "version": "0.2.0", "configurations": [ { "name": "Debug STM32", "type": "cortex-debug", "request": "launch", "servertype": "openocd", "executable": "./build/main.elf", "configFiles": [ "interface/stlink.cfg", "target/stm32f4x.cfg" ], "preLaunchTask": "build" } ] } ``` - 确保 `executable` 路径指向生成的目标文件,`configFiles` 指向 OpenOCD 配置文件。 #### 6. 测试编译和调试 - 使用 Visual Studio Code 内置终端运行 `make` 命令,验证项目是否能够成功编译。 - 启动调试会话,检查程序是否正确加载到目标设备上并正常运行。 --- ### 示例代码 以下是一个简单的测试函数示例,用于验证串口打印功能: ```c #include "stm32f4xx_hal.h" #ifdef __GNUC__ #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) #else #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) #endif PUTCHAR_PROTOTYPE { HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF); return ch; } int main(void) { HAL_Init(); MX_USART1_UART_Init(); // 初始化 USART1 printf("Hello, STM32!\n"); while (1) { HAL_Delay(1000); } } ``` ---
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值