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

VSCode搭建STM32开发调试环境

闲言碎语:
好久没更,在忙着科研→校招→写毕业论文。
临近毕业,总结自己的大学生活:C\C++、Java、Python、深度学习,学的乱七八糟
秋招找了个嵌入式工作(涉及AI应用),大致确定了以后的技术方向了,应该不会继续乱学了。
先搭个环境学起来。

目录

  • VSCode 配置
    • 安装Embedded IDE插件
    • 新建项目
    • 添加芯片支持包
    • 检查库函数头文件是否被引入
    • 烧录器配置(以STLink为例)
      • 安装STLink驱动
    • 在项目中添加自定义文件夹
    • 调试设置(以STLink为例)
      • 安装cortex-debug插件
      • 安装MingW64(可选?)
      • 安装arm-none-eabi-gcc
      • 安装 ST-LINK GDB server
      • 配置项目中的launch.json
      • 调试效果

VSCode 配置

安装Embedded IDE插件

新建项目

中途vscode提示安装的东西(gcc等)都装上。

添加芯片支持包

芯片支持包 | Embedded IDE For VSCode

可以进行在线下载,也可以本地导入。实际根据具体芯片选择。

检查库函数头文件是否被引入

stm32f10x_conf.h用于统一管理外设库函数头文件的引入。通过注释或取消注释宏定义,控制项目中需要使用的硬件外设模块(如 ADC、SPI、USART 等)。

stm32f10x.h中规定只有编译器添加了USE_STDPERIPH_DRIVER预处理宏定义,才能启动该头文件

因此需要在项目配置中添加预处理宏定义(EIDE默认配好了)

烧录器配置(以STLink为例)

安装STLink驱动

懒人方法:

  1. 安装Keil MDP
  2. 电脑插入STLink
  3. 运行安装程序:{Keil MDP目录}\ARM\STLink\USBDriver\dpinst_amd64.exe
  4. 项目中配置

在项目中添加自定义文件夹

  1. 在工程目录中新建文件夹(略)
  2. 项目资源C/C++属性→包含目录中添加新建的文件夹

调试设置(以STLink为例)

参考:https://www.jianshu.com/p/83f1f3a5e876

安装cortex-debug插件

安装MingW64(可选?)

如果安装ST-LINK GDB server时是直接使用编译好的压缩包,那么MingW64可能不是必要的。

{MingW64根目录}\bin加入到环境变量。

安装arm-none-eabi-gcc

Downloads | GNU Arm Embedded Toolchain Downloads – Arm Developer

添加环境变量

D:\GNU Arm Embedded Toolchain\10 2021.10\bin

安装 ST-LINK GDB server

这里直接下载编译好的压缩包

https://github.com/stlink-org/stlink/releases

解压到任意位置(以D盘为例)

检查bin文件夹有没有libusb-1.0.dll文件,如果没有,从https://www.dllme.com/dll/files/libusb-1_0下载

配置项目中的launch.json

{"version": "0.2.0","configurations": [{"cwd": "${workspaceRoot}","type": "cortex-debug","request": "launch","name": "stlink","servertype": "stutil","serverpath": "D:\\stlink-1.8.0-win32\\bin\\st-util.exe","executable": ".\\build\\Debug\\4-1-monitor.elf","v1": false,"runToEntryPoint": "main","svdFile": ".\\.pack\\Keil\\STM32F1xx_DFP.2.2.0\\SVD\\STM32F103xx.svd","configFiles": ["interface/<debugger-type>.cfg","target/<mcu-series>.cfg"]}]
}

其中executablesvdFile的值需要根据实际项目名称和芯片名称修改。

调试效果

先进行构建,然后打个断点调试,效果如下

相关文章:

  • PostgreSQL 查看索引碎片的方法
  • Git 入门指南:下载与初步认识
  • 多模态大语言模型arxiv论文略读(五十九)
  • React-router v7 第七章(导航)
  • 【leetcode100】最长递增子序列
  • 大数据实时数仓的数据质量监控解决方案
  • TS 类型别名
  • [MATLAB]通过50个MATLAB程序理解信号与系统的核心概念
  • K8S的使用(部署pod\service)+安装kubesphere图形化界面使用和操作
  • Go Web 后台管理系统项目详解
  • AI入门:Prompt提示词写法
  • Qt6 学习指南:前言+安装基本依赖
  • Prompt compress 技术探究-LLMLingua2
  • RabbitMQ-基础
  • 2025.4.28-20025.5.4学习周报
  • 网络开发基础(游戏)之 心跳机制
  • iview 老版本合并单元格
  • Javase 基础加强 —— 03 集合
  • nt!MiSessionAddProcess函数分析和nt!MmSessionSpace全局变量的关系
  • 基于注解脱敏+链路追踪traceId 快速定位错误
  • 张建华评《俄国和法国》|埃莲娜·唐科斯的俄法关系史研究
  • 据报特斯拉寻找新CEO,马斯克财报会议上表态:把更多时间投入特斯拉
  • 国家卫健委对近日肖某引发舆情问题开展调查
  • 前行中的“模速空间”:要攻克核心技术,也要成为年轻人创业首选地
  • 国家医保局副局长颜清辉调任人社部副部长
  • 南部战区位南海海域进行例行巡航