vs code 开发stm32

本文详细介绍了如何使用VSCode、GNU Arm工具链和OpenOCD搭建跨平台的STM32开发环境,包括STM32CubeMX的使用、驱动安装、软件配置、调试设置以及源码管理和日志系统。通过这一配置,开发者可以高效地进行STM32的Cortex-M内核微控制器编程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境搭建

作者在使用官方IDE开发了一段时间后,发现了很多的不足之处,遂转战VSCode + 开源 arm 工具链 + OpenOCD开发STM32的环境,该方案可跨平台使用,希望对读者有所帮助。

需安装的软件如下:

1、STM32CubeMX:通过官方该工具可快速生成带makefile的HAL库工程。下载网址如下,需要登陆方可下载。

STM32CubeMX - STMicroelectronics

2、vs code:编辑器,链接如下

Visual Studio Code - Code Editing. Redefined

3、GNU Arm Embedded Toolchain:arm用的GNU工具链,包括编译器(gcc),调试器(gdb),链接器(ld)和其它工具。需配置环境变量。

GNU Toolchain | GNU Arm Embedded Toolchain Downloads – Arm Developer

4、 OpenOCD ( windows版 ):一个开源的片上调试器。仅需下载解压,配置环境变量。

Download OpenOCD for Windows

5、Zadig:用来装jlink 的USB驱动的,虽然Jlink插上就能装驱动,但是直接装的OpenOCD识别不到。

Zadig - USB driver installation made easy

将jlink接入电脑,打开软件,选择Options---List All Devices,下拉菜单中选择J-link,然后在右侧选择WinUSB,点击Reinstall Driver。

6、Git:用于版本管理,需要注意的是我没有用mingw,因为国内网络环境有安装失败几率,其实GIT是基于mingw的,但是由于其轻量级的原因不支持make,需要添加make,wget等工具。

Git

安装完成GIT后,需要进行以下四步操作:

  • ezwinports - Browse Files at SourceForge.net下载make-x.x-x-without-guile-w32-bin.zip文件。
  • 解压文件。
  • 将解压出来的文件全部拷贝到: D:\Program Files\Git\mingw64\ ,如果跳出来需要替换的文件要选择不替换。
  • git bash窗口下执行make,不提示command not found即为安装成功。

编译

利用STM32CubeMX生成makefile类型的工程。

 

 

 

 

 

安装vs code基本插件

Chinese (Simplified)C/C++C/C++ Snippets、ARM、Cortex-Debug

配置c_cpp_properties.json。

点击黄色的小灯泡,

 

 

 

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "D:/Program Files (x86)/GNU Arm Embedded Toolchain/10 2021.07/lib/gcc/arm-none-eabi/10.3.1/include",
                "${workspaceFolder}/Core/Inc",
                "${workspaceFolder}/Drivers/STM32F1xx_HAL_Driver/Inc",
                "${workspaceFolder}/Drivers/STM32F1xx_HAL_Driver/Inc/Legacy",
                "${workspaceFolder}/Drivers/CMSIS/Include",
                "${workspaceFolder}/Drivers/CMSIS/Device/ST/STM32F1xx/Include"
            ],
            "defines": [
                "USE_HAL_DRIVER",
                "STM32F103xB"
            ],
            "compilerPath": "D:/Program Files (x86)/GNU Arm Embedded Toolchain/10 2021.07/bin/arm-none-eabi-gcc.exe",
            "intelliSenseMode": "gcc-x64",
            "browse": {
                "limitSymbolsToIncludedHeaders": true,
                "databaseFilename": "",
                "path": [
                    "${workspaceFolder}"
                ]
            }
        }
    ],
    "version": 4
}

配置tasks.json

在.vscode目录下创建tasks.json文件。

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "type": "shell",
            "command": "make",
            "args": [
                "-j4"
            ] 
        },
        {
            "label": "clean",
            "type": "shell",
            "command": "make",
            "args": [
                "clean"
            ] 
        }
    ]
}

调试

openocd配置

在项目文件夹下新建openocd.cfg文件。openocd启动时,会自动在当前目录下寻找名为openocd.cfg的文件作为配置文件。

下载svd文件

VS Code可以通过它来知道外设寄存器的地址分布,从而把寄存器内容展示到窗口中。下载好的STM32F103.svd文件放在项目文件夹根目录即可。

https://github.com/posborne/cmsis-svd

配置VS Code的调试功能

openocd在.vscode文件夹中新建一个launch.json.

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        
        {
            "name": "Cortex Debug",
            "cwd": "${workspaceRoot}",
            "executable": "${workspaceRoot}/build/${workspaceFolderBasename}.elf",
            "request": "launch",
            "type": "cortex-debug",
            
            "device":"STM32F103C8",        //使用J-link GDB Server时必须;其他GBD Server时可选(有可能帮助自动选择SVD文件)。支持的设备见 https://www.segger.com/downloads/supported-devices.php
            "svdFile": "./STM32F103xx.svd",  //svd文件,有这个文件才能查看寄存器的值,每个单片机都不同。可以在以下地址找到 https://github.com/posborne/cmsis-svd
            "servertype": "openocd",       //使用的GDB Server
            "configFiles": [                  
                "${workspaceRoot}/openocd.cfg"
            ],
            "preLaunchTask": "build"
        }
    ]
}

Jlink GDB Server配置

安装SEGGER Jlink驱动全家桶。

SEGGER - The Embedded Experts - Downloads - J-Link / J-Trace

在前面用Zadig修改了jlink驱动的,建议先在设备管理器里面卸载,然后安装全家桶。安装完成后记着添加环境变量。

给代码中添加源文件和头文件

C:\Program Files (x86)\SEGGER\JLink\Samples\RTT路径中,有一个Jlink RTT例程源码压缩包解压。然后把压缩包里的整个RTT文件夹复制到你的STM32工程中:

添加log.h文件。

#ifndef _LOG_H_
#define _LOH_H_
#include "SEGGER_RTT.h"

#define LOG_DEBUG 1

#if LOG_DEBUG


#define LOG_PROTO(type,color,format,...)            \
        SEGGER_RTT_printf(0,"  %s%s"format"\r\n%s", \
                          color,                    \
                          type,                     \
                          ##__VA_ARGS__,            \
                          RTT_CTRL_RESET)

/* 清屏*/
#define LOG_CLEAR() SEGGER_RTT_WriteString(0, "  "RTT_CTRL_CLEAR)

/* 无颜色日志输出 */
#define LOG(format,...) LOG_PROTO("","",format,##__VA_ARGS__)

/* 有颜色格式日志输出 */
#define LOGI(format,...) LOG_PROTO("I: ", RTT_CTRL_TEXT_BRIGHT_GREEN , format, ##__VA_ARGS__)
#define LOGW(format,...) LOG_PROTO("W: ", RTT_CTRL_TEXT_BRIGHT_YELLOW, format, ##__VA_ARGS__)
#define LOGE(format,...) LOG_PROTO("E: ", RTT_CTRL_TEXT_BRIGHT_RED   , format, ##__VA_ARGS__)

#else
#define LOG_CLEAR()
#define LOG
#define LOGI
#define LOGW
#define LOGE

#endif

#endif // !_LOG_H_

修改main.c、修改Makefilejson配置文件

修改main.c

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "log.h"
/* USER CODE END Includes */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
    cnt++;
    LOGE("this is an error !");
    LOGI("this is an iofo with params ! CNT:%d",cnt);
    LOGW("this is an warning !");      
    HAL_Delay(500);  
  }

修改Makefile

修改c_cpp_properties.json

修改launch.json

修改Tasks.json

按F5进入调试模式,然后运行。终端中出现了带颜色的log日志,同时各个寄存器的值都可以看到,读者可自行探索其他功能。

### 设置和使用VSCode中的STM32开发环境 #### 配置基础工具链 为了能够在VSCode中顺利开展STM32项目的开发工作,前期准备阶段需完成一系列必要的软件安装。这包括但不限于安装STM32CubeMX用于初始化硬件配置以及生成初始代码框架;安装Visual Studio Code作为主要集成开发环境(IDE)[^1]。 #### 安装必要组件 除了上述提到的基础平台外,还需要额外安装几个关键组件来完善整个开发生态圈: - **Arm GNU Toolchain**: 提供了针对ARM架构处理器编译C/C++程序所需的全部工具集; - **Make for Windows**: 用来解析并执行由STM32CubeMX自动生成的`Makefile`,从而实现自动化构建流程; - **Python & PyOCD**: 增强对目标板的支持能力,特别是通过PyOCD可以方便地连接到设备进行在线编程与实时调试操作[^4]。 #### 插件安装 在VSCode内部,则要确保已激活如下几项重要插件: - **C/C++ Extension Pack by Microsoft**: 支持语法高亮显示、智能感知等功能; - **STM32-for-VSCode (by STMicroelectronics)**: 此为意法半导体官方推出的专用扩展包,极大简化了新项目建立过程,并提供了丰富的特性集合以辅助日常编码活动。 #### 初始化项目结构 当所有前置条件都满足之后,就可以着手创建具体的应用实例了。通常情况下会先利用STM32CubeMX定义好外围接口参数,接着导出对应版本的源码模板至本地磁盘位置。随后切换回VSCode界面,在命令面板里选取“Open Folder...”,指向刚才保存下来的文件夹路径即可加载现有资源[^3]。 ```bash cd /path/to/project/folder code . ``` #### 自定义配置选项 如果想要进一步定制化当前的工作区属性或是引入第三方库依赖关系的话,那么就需要编辑位于`.vscode/settings.json`下的全局设定文档或者是查阅特定于本机系统的`stm32cubeide_vscode.config.yaml`文件来进行相应修改[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值