当前位置: 首页 > 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.dtcms.com/a/263198.html

相关文章:

  • 【Debian】2-1 frp内网穿透原理
  • 第25天:高级数据库学习笔记1
  • WTL 之trunk技术学习
  • Compose入门1 - 高仿抖音 上下滑动播放视频
  • 深入解析JADX:专业Android逆向工程的利器
  • Oracle 进阶语法实战:从多维分析到数据清洗的深度应用​(第四课)
  • 大模型在多发性硬化预测及治疗方案制定中的应用研究
  • Stable Diffusion 项目实战落地:从0到1 掌握ControlNet 第三篇: 打造光影字形的创意秘技-文字与自然共舞
  • Java:Json反序列化自定义类
  • 计算机网络(一)层
  • 【基于Nest.js+React的全栈项目-00篇】开篇目录:25年新开系列文章,望多多支持~
  • 06_Americanas精益管理项目_数据分析
  • 卡片跳转到应用页面(router事件)
  • 阿里云-Docker的使用
  • 手动续期证书后自动上传到阿里云
  • 9.6 视觉专家模块+1536超清解析!智谱CogVLM-9B多模态模型中文场景实战评测,性能炸裂吊打LLaVA
  • 笨方法学python -练习6
  • MySQL 慢查询日志详解
  • Arduino IDE ESP8266连接0.96寸SSD1306 IIC单色屏显示北京时间
  • 第81题:搜索旋转排序数组Ⅱ
  • PHP:历经岁月沉淀的Web开发利器
  • 如何查看服务器的运行日志?
  • mysql 分组后时间没有按照最新时间倒序
  • PHP安装使用教程
  • 气候智能体:AI如何重构人类应对气候危机的决策体系?
  • FastAPI 学习(二)
  • 三态门Multisim电路仿真——硬件工程师笔记
  • 重构老项目不再“踩雷”:飞算JavaAI的本地化智能合并实战
  • react setstate
  • 【Java面试】10GB,1GB内存,如何排序?