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

【windows上VScode开发STM32】

windows上VScode开发STM32

  • 一、编译环境安装
    • 1.1、Cygwin安装
    • 1.2、arm-none-eabi-gcc安装
  • 二、配置Debug及编译烧录任务
    • 2.1、安装openocd
    • 2.2 编译及烧录任务配置
    • 2.3 Debug配置
  • 三、printf重定向

一、编译环境安装

使用Cygwin结合VScode进行编译。

1.1、Cygwin安装

下载网址:https://cygwin.com/install.html

  1. 双击启动steup-x86_64.exe。选择下一步
    在这里插入图片描述
  2. 选择从互联网安装,然后下一步(注意可能需要连到比较慢的网络上加载)
    在这里插入图片描述
  3. 选择安装目录
    在这里插入图片描述
  4. 选择必要的软件包
    在这里插入图片描述
  5. 设置环境变量
    在这里插入图片描述

1.2、arm-none-eabi-gcc安装

  1. gcc-arm-none-eabi-10.3下载链接 gcc-arm-none-eabi-10.3 downoads
    双击gcc-arm-none-eabi-10.3-2021.10-win32.exe,选择安装路径一直点击下一步至完成即可添加环境变量
  2. 添加环境变量,一般安装完已经自动添加了环境变量
    在这里插入图片描述

二、配置Debug及编译烧录任务

Vscode可以通过json文件自定义调试任务,结合ST-link/j-link+openocd可完成MCU的debug及自定义运行任务编译及烧录

2.1、安装openocd

  1. openocd下载地址:openocd 下载
    选择下载最新的更新
    在这里插入图片描述
  2. 解压下载的openocd放置指定位置
    在这里插入图片描述
  3. 添加openocd环境变量
    在这里插入图片描述

2.2 编译及烧录任务配置

若为新建项目,需找到自己PC的Openocd安装路径下找到对应MCU的配置文件,如:从D:\OpenOCD-20230712-0.12.0\share\openocd\scripts\target目录下将stm32xxx.cfg(这个文件看当前工作芯片型号,F4则stm32f4x.cfg,G4则stm32g4x.cfg,F1则stm32f1x.cfg)文件拷贝到工程目录下;从D:OpenOCD-20230712-0.12.0\share\openocd\scripts\interface目录下将stlink.cfg文件拷贝到工程目录下。

  1. 组合键shift+ctrl+p,进入c/c++配置UI
    在这里插入图片描述
    将c_cpp_properties.json内容配置如下:
{"configurations":[{"name":"cygwin-gcc-x64","includePath":["${workspaceFolder}/**"],"defines":["_DEBUG","UNICODE","_UNICODE","USE_HAL_DRIVER""STM32G473xx"	//这个芯片看自身使用情况而定],"compilerPath": "D:\\cygwin64\\bin\\gcc.exe","cStandard":"c17","intellisenseMode":"windows-gcc-arm","cppstandard":"c++14"}],"version":4
}
  1. task配置
    在终端->运行任务->添加配置任务,将创建一个task.json文件,内容如下:
{// See https://go.microsoft.com/fwlink/?LinkId=733558// for the documentation about the tasks.json format"version": "2.0.0","tasks": [{"label": "build","type": "shell","command": "make -j12", //根据自己的PC性能选择线程数"options": {"cwd": "${workspaceFolder}"},"args": [],"group": "build"},{"label": "clean","type": "shell","command": "make clean","options": {"cwd": "${workspaceFolder}"},"args": [],"group": "build"},{"label": "download","type": "shell","command": "openocd","args": ["-f","stlink.cfg","-f","stm32g4x.cfg",	// 根据自身芯片设置"-c","program firmware/build/target.elf verify reset exit"	// target.elf更改为自己的工程编译文件名称],"group": "build"}]
}
  1. TASK RUNNER插件安装
    安装插件完之后重启VScode
    在这里插入图片描述
    重启VScode后可以看到编译、清除、烧录选项
    在这里插入图片描述

2.3 Debug配置

  1. 配置launch.json
    添加一个launch.json脚本
    在这里插入图片描述
{// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"cwd": "${workspaceFolder}","executable": "./build/xxxxx.elf","name": "Cortex Debug","request": "launch","type": "cortex-debug","showDevDebugOutput": false,"servertype": "openocd","configFiles": ["stlink.cfg","stm32g4x.cfg"]}]
}
  1. debug运行
    点击左边运行与调试,运行Cortex Debug
    在这里插入图片描述

三、printf重定向

  1. 增加_write函数
// 定义_write函数以重定向printf输出
int _write(int file, char *ptr, int len)
{HAL_UART_Transmit(&huart3, (uint8_t *)ptr, len, 0xFFFF); // 使用你自己的UART句柄return len;
}
  1. makefile文件增加如下内容,防止默认 _write 冲突
LDFLAGS += -specs=nosys.specs
http://www.lqws.cn/news/584929.html

相关文章:

  • C#数字格式化全解析:从基础到进阶的实战指南
  • 电铸Socket弹片测试全解析:如何提升5G连接器稳定性?
  • 华为物联网认证:开启万物互联的钥匙
  • uni-app开发app保持登录状态
  • 【C++】简单学——模板初阶
  • 中证500股指期货一手多少钱呢?风险如何?
  • 易语言-登录UI演示
  • 一个代理对象被调用时,方法调用的链路是怎样的?
  • 【Kafka使用方式以及原理】
  • 安卓获取图片(相机拍摄/相册选择)
  • Android Telephony 网络状态中的 NAS 信息
  • window显示驱动开发—在注册表中设置 DXGI 信息
  • 【C语言】知识总结·内存函数
  • 三态门Multisim电路仿真——硬件工程师笔记
  • 优雅草蜻蜓HR人才招聘系统v2.0.9上线概要 -优雅草新产品上线
  • Amazon Athena:无服务器交互式查询服务的终极解决方案
  • 33. 搜索旋转排序数组
  • pytorch底层原理学习--PyTorch 架构梳理
  • FreePDFv3.0.0:颠覆你的文献阅读习惯
  • 16014.rtsp推流服务器
  • C++ 第四阶段 STL 容器 - 第五讲:详解 std::set 与 std::unordered_set
  • TDH社区开发版安装教程
  • [学习]M-QAM的数学原理与调制解调原理详解(仿真示例)
  • [面试]手写题-Promise.all() Promise.race()
  • 机器学习20-线性网络思考
  • 第三十六章 CAN——控制器局域网络接口
  • 字节跳动 C++ QT PC客户端面试
  • 论文中用matplotlib画的图,如何保持大小一致。
  • Vue2中使用DHTMLX Gantt
  • 深入理解Webpack的灵魂:Tapable插件架构解析