.vscode文件中各个脚本需要修改的地方

news2024/12/26 18:13:54

NOTE:
此篇文章由VSCode编辑+GCC for ARM交叉编译工具链+Makefile构建+OpenOCD调试(基于STM32的标准库)派生而来,对.vscode文件中各个脚本需要修改的地方作补充说明。

tasks.json

该json文件的主要作用:使用XX名称去执行XX命令和XX参数。
包含了程序编译、目标及过程文件清除、重新编译、CMSIS-DAP-Link / ST-Link / J-Link下载

需要修改处:
① 修改
"args": [
"-f",
"interface/cmsis-dap.cfg",
"-f",
"target/stm32f4x.cfg",
"-c",
"program build/${workspaceRootFolderName}.elf verify reset", //将工程根目录名称作为可执行文件名称
"-c",
"reset run",
"-c",
"exit"
]
target/stm32f4x.cfg为你对应的MCU配置文件(位于OpenOCD文件夹下)。
② 注意修改 J-Link json 块的interface/jlink-swd.cfg,具体参考笔者的一篇博客OpenOCD之J-Link下载。

………………ST-Link json块和J-Link json块以此类推去修改。

//任务脚本
{
    //ctrl+shift+B
    "tasks": [
        //编译
        {
            "type": "shell",
            // type:Task的类型,分为shell和process两种
            // shell:作为Shell命令运行
            // process:作为一个进程运行
            "label": "build",
            "command": "make -j 8",
            "args": [],
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build"
        },
        //清除
        {
            "type": "shell",
            "label": "clean",
            "command": "make clean",
            "args": [],
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build"
        },
        //重编译
        {
            "type": "shell",
            "label": "rebuild",
            "command": "make -j 8",
            "args": [],
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "dependsOn": [ //每次执行这个任务,会先执行clean任务,再执行build任务,这便是所谓的依赖。
                "clean"
            ]
        },
        //cmsis-dap方式下载
        {
            "type": "shell",
            "label": "flash with cmsis-dap-link",
            "command": "openocd",
            "args": [
                "-f",
                "interface/cmsis-dap.cfg", //D:\Software\embedded_dev_tools\xpack-openocd-0.12.0-3\openocd\scripts\interface
                "-f",
                "target/stm32f4x.cfg", //D:\Software\embedded_dev_tools\xpack-openocd-0.12.0-3\openocd\scripts\target
                "-c",
                // "program build/F401CCU6_demo.elf verify reset exit"
                "program build/${workspaceRootFolderName}.elf verify reset", //将工程根目录名称作为可执行文件名称
                "-c",
                "reset run",
                // "-c",
                // "shutdown",
                "-c",
                "exit"
            ], /*command+args相当于主命令+子命令,也就是openocd -f interface/stlink-v2.cfg -f target/stm32f1x.cfg -c "program build/F401CCU6_demo.elf verify reset exit"的效果*/
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "dependsOn": [ //每次执行这个任务,会先build任务,这便是所谓的依赖。
                "build"
            ]
        },
        //stlink方式下载
        {
            "type": "shell",
            "label": "flash with ST-link",
            "command": "openocd",
            "args": [
                "-f",
                "interface/stlink.cfg", //D:\Software\embedded_dev_tools\xpack-openocd-0.12.0-3\openocd\scripts\interface
                "-f",
                "target/stm32f4x.cfg", //D:\Software\embedded_dev_tools\xpack-openocd-0.12.0-3\openocd\scripts\target
                "-c",
                // "program build/F401CCU6_demo.elf verify reset exit"
                "program build/${workspaceRootFolderName}.elf verify reset", //将工程根目录名称作为可执行文件名称
                "-c",
                "reset run",
                // "-c",
                // "shutdown",
                "-c",
                "exit"
            ], /*command+args相当于主命令+子命令,也就是openocd -f interface/stlink-v2.cfg -f target/stm32f1x.cfg -c "program build/F401CCU6_demo.elf verify reset exit"的效果*/
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "dependsOn": [ //每次执行这个任务,会先build任务,这便是所谓的依赖。
                "build"
            ]
        },
        //J-link方式下载
        {
            "type": "shell",
            "label": "flash with J-link",
            "command": "openocd",
            "args": [
                "-f",
                "interface/jlink-swd.cfg", //D:\Software\embedded_dev_tools\xpack-openocd-0.12.0-3\openocd\scripts\interface
                "-f",
                "target/stm32f4x.cfg", //D:\Software\embedded_dev_tools\xpack-openocd-0.12.0-3\openocd\scripts\target
                "-c",
                // "program build/F401CCU6_demo.elf verify reset exit"
                "program build/${workspaceRootFolderName}.elf verify reset", //将工程根目录名称作为可执行文件名称
                "-c",
                "reset run",
                // "-c",
                // "shutdown",
                "-c",
                "exit"
            ], /*command+args相当于主命令+子命令,也就是openocd -f interface/stlink-v2.cfg -f target/stm32f1x.cfg -c "program build/F401CCU6_demo.elf verify reset exit"的效果*/
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "dependsOn": [ //每次执行这个任务,会先build任务,这便是所谓的依赖。
                "build"
            ]
        }
    ],
    "version": "2.0.0"
}

launch.json

该json文件的主要作用:用于调试MCU,和选择什么样的调试器件。

需要修改处: 对于 CMSIS-DAP-Link 调试json块,
① 修改"device": "STM32F401CCU6"为你所需要的MCU型号。
② 修改
"configFiles": [
"interface/cmsis-dap.cfg",
"target/stm32f4x.cfg"
]
target/stm32f4x.cfg为你对应的MCU配置文件(位于OpenOCD文件夹下)。
③ 修改 "svdFile": "./STM32F401.svd" 对应MCU型号的寄存器文件及路径。
④ 修改 "preLaunchTask": "flash with stlink" 的预先任务名称flash with stlink,对应在tasks.json文件的label中。
⑤ 注意修改 J-Link json 块的interface/jlink-swd.cfg,具体参考笔者的一篇博客OpenOCD之J-Link下载。

………………ST-Link 调试json块和J-Link 调试json块以此类推去修改。

//调试脚本
{
    "configurations": [
        {
            "name": "Debug with CMSIS-DAP-link",
            "cwd": "${workspaceRoot}",
            // "executable": "./build/F401CCU6_demo.elf",
            "executable": "./build/${workspaceRootFolderName}.elf", //将工程根目录名称作为可执行文件名称
            "request": "launch",
            "type": "cortex-debug",
            "servertype": "openocd",
            "device": "STM32F401CCU6",
            "configFiles": [
                "interface/cmsis-dap.cfg", //D:\Software\embedded_dev_tools\xpack-openocd-0.12.0-3\openocd\scripts\interface
                "target/stm32f4x.cfg" //D:\Software\embedded_dev_tools\xpack-openocd-0.12.0-3\openocd\scripts\target
            ],
            "svdFile": "./STM32F401.svd", //选择寄存器文件
            "liveWatch": { //变量窗口激活和设置每秒的采样次数
                "enabled": true,
                "samplesPerSecond": 4
            },
            "searchDir": [],
            "runToEntryPoint": "main",
            "showDevDebugOutput": "none",
            "preLaunchTask": "flash with cmsis-dap-link"
            //每次调试之前,会先下载程序再调试
        },
        {
            "name": "Debug with ST-link",
            "cwd": "${workspaceRoot}",
            // "executable": "./build/F401CCU6_demo.elf",
            "executable": "./build/${workspaceRootFolderName}.elf", //将工程根目录名称作为可执行文件名称
            "request": "launch",
            "type": "cortex-debug",
            "servertype": "openocd",
            "device": "STM32F401CCU6",
            "configFiles": [
                "interface/stlink.cfg", //D:\Software\embedded_dev_tools\xpack-openocd-0.12.0-3\openocd\scripts\interface
                "target/stm32f4x.cfg" //D:\Software\embedded_dev_tools\xpack-openocd-0.12.0-3\openocd\scripts\target
            ],
            "svdFile": "./STM32F401.svd", //选择寄存器文件
            "liveWatch": { //变量窗口激活和设置每秒的采样次数
                "enabled": true,
                "samplesPerSecond": 4
            },
            "searchDir": [],
            "runToEntryPoint": "main",
            "showDevDebugOutput": "none",
            "preLaunchTask": "flash with stlink" //每次调试之前会先下载再调试
        },
        {
            "name": "Debug with J-link",
            "cwd": "${workspaceRoot}",
            "executable": "./build/${workspaceRootFolderName}.elf",
            "request": "launch",
            "type": "cortex-debug",
            "servertype": "openocd", //要选择的GDB server
            "device": "STM32F401CCU6",
            "configFiles": [
                "interface/jlink-swd.cfg", //D:\Software\embedded_dev_tools\xpack-openocd-0.12.0-3\openocd\scripts\interface
                "target/stm32f4x.cfg" //D:\Software\embedded_dev_tools\xpack-openocd-0.12.0-3\openocd\scripts\target
            ],
            "interface": "swd",
            "svdFile": "./STM32F401.svd",
            "liveWatch": {
                "enabled": true,
                "samplesPerSecond": 4
            },
            "runToEntryPoint": "main",
            "showDevDebugTimestamps": true,
            // "preLaunchTask": "build",
            "showDevDebugOutput": "none",
            "preLaunchTask": "flash with J-link" //每次调试之前会先下载再调试
       }
    ],
    "version": "2.0.0"
}

settings.json

该json文件的主要作用:设置VSCode的一些快捷功能,以及配合【Task Buttons插件】来显示编译、重编译、下载、调试等UI按钮。
各项设置可参考笔者的另外一篇博客:点击this。

需要修改处:
修改"C_Cpp.default.compilerPath": "D:/Software/arm_riscv_develop_tools/arm-none-eabi-gcc/10 2021.10/bin/arm-none-eabi-gcc.exe"的arm-gcc路径,根据您的安装路径并且参考笔者的路径找到复制即可,切记将可执行文件.exe的的名称也复制上。

//UI和功能设置脚本
{
    // 字符集编码格式
    "files.encoding": "utf8",
    // 设置“严格提醒” = enabled/disabled/enabledIfIncludesResolve
    // "C_Cpp.errorSquiggles": "disabled",
    // 启用文件自动保存
    "files.autoSave": "afterDelay",
    // 项目各文件的图标主题
    "workbench.iconTheme": "office-material-icon-theme",
    // 吸血鬼主题
    "workbench.colorTheme": "Dracula Theme",
    //粘贴时格式化代码
    "editor.formatOnPaste": true,
    //保存时格式化代码
    "editor.formatOnSave": true,
    //设置字体的大小,最小值能设置为6
    "editor.fontSize": 16,
    //设置字体的粗细
    "editor.fontWeight": "500",
    //设置字体的样式
    // "terminal.integrated.fontFamily":"Courier New",
    //使用Ctrl+滚轮缩放编辑区的字体大小
    "editor.mouseWheelZoom": true,
    //使用Ctrl+滚轮缩放终端Terminal的字体大小
    "terminal.integrated.mouseWheelZoom": true,
    //设置为false,这样打开新的文件时,不会自动关闭旧的文件
    "workbench.editor.enablePreview": false,
    
    "security.workspace.trust.enabled": false,
    "VsCodeTaskButtons.showCounter": true,
    "VsCodeTaskButtons.tasks": [
        {
            "label": "$(tools) Build",
            "task": "build",
            "tooltip": "🛠️ build"
        },
        {
            "label": "$(notebook-delete-cell) Clean",
            "task": "clean",
            "tooltip": "🧹 clean"
        },
        {
            "label": "$(notebook-delete-cell) $(tools) Re-bulid", //"$(notebook-delete-cell) & $(tools)",
            "task": "rebuild",
            "tooltip": "🛠️ rebuild" // "🧹 & 🛠️ rebuild"
        },
        {
            "label": "$(zap) Download",
            // "task": "flash",
            "tasks": [
                {
                    "label": "⚓ CMSIS-dap-link", //icon copied from https://emojipedia.org/
                    "task": "flash with cmsis-dap-link"
                },
                {
                    "label": "⤵️ ST-link", //icon copied from https://emojipedia.org/
                    "task": "flash with ST-link"
                },
                {
                    "label": "🚀 J-link", //icon copied from https://emojipedia.org/
                    "task": "flash with J-link"
                }
            ],
            "tooltip": "⚡ Download"
        }
    ],
    // "terminal.integrated.defaultProfile.windows": "Git Bash",
    "C_Cpp.default.cppStandard": "c++17",
    "C_Cpp.default.intelliSenseMode": "gcc-arm",
    "C_Cpp.default.cStandard": "c99",
    "C_Cpp.default.compilerPath": "D:/Software/arm_riscv_develop_tools/arm-none-eabi-gcc/10 2021.10/bin/arm-none-eabi-gcc.exe"
}

c_cpp_properties.json

该json文件的主要作用:选择代码中的宏定义展开defines,以及MCU的gcc编译路径compilerPath、MCU的编译选项参数compilerArgs(或者说MCU的硬件参数)。

需要修改处:
① 修改"name": "STM32F401CCU6"的名字,根据工程文件和个人偏好修改。
② 修改
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE",
"USE_STDPERIPH_DRIVER",
"STM32F401xx"
]
"USE_STDPERIPH_DRIVER",
"STM32F401xx",根据不同MCU型号修改。
③ 修改"compilerPath": "D:/Software/embedded_dev_tools/xpack-arm-none-eabi-gcc-13.3.1-1.1/bin/arm-none-eabi-gcc.exe"的arm-gcc路径
④ 修改 "compilerArgs": [
"-mcpu=cortex-m4",
"-mthumb",
"-mfpu=fpv4-sp-d16",
"-mfloat-abi=hard"
]
编译选项参数,根据不同MCU型号修改。

{
    "configurations": [
        {
            "name": "STM32F401CCU6",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE",
                "USE_STDPERIPH_DRIVER",
                "STM32F401xx"
            ],
            "compilerPath": "D:/Software/embedded_dev_tools/xpack-arm-none-eabi-gcc-13.3.1-1.1/bin/arm-none-eabi-gcc.exe",
            "compilerArgs": [
                "-mcpu=cortex-m4",
                "-mthumb",
                "-mfpu=fpv4-sp-d16",
                "-mfloat-abi=hard"
            ],
            "cStandard": "c99",
            "cppStandard": "c++17",
            "intelliSenseMode": "gcc-arm"
        }
    ],
    "version": 4
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2254359.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot该怎么使用Neo4j - 优化篇

文章目录 前言实体工具使用 前言 上一篇中,我们的Cypher都用的是字符串,字符串拼接简单,但存在写错的风险,对于一些比较懒的开发者,甚至觉得之间写字符串还更自在快速,也确实,但如果在后期需要…

【Calibre-Web】Calibre-Web服务器安装详细步骤(个人搭建自用的电子书网站,docker-compose安装)

文章目录 一、Calibre-Web和Calibre的区别是什么?使用场景分别是什么?二、服务器安装docker和docker-compose三、服务器安装Calibre-Web步骤1、安装完成后的目录结构2、安装步骤3、初始配置4、启动上传 四、安装Calibre五、docker-compose常用命令 最近想…

easyexcel 导出日期格式化

1.旧版本 在新的版本中formate已经被打上废弃标记。那么不推荐使用这种方式。 2.推荐方式 推荐使用另外一种方式【 Converter 】代码如下,例如需要格式化到毫秒【yyyy-MM-dd HH:mm:ss SSS】级别 创建一个公共Converter import com.alibaba.excel.converters.Conv…

ABAP - 系统集成之SAP的数据同步到OA(泛微E9)服务器数据库

需求背景 项目经理说每次OA下单都需要调用一次SAP的接口获取数据,导致效率太慢了,能否把SAP的数据保存到OA的数据库表里,这样OA可以直接从数据库表里获取数据效率快很多。思来想去,提供了两个方案。 在集群SAP节点下增加一个SQL S…

40分钟学 Go 语言高并发:【实战】分布式缓存系统

【实战课程】分布式缓存系统 一、整体架构设计 首先,让我们通过架构图了解分布式缓存系统的整体设计: 核心组件 组件名称功能描述技术选型负载均衡层请求分发、节点选择一致性哈希缓存节点数据存储、过期处理内存存储 持久化同步机制节点间数据同步…

w~视觉~合集27

我自己的原文哦~ https://blog.51cto.com/whaosoft/12715639 #视频AIGC~论文 1、Pix2Video: Video Editing using Image Diffusion 基于大规模图像库训练的图像扩散模型已成为质量和多样性方面最为通用的图像生成模型。它们支持反转真实图像和条件生成(例如&…

MYSQL中的增删改查操作(如果想知道MYSQL中有关增删改查操作的知识,那么只看这一篇就足够了!)

前言:在 MySQL 中,增、删、改、查(CRUD)操作是基本的数据库操作,增操作(INSERT)用于插入数据,删操作(DELETE)用于删除数据,改操作(UPD…

Ansible的yum和saltstack的哪个功能相似

Ansible的yum和saltstack的哪个功能相似 在 Ansible 和 SaltStack 中,Ansible 的 yum 模块 和 SaltStack 的 pkg 模块 功能相似。它们都用于管理软件包,支持安装、升级、删除和查询等操作。 Ansible 的 yum 模块 用途: 专门用于基于 Red Hat …

在做题中学习(76):颜色分类

解法:三指针 思路:用三个指针,把数组划分为三个区域: for循环遍历数组,i遍历数组,left是0区间的末尾,right是2区间的开头,0 1 2区间成功被划分 而上面的图画是最终实现的图样&…

Java版-速通数据结构-树基础知识

现在面试问mysql,红黑树好像都是必备问题了。动不动就让手写红黑树或者简单介绍下红黑树。然而,我们如果直接去看红黑树,可能会一下子蒙了。在看红黑树之前,需要先了解下树的基础知识,从简单到复杂,看看红黑树是在什么…

浙江工业大学《2024年828自动控制原理真题》 (完整版)

本文内容,全部选自自动化考研联盟的:《浙江工业大学828自控考研资料》的真题篇。后续会持续更新更多学校,更多年份的真题,记得关注哦~ 目录 2024年真题 Part1:2024年完整版真题 2024年真题

【计算机网络】实验11:边界网关协议BGP

实验11 边界网关协议BGP 一、实验目的 本次实验旨在验证边界网关协议(BGP)的实际作用,并深入学习在路由器上配置和使用BGP协议的方法。通过实验,我将探索BGP在不同自治系统之间的路由选择和信息交换的功能,理解其在互…

微信小程序全屏显示地图

微信小程序在界面上显示地图&#xff0c;只需要用map标签 <map longitude"经度度数" latitude"纬度度数"></map>例如北京的经纬度为&#xff1a;116.407004,39.904595 <map class"bgMap" longitude"116.407004" lati…

InfluxDB 集成 Grafana

将InfluxDB集成到Grafana进行详细配置通常包括以下几个步骤&#xff1a;安装与配置InfluxDB、安装与配置Grafana、在Grafana中添加InfluxDB数据源以及创建和配置仪表板。以下是一个详细的配置指南&#xff1a; 一、安装与配置InfluxDB 下载与安装&#xff1a; 从InfluxDB的官…

【AI系统】ESPNet 系列

ESPNet 系列 本文将会介绍 ESPNet 系列&#xff0c;该网络主要应用在高分辨率图像下的语义分割&#xff0c;在计算内存占用、功耗方面都非常高效&#xff0c;重点介绍一种高效的空间金字塔卷积模块&#xff08;ESP Module&#xff09;&#xff1b;而在 ESPNet V2 上则是会更进…

【Axios】如何在Vue中使用Axios请求拦截器

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

w~深度学习~合集1

我自己的原文哦~ https://blog.51cto.com/whaosoft/12663254 #Motion Plan 代码 github.com/liangwq/robot_motion_planing 轨迹约束中的软硬约束 前面的几篇文章已经介绍了&#xff0c;轨迹约束的本质就是在做带约束的轨迹拟合。输入就是waypoint点list&#xff0c;约束…

大语言模型应用开发框架LangChain

大语言模型应用开发框架LangChain 一、LangChain项目介绍1、简介2、LangChain的价值3、实战演练 二、LangChain提示词大语言模型应用1、简介1.1、提示词模板化的优点1.2、提示词模板LLM 的应用1.3、Prompt 2、应用实战2.1、PromptTemplate LLM2.2、PromptTemplate LLM Outpu…

公众号文章标题的重要性

标题&#xff0c;不仅仅是一个简单的标题&#xff0c;它更是吸引读者眼球的“颜值担当”。 信息爆炸的今天&#xff0c;一个好的标题就是打开流量之门的金钥匙。那么&#xff0c;如何衡量一个标题的“颜值”呢&#xff1f;我们可以从两个维度来看&#xff1a;打开率和传播率。…

116. UE5 GAS RPG 实现击杀掉落战利品功能

这一篇&#xff0c;我们实现敌人被击败后&#xff0c;掉落战利品的功能。首先&#xff0c;我们将创建一个新的结构体&#xff0c;用于定义掉落体的内容&#xff0c;方便我们设置掉落物。然后&#xff0c;我们实现敌人死亡时的掉落函数&#xff0c;并在蓝图里实现对应的逻辑&…