VSCode下EIDE插件开发STM32

news2025/1/24 22:13:12

VSCode下STM32开发环境搭建

本STM32教程使用vscode的EIDE插件的开发环境,完全免费,有管理代码文件的界面,不需要其它IDE
视频教程见本人的

VSCode+EIDE开发STM32

安装EIDE插件

Embedded IDE 嵌入式IDE

这个插件可以帮我们管理代码文件,配置工具链(什么是工具链见下文)等。

这里先安装此插件,此插件使用,工具链安装等,后面配合示例工程讲解。
在这里插入图片描述在这里插入图片描述

EIDE网站,可以查看此插件的更新日志。

这是什么? | Embedded IDE For VSCode

什么是工具链

简单的说就是把源文件(也就是xx.c xxx.cpp等)变成可执行文件的东西。

在这里插入图片描述

开发不同的东西需要不同的工具链,

比如在windows上,源文件最后会变成.exe
用Visual Studio写.cpp用的就是MSVC 编译器工具集(也称为工具链或“生成工具”)
用VSCode写.cpp,教程都会让你下载mingw

而开发单片机,也需要对应其内核的工具链。

stm32是arm的内核,所以需要arm相关的工具链。
keil就是armcc v5 v6的工具链(收费)。
本教程使用的是免费gnu arm embedded toolchainGNU Arm 嵌入式工具链

这是它的网址Arm GNU Toolchain Downloads – Arm Developer,如果你想可以去下载最新版,我这里用EIDE安装。
在这里插入图片描述

使用EIDE安装gcc工具链

点击安装实用工具,安装gcc_arm工具链

在这里插入图片描述

它会开始下载安装工具链

在这里插入图片描述

如果使用EIDE安装工具链,它的安装路径如下
C:\Users\用户名.eide\tools
在这里插入图片描述

假如你本来就有,可以直接设置安装位置。

比如你自己下载了工具链,或者安装了stm32的工具包(STM32 VS Code Extension 插件让你安装的那个),或者安装了STM32CubeIDE,就直接找到gcc_arm工具链填入其路径就行。

点击设置工具链,设置 GNU Arm Embedded Toolchain
在这里插入图片描述

示例工程

创建一个示例工程,进一步说明。

示例工程实现LED闪烁。

用CubeMX生成工程代码

打开stm32cubeMX,打开选择器,选择你开发板对应的芯片型号。
进入配置界面,设置LED对应引脚为输出模式,通常是PC13因为这个引脚没有太多其它功能。
顺便设置个标签,LED0,便于后面写代码。
工程名称就叫demo1吧。
只复制必要的库文件,为每个外设生成一对‘.c/.h’文件初始化外设等不再赘述。
在这里插入图片描述

工具链/IDE选择
这里的STM32CubeIDE CMake Makefile 使用的都是arm-gcc的工具链!
不过CMake Makefile产生的工程需要自己配置项目资源,CubeIDE产生的工程导入即可。
这里先选择CMake或者Makefile自己配置一下项目,STM32CubeIDE导入的教程见下文。

在这里插入图片描述

生成的工程文件夹
在这里插入图片描述

EIDE插件的使用

新建空项目

在这里插入图片描述

STM32选择Cortex-M项目,项目名称建议和之前的工程名称保持一致。

在这里插入图片描述
在这里插入图片描述

项目保存位置为工程文件夹的位置(而不是工程文件夹内)

在这里插入图片描述

项目文件夹已经存在的警告选是

在这里插入图片描述

切换至工作区
在这里插入图片描述

VSCode切换到了工作区

在这里插入图片描述

编译工程

添加项目资源
添加.c文件

添加普通文件夹,它具有递归查找能力,能往下查找到你的代码文件。

在这里插入图片描述

添加包含.c代码的文件夹。

在这里插入图片描述
.c文件添加完毕
在这里插入图片描述

添加启动文件startup.s

项目资源添加一个虚拟文件夹
在这里插入图片描述

添加启动文件startup.s,选择文件的时候选择any就可以看到所有文件。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
启动文件.s添加完毕
在这里插入图片描述

顺便说一下
普通文件夹要在工程文件夹下面添加。
当然如果你愿意,可以全部使用虚拟文件夹去添加所有源文件。
只要将工程涉及到源文件全部添加了就可以。

构建配置
选择CPU类型

选择CPU类型,根据你的单片机选择,STM32F4选M4,F1选M3

在这里插入图片描述

设置链接脚本路径

设置链接脚本路径,就是CubeMX生成的flash.ld文件。
在这里插入图片描述

它就在工程文件夹那层里,把它文件名填上去就行
在这里插入图片描述

项目属性

就是,头文件路径、库文件路径、要预处理的宏定义这些。

如果搞不清楚CubeMX生成的代码的相关配置,可以查看CubeMX生成的CMake或makefile。

在这里插入图片描述

这里说一下,并没有使用CMake,打开它只是为了确认要填入的信息。

添加头文件目录

就是所有.h所在的目录。
在这里插入图片描述
包含目录添加完毕
在这里插入图片描述

添加预处理宏定义

代码文件里有类似这样的代码,这些编译预处理命令需要添加预处理宏定义配合编译。

#if defined (USE_HAL_DRIVER)//如果定义了它
//...
//做什么什么
//...
#endif /* USE_HAL_DRIVER */

在这里插入图片描述
预处理宏定义添加完毕
在这里插入图片描述

当然,如果你自己建立了代码文件夹也需要添加相关的配置。

编译

都配置好了,然后就能编译了

随便打开一个代码文件,右上角既可以找到编译。
在这里插入图片描述

编译完毕,没有错误没有警告。

在这里插入图片描述

生成的可执行文件(待下载到单片机上)
在这里插入图片描述

如何烧录(下载)

安装下载器对应的工具。

一般大家搞stm32都是用stlink因为便宜,如果是jlink就下载jlink的。

在这里插入图片描述

安装后它也会安装STLINk的驱动等。
在这里插入图片描述

烧录配置,选择烧录工具

在这里插入图片描述

添加工程代码

添加让LED0闪烁的代码,并重新编译。

    HAL_GPIO_WritePin(LED0_GPIO_Port, LED0_Pin, GPIO_PIN_SET);
    HAL_Delay(500);
    HAL_GPIO_WritePin(LED0_GPIO_Port, LED0_Pin, GPIO_PIN_RESET);
    HAL_Delay(500);
烧录

点击右上角的下载按钮即可下载。

在这里插入图片描述

提示:请正确连接你的下载器和开发板。

烧录完毕

在这里插入图片描述

LED0已经开始闪烁。

在这里插入图片描述

调试

相关解释请参考

cortex-debug 用法 - 博客 - Embedded IDE Forum

安装调试用的插件和工具
安装Cortex Debug

安装VSCode插件 Cortex Debug,调试需要。

在这里插入图片描述

安装OpenOCD

OpenOCD是一个免费的开源软件,用于调试和编程嵌入式设备。

可以直接在EIDE这里下载。

在这里插入图片描述

假如你有OpenOCD就不用重新下载了,之后写路径的时候改一下就行。
比如你自己下载了OpenOCD,或者安装了stm32的工具包(STM32 VS Code Extension 插件让你安装的那个),就直接找到填入其路径就行。
在这里插入图片描述

如果使用EIED安装OpenOCD,它的安装位置如下。
C:\Users\用户名.eide\tools
在这里插入图片描述

创建launch.json文件

launch.json 是 Visual Studio Code 中用于配置调试器的文件。
openOCD路径在EIDE插件中设置好后,EIDE就可以帮助我们创建launch.json文件。

launch.json的创建

右键点击你的项目,生成调试器配置模板,进行选择。
在这里插入图片描述
选择接口,根据你的下载器选择。
在这里插入图片描述
这其实是选择下载器对应的.cfg配置文件。
顺便说一下stlink .cfg文件路径如下。
(openOCD安装位置)openocd_7a1adfbec_mingw32\share\openocd\scripts\interface
在这里插入图片描述
选择目标,根据你的芯片选择。
在这里插入图片描述
这其实是选择单片机对应的.cfg配置文件。
stm32 .cfg文件路径如下,使用哪个根据你的芯片修改。
(openOCD安装位置)\openocd_7a1adfbec_mingw32\share\openocd\scripts\interface\target
在这里插入图片描述

点击新建,即可完成创建。
在这里插入图片描述

生成的launch.json文件
{
    "version": "0.2.0",
    "configurations": [
        {
            "cwd": "${workspaceRoot}",
            "type": "cortex-debug",
            "request": "launch",
            "name": "Debug: OpenOCD",
            "servertype": "openocd",

            //.elf可执行文件路径,编译后生成
            "executable": "build/Debug/demo1.elf",
            "runToEntryPoint": "main",
            "configFiles": [
                //使用ST-LINK,stlink版本根据你的下载器修改
                "interface/stlink-v2-1.cfg",
                //使用stm32f?,stm32f?根据你的芯片修改
                "target/stm32f4x.cfg"
            ],
            "toolchainPrefix": "arm-none-eabi"
        }
    ]
}

顺便说一下,.elf是调试要用的可执行文件。
路径在build\Debug下。
在这里插入图片描述

开始调试

搞好之后保存launch.json文件,选择设置好的启动项Debug with OpenOCD,加入断点,即可开始调试

在这里插入图片描述

成功
在这里插入图片描述
可以在左面查看变量,添加监视等。

导入CubeIDE工程

CubeIDE实际上也是用的arm-gcc的工具链。

我这里用cubeMX生成一个来说明。

创建一个CubeIDE工程

在这里插入图片描述

导入

导入空的嵌入式gcc项目
在这里插入图片描述

项目资源,项目属性等已经自动添加好了。

构建配置仍需手动修改。

在这里插入图片描述

注意生成的flash.ld文件中

  .ARM.extab (READONLY) : /* The "READONLY" keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
  {
    . = ALIGN(4);
    *(.ARM.extab* .gnu.linkonce.armextab.*)
    . = ALIGN(4);
  } >FLASH

它有个关键词需要gcc11以上的版本,目前(2025年1月20日)EIDE下载到的是10!可以删除相关内容,或者手动更新工具链

之后即可正常编译。
在这里插入图片描述

烧录、调试等完全一致,见上文。

后记

使用VSCode EIDE开发,不需要其它IDE。
使用arm-gcc完全免费

没有这个EIDE插件确实能开发,但是要手动配置工具链,每次编译代码都需要在命令窗口中输入相应的指令,很麻烦。

按理说,找到对应内核的工具链就能开发相应的单片机。
EIDE这个插件能设置的工具链挺多的。
在这里插入图片描述

CMake现在在C/C++的项目中用的越来越多,建议了解一下。
STM32 VS Code Extension 插件用的是CMake。但它没有图形化的配置界面,比如加个文件,得自己写路径,比较麻烦。

参考资料

抛弃keil?VScode开发stm32完整教程_哔哩哔哩_bilibili

VSCode+EIDE开发CH32V系列RISC-V MCU - Wahahahehehe - 博客园

这是什么? | Embedded IDE For VSCode

cortex-debug 用法 - Blog - Embedded IDE Forum

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

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

相关文章

HTTP 配置与应用(局域网)

想做一个自己学习的有关的csdn账号,努力奋斗......会更新我计算机网络实验课程的所有内容,还有其他的学习知识^_^,为自己巩固一下所学知识,下次更新HTTP 配置与应用(不同网段)。 我是一个萌新小白&#xf…

LiteFlow Spring boot使用方式

文章目录 概述LiteFlow框架的优势规则调用逻辑规则组件定义组件内数据获取通过 DefaultContext自定义上下文 通过 组件规则定义数据通过预先传入数据 liteflow 使用 概述 在每个公司的系统中,总有一些拥有复杂业务逻辑的系统,这些系统承载着核心业务逻…

mysql学习笔记-数据库的设计规范

1、范式简介 在关系型数据库中,关于数据表设计的基本原则、规则就称为范式。 1.1键和相关属性的概念 超键:能唯一标识元组的属性集叫做超键。 候选键:如果超键不包括多余的属性,那么这个超键就是候选键 主键:用户可以从候选键中选择一个作为主键。 外…

计算机网络 (55)流失存储音频/视频

一、定义与特点 定义:流式存储音频/视频是指经过压缩并存储在服务器上的多媒体文件,客户端可以通过互联网边下载边播放这些文件,也称为音频/视频点播。 特点: 边下载边播放:用户无需等待整个文件下载完成即可开始播放…

60,【1】BUUCF web [RCTF2015]EasySQL1

先查看源码 1&#xff0c;changepwd&#xff08;修改密码&#xff09; <?php // 开启会话&#xff0c;以便使用会话变量 session_start();// 设置页面的内容类型为 HTML 并使用 UTF-8 编码 header("Content-Type: text/html; charsetUTF-8");// 引入配置文件&…

我谈概率论与数理统计的知识体系

学习概率统计二十多年后&#xff0c;在廖老师的指导下&#xff0c;厘清了各章之间的关系。本来就是一条线两个分支&#xff0c;脉络很清晰。 分支一&#xff1a;从随机现象到样本空间到随机事件再到概率。 从随机事件到随机变量&#xff1a;为了进行定量的数学处理&#xff0…

基于海思soc的智能产品开发(视频的后续开发)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面我们讨论了camera&#xff0c;也讨论了屏幕驱动&#xff0c;这些都是基础的部分。关键是&#xff0c;我们拿到了这些视频数据之后&#xff0c;…

Python的进程和线程

ref 讲个故事先 这就像一个舞台&#xff08;CPU核心&#xff09;​&#xff0c; 要供多个剧组演出多个剧目&#xff08;进程&#xff09;​&#xff0c; 剧目中有多个各自独立的角色&#xff08;线程&#xff09;​&#xff0c;有跑龙套的&#xff0c;有主角&#xff0c;第一…

Xcode :给模拟器 创建桌面 快捷方式

给模拟器 创建 桌面 快捷方式&#xff1a; 1、找到xcode程序&#xff1b; 2、右击鼠标点击”显示包内容“菜单&#xff1b; 3、打开contents/developer/applications/ 找到Simulator工具图标&#xff0c;右击鼠标点击”制作替身“菜单&#xff1b; 4、将替身拖到桌面上。 …

STM32项目分享:智能厨房安全检测系统

目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 PCB图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片&#xff1a; 哔哩哔哩视频链接&#xff1a; STM32智能厨房安全检测系统 &#xff08;资料分…

STM32_SD卡的SDIO通信_基础读写

本篇将使用CubeMXKeil, 创建一个SD卡读写的工程。 目录 一、SD卡要点速读 二、SDIO要点速读 三、SD卡座接线原理图 四、CubeMX新建工程 五、CubeMX 生成 SD卡的SDIO通信部分 六、Keil 编辑工程代码 七、实验效果 实现效果&#xff0c;如下图&#xff1a; 一、SD卡 速读…

ubuntu20.04安装使用direct_visual_lidar_calibration标定雷达和相机

官方链接GitHub - koide3/direct_visual_lidar_calibration: A toolbox for target-less LiDAR-camera calibration [ROS1/ROS2] 官方安装方式 Installation - direct_visual_lidar_calibration 安装依赖 sudo apt install libomp-dev libboost-all-dev libglm-dev libglfw…

华为EC6110T-海思Hi3798MV310_安卓9.0_通刷-强刷固件包

华为EC6110T-海思Hi3798MV310_安卓9.0_通刷-强刷固件包 刷机教程说明&#xff1a; 适用机型&#xff1a;华为EC6110-T、华为EC6110-U、华为EC6110-M 破解总分为两个部分&#xff1a;拆机短接破解&#xff08;保留IPTV&#xff09;和OTT卡刷&#xff08;不保留IPTV&#xff09…

Markdown Viewer 浏览器, vscode

使用VS Code插件打造完美的MarkDown编辑器&#xff08;插件安装、插件配置、markdown语法&#xff09;_vscode markdown-CSDN博客 右键 .md 文件&#xff0c;选择打开 方式 &#xff08;安装一些markdown的插件) vscode如何预览markdown文件 | Fromidea GitCode - 全球开发者…

09_异步加载_单例模式_常量类配置_不可销毁

1.首先在 资源加载服务层ResSvc.cs中添加 自定义异步加载函数 using UnityEngine; using UnityEngine.SceneManagement; //异步加载 命名空间 //功能 : 资源加载服务 public class ResSvc : MonoBehaviour{public void InitSvc(){Debug.Log("Init ResSvc...");}//自定…

概率密度函数(PDF)分布函数(CDF)——直方图累积直方图——直方图规定化的数学基础

对于连续型随机变量&#xff0c;分布函数&#xff08;Cumulative Distribution Function, CDF&#xff09;是概率密度函数&#xff08;Probability Density Function, PDF&#xff09;的变上限积分&#xff0c;概率密度函数是分布函数的导函数。 如果我们有一个连续型随机变量…

AIGC专栏18——EasyAnimateV5.1版本详解 应用Qwen2 VL作为文本编码器,支持轨迹控制与相机镜头控制

AIGC专栏18——EasyAnimateV5.1版本详解 应用Qwen2 VL作为文本编码器&#xff0c;支持轨迹控制与相机镜头控制 学习前言相关地址汇总源码下载地址HF测试链接MS测试链接 测试效果Image to VideoText to Video轨迹控制镜头控制 EasyAnimate详解技术储备Qwen2 VLStable Diffusion …

如何为64位LabVIEW配置正确的驱动程序

在安装 64位 LabVIEW 后&#xff0c;确保驱动程序正确配置是关键。如果您首先安装了 32位 LabVIEW 和相关驱动&#xff0c;然后安装了 64位 LabVIEW&#xff0c;需要确保为 64位 LabVIEW 安装和配置适当的驱动程序&#xff0c;才能正常访问硬件设备。以下是详细步骤&#xff1a…

详解:TCP/IP五层(四层)协议模型

一.五层&#xff08;四层&#xff09;模型 1.概念 TCP/IP协议模型分为五层&#xff1a;物理层、数据链路层、网络层、传输层和应用层。这五层每一层都依赖于其下一层给它提供的网络去实现需求。 1&#xff09;物理层&#xff1a;这是最基本的一层&#xff0c;也是最接近硬件…

头像生成小程序搭建(免费分享)

如下图为小程序页面的基本效果&#xff0c;下面将介绍该小程序的功能 页面template代码如下&#xff1a; <template><view class"avatar-containner"><block v-if"!showCropper"><image class"pageback" src"../../s…