【STM32 x VScode】如何在vscode上编写stm32程序(固件库函数)

2023-11-15

        本人使用keil5也算比较长时间了,但是keil5有个比较大的缺陷就是补全速度太慢,老是用的不太顺手,于是就想着使用万能的vscode来代替一下keil5的编写程序功能。

        注意:这里使用vscode并不是说可以把keil5给卸载了,它还是要借助keil5来工作的,只是我们不用打开keil5而已。

目录

一、软件安装

二、安装插件

1、C/C++

2、Keil Assistant

3、Bracket Pair Colorizer

三、使用Keil Assistant插件

1、设置keil5路径

​编辑

2、导入keil5工程

四、配置环境

1、解决中文乱码

方法一:(较为麻烦,不推荐)

方法二:(一键全部解决,推荐)

2、添加头文件路径

五、程序下载 


一、软件安装

        Download Visual Studio Code - Mac, Linux, Windows

二、安装插件

1、C/C++

        C/C++是C语言编程的必需插件。

2、Keil Assistant

        Keil Assistant是能够让vscode代替keil5编程的最重要的插件。

3、Bracket Pair Colorizer

        Bracket Pair Colorizer是一个改变括号颜色和连接线颜色的插件,增强编程体验。(可装可不装,装了页面更好看点)

三、使用Keil Assistant插件

1、设置keil5路径

        点击扩展设置。

        有两个填写路径的地方,上面那个是keil4的,下面才是keil5的,填写的时候不要填错了。

2、导入keil5工程

        点击资源管理器,会发现下面有个叫做 KEIL UVISION PROJECT 的东西,鼠标移动到上面后,右边就会出现如图所示的符号,点进去找到你想导入的 .uvprojx keil5工程文件,导入即可。

四、配置环境

         导入工程后打开里面的文件,是不是会发现一堆的红色波浪线以及蓝色波浪线?比如这样。这是因为vscode没有设置头文件路径导致的,就像keil5也要指定头文件那样。下面就是设置这些东西。

        首先将导入进vscode的keil5工程的外面整个文件都导入进工作区中,方便下一步的操作。

1、解决中文乱码

方法一:(较为麻烦,不推荐)

方法二:(一键全部解决,推荐)

        在工程文件夹下创建一个 .vscode 文件夹,然后在里面自己手动创建一个 settings.json 文件,在里面添加下面的内容。

        配置这个后,vscode就会根据当前文件的内容自己自动猜测这是什么编码格式,从而转换成所对应的格式,就不用自己手动的一个个的调整编码格式。

{
    "files.autoGuessEncoding": true
}

 

2、添加头文件路径

        在前面创建好的 .vscode 下再手动创建一个 c_cpp_properties.json 文件,这个文件就是用来指定头文件路径的,同时还可以事先声明和指定编译器等功能。

        然后往里面添加下面的内容。

{
    "configurations": [
        {
            "name": "stm32",
            "includePath": [
                // 自己根据情况添加头文件路径
                "${workspaceFolder}/User",
                 
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "__CC_ARM",
                "STM32F10X_HD", 
                "USE_STDPERIPH_DRIVER"
            ],
            "browse": {
                "path": [
                    // 这里的跟前面“includePath”保持一致即可
                    "${workspaceFolder}/User",
                ],
                "limitSymbolsToIncludedHeaders": true,
                "databaseFilename": ""
            },
            "intelliSenseMode": "gcc-x86"
        }
    ],
    "version": 4
}

        includePath表示的是指定的头文件路径,直接将keil5所指定的头文件路径照搬即可。${workspaceFolder}变量的内容是该工程文件所处的绝对路径,在这里就是C:\Users\Administrator\Desktop\FreeRTOS测试

        defines表示的是要事先定义的内容,使用keil5的都知道,在创建keil5工程的时候,都要声明一两个定义,将那些声明也照搬过来即可。

        声明"__CC_ARM"是为了不让 uint8_t、uint16_t、uint32_t出现警告: 变量 "uint32_t" 不是类型名。

         browse的作用是为了获取path路径下的所有声明,为了保险起见,也要将其设置,内容就跟includePath即可,因为定义的内容都是在头文件定义的。

五、程序下载 

        使用vscode插件下载程序到开发板的时候,它选用的下载器是根据keil5上设置的来进行匹配的,所以在下载之前,要确保keil5上设置的下载器是你所使用的那个。

        至此,就可以使用vscode代替stm32编写、编译和下载了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【STM32 x VScode】如何在vscode上编写stm32程序(固件库函数) 的相关文章

  • 机器学习之加州房价预测(一)

    加州房价预测实例 任务 基于加州房价数据集建立一个预测模型 使之可以在给定的条件下 预测加州任何地点的房价的中位数 一 定义问题 1 公司要如何利用我的模型 模型的输出将作为另一个机器学习算法的输入 该算法在综合考虑其他因素之后 决定是否值
  • 推荐一本书——《The Scientist and Engineer's Guide to Digital Signal Processing》

    突然在国外的网站上看到一本非常好的数字信号处理的书籍 讲解简介明白 清晰易懂 书籍为免费电子版 地址为 http www dspguide com pdfbook htm
  • day05-编程题

    知识点 方法 题目1 训练 定义一个方法 该方法能够找出两个小数中的较小值并返回 在主方法中调用方法进行测试 训练提示 根据方法的功能描述 方法的参数应该是两个小数 要返回两个小数的较小值 所以返回值类型也是小数类型 解题方案 操作步骤 定
  • QT中学习Opengl---(GLSL简单的使用)

    前言 本文的代码是 LearnOpenGL 中对应代码 这里提供学习 大家喜欢的可去官方网站去看看 https learnopengl cn readthedocs io zh latest https learnopengl cn rea

随机推荐

  • C++的模板特例化template<>

    C 的模板特例化是指当我们定义了一个通用的模板类或模板函数时 如果特定输入参数类型或值需要进行不同的处理 我们可以为这些特定情况提供单独的实现 这就是模板特例化 下面我们将详细介绍C 的模板特例化 假设我们有以下的一个模板类 templat
  • java自学笔记12:java中的集合框架(下)List

    一 学生选课 判断List中课程是否存在 思考 在课程序列中 如何判断是否包含某门或者某几门课程 如果课程序列包含某门课程 如何判断该课程的索引位置 在学生映射表中 如何判断是否包含某个学生ID 又该如何判断是否包含某个学生对象 如果想把课
  • 解读随着教育改革的深入steam教育

    STEAM鼓励孩子勇于创新和探索 打破思维的第三面墙 自古以来 大家都是教育孩子纠正错误 而STEAM可以让孩子们通过与小组实践学习 探索讨论 交流思想和相互帮助 来发现自己的缺点和不足 通过团队合作来弥补自己的劣势 可以说 STEAM是一
  • Pandas 返回Nan值的行索

    Pandas 返回Nan值的行索 通过np where函数查找 gt gt gt df Out 1 0 1 0 0 450319 0 062595 1 0 673058 0 156073 2 0 871179 0 118575 3 0 59
  • Mysql大小写敏感设置(Docker版)

    应用场景 本人由于项目前期使用windows版国产数据库开发 默认就是大小写不敏感的 加上代码规范约束不够 导致代码中SQL大小写不统一 后期有需求要更换数据库 改用Mysql 因为在Linux系统中Mysql默认是大小写敏感的 所以需要对
  • java多线程同步的实现方式

    java多线程同步的实现方式 1 什么时候会出现线程安全问题 2 使用synchronized关键字 2 1修饰方法 2 2 修饰代码块 3 使用重入锁实现线程同步 4 wait与notify方法 5 使用原子变量实现线程同步 关于vola
  • vmospro启动黑屏_VMOS Pro,安卓手机上的虚拟机

    应用名称 VMOS Pro 应用包名 com vmos pro 应用版本 1 1 26 应用大小 28 0MB 适用平台 Android 5 1 版本说明 1 优化电量同步问题 2 优化游戏断触问题 3 设备信息修改加入随机按钮 4 增加横
  • Docker导入导出镜像(镜像迁移)

    打包现有镜像 docker images 命令查看已有镜像列表 docker save命令打包镜像 docker save使用说明 o 选项 用来指定输出文件 将alpine ffmpeg 3 15打包 docker save o alpi
  • Linux定时任务

    Linux定时任务 at命令 语法 at 选项 日期时间 选项 f 指定包含具体指令的任务文件 q 指定新任务的队列名称 l 显示待执行任务的列表 d 删除指定的待执行任务 m 任务执行完成后向用户发送 E mail 日期时间 指定任务执行
  • 通过XSD文件生成JAVA对象

    c Program Files Java jdk1 8 0 101 bin gt xjc exe p io xsd xml encoding UTF 8 xsdTOxml MyField xsd d xsdTOxml Picked up J
  • 如何在uni中实现一个路由守卫

    在uni app中实现路由守卫 可以使用全局的router beforeEach方法来拦截路由导航 以下是一个简单的示例 展示了如何在uni app中实现路由守卫 在上述代码中 我们通过监听beforeRouterEnter事件来实现路由守
  • java.util.LinkedHashMap cannot be cast to Entity

    前后端数据传输转换问题 java util LinkedHashMap cannot be cast to Entity 问题场景 项目前端使用json传输方式 后台接收后对象变成了LinkedHashMap ResponseBody Re
  • 方向包围盒OBB(oriented bounding box)

    制造几何仿真中的碰撞检测通常视为针对刚体对象间的碰撞检测 这样的话可以把非刚体即软体的建模和变形算法对碰撞检测的影响减少到最小 常见成熟的基于包围盒的碰撞检测 box intersection test 算法如 1 沿坐标轴的包围盒AABB
  • Unity3D关于ComputeShader

    由于最近在实验中需要大量循环计算产生网格 所以可能需要GPU的加速 对于compute shader学习下 可能对于做GPU加速有帮助 以下补充修改了转载文章的内容 原文链接 https blog csdn net csharpupdown
  • HTML怎么建立两行四列的li,关于CSS如何实现多行多列布局的方法

    这篇文章主要介绍了CSS实现多行多列的布局的实例代码 需要的朋友可以参考下 1 两列多行 HTML box1 实现两列多行布局 111 222 333 CSS box1 width 500px background EEEEEE box1
  • fortran求解雷诺方程_方程的计算机处理96(5)_C++vs

    计算机语言运用 数值计算9 方程的计算机处理96 5 C vs 计算机 电子线路组成的计算机器 人与计算机则是通过计算机语言 符号系统说给计算机听而交流 计算机语言有低级语言 机器语言 汇编 高级语言 C C C VB PASCAL LIS
  • 使用yarn搭建Vue,ElementUI,axios环境

    1 搭建vue ElementUI axios环境 1 1 安装yarn 安装yarn npm install g yarn 查看是否安装版本 yarn version yarn切换为国内源 yarn config set registry
  • OSI以及TCP参考模型

    一 网络发展历史 1 1946年第一代计算机网络是以单个计算机为中心的远程联机系统 2 1970年第二代计算机网络是以多个主机通过通信线路互联起来 3 1980年第三代计算机网络是以IOS 国际标准化组织 提出的OSI参考模型为中心的互联网
  • 图像匹配几种常见算法与实践

    奇技 指南 本文主要内容 1 模版匹配 2 特征匹配 3 深度学习去找目标 图像匹配的应用及背景 图像匹配是指通过一定的匹配算法在两幅或多幅图像之间识别同名点 应用 遥感 制图更新 计算机视觉应用程序 医疗用图像注册 图像匹配主要可分为以灰
  • 【STM32 x VScode】如何在vscode上编写stm32程序(固件库函数)

    本人使用keil5也算比较长时间了 但是keil5有个比较大的缺陷就是补全速度太慢 老是用的不太顺手 于是就想着使用万能的vscode来代替一下keil5的编写程序功能 注意 这里使用vscode并不是说可以把keil5给卸载了 它还是要借