STM32Cube +VSCode开发环境搭建

STM32Cube +VSCode开发环境搭建

  • 0.前言
  • 一、各种方式对比
    • 1.STM32CubeMX + CLion
    • 2.STM32CubeIDE + VSCode + STM32 VSCode Extension
    • 3.VSCode + EIDE插件
  • 二、STM32CubeIDE + VSCode + STM32 VSCode Extension环境搭建
    • 1.需要安装的软件
    • 2.相关配置
    • 3.编译测试
  • 三、总结


0.前言

  工欲善其事,必先利其器。由于受够了eclipse风格的cubeide,直接用vscode打开工程目录又是一大堆波浪线,所以终于下定决心整整我的开发环境。

一、各种方式对比

  stm32开发环境有很多方式,由于一些原因,这里就不使用keil+vscode方式进行介绍了,相关教程各大论坛也有不少,这里就介绍一下我踩坑的几种。环境搭建的宗旨是简单,尽量减少自己修改配置文件等繁琐步骤。

1.STM32CubeMX + CLion

  Clion作为比较现代化风格的IDE工具,并且支持像vscode风格的插件,用起来还是比较舒适的,不过缺点就是调试只能用openocd,这种方式需要加载芯片相关的cfg文件和寄存器映射表,所以搭建环境时还是比较麻烦的。笔者最终没有使用这种方式,因为所使用的STM32F103RCT6找不到对应的cfg文件和寄存器映射表文件,又懒得自己照着手册写。如果有想用这种方式的可以移步B站@Kevin_WWW大佬的相关视频。
注:这种方式最好使用官方能找得到芯片cfg文件的开发板,否则自己手动配置起来比较麻烦。

2.STM32CubeIDE + VSCode + STM32 VSCode Extension

  ST官方出了一个VSCode的相关插件,使用此插件可以直接打开对应的工程,支持编译下载和调试功能,本节内容主要也是以此方式介绍。
注:使用此方式前最好先在CubeIDE中查看自己的ST-Link是否满足要求,有些国产ST-Link过不了IDE检测,就无法正常烧录和调试。

3.VSCode + EIDE插件

由于笔者的两个ST-Link都无法过检测,又不想再花钱买新的,所以最终选择使用EIDE这种方式,使用起来甚至比第二种还要方便一点,相关教程可以移步B站@threekb大佬的相关视频。

二、STM32CubeIDE + VSCode + STM32 VSCode Extension环境搭建

1.需要安装的软件

① STM32CubeIDE
② VSCode
③ cmake
④ STM32 VSCode Extension(vscode插件)
  ①和②的安装就不多介绍了,官网下载后安装就行。STM32CubeIDE建议安装在默认路径下,可以省去后续配置麻烦。更换了目录也行,笔者就是更换了目录后重新配置的,后续会介绍。
  ③ cmake的安装可以从官网下载安装包直接安装(记得勾选添加到环境变量,后续会更方便),也可以下载免安装.zip格式的文件。不想添加环境变量的话后续就要在VSCode中配置,看个人喜好。

2.相关配置

在vscode中安装STM32 VSCode Extension 插件,添加后左侧会出现如下标志,并且此插件会安装cmake、Cotex-Debug等其他需要依赖的插件。
在这里插入图片描述
添加cmake工具路径:
如果安装cmake时没有添加到环境变量,或者只下载了工具压缩包,那么就需要在vscode中指定相关路径。在vscode中使用ctrl + shift + P,搜索cmakepath,将相关路径添加即可:
在这里插入图片描述
配置STM32CubeIDE工具链:
在左侧STM32插件中导入一个CubeIDE生成的工程,然后修改如下文件:
注:如果STM32CubeIDE安装在默认路径下,应该不需要修改此路径,请以实际情况为准
在这里插入图片描述
将launch.json中这四项参数修改到CubeIDE安装目录下的对应路径。
.cmake 文件中一项参数也需要修改:
在这里插入图片描述
此项是用来加载交叉编译工具的,使用CubeIDE包内自带的交叉编译工具链即可。

3.编译测试

修改完这些参数正常情况应该就可以编译了,不过烧录和debug就需要自行解决了,由于ST-Link 的问题,尝试了很多种绕过检测的办法都没有奏效,感兴趣的可以参考此篇文章进行尝试:https://github.com/armink/HackSTLinkUpgrade .经过笔者尝试,应该只有1 和 3有尝试空间了。
在这里插入图片描述
点击左侧cmake工具中的构建按钮就可以编译工程了。左侧的运行按钮中可以对程序进行debug操作,这里就不演示了,有需求的可以自行研究。
在这里插入图片描述

三、总结

  官方的工具和插件虽然用起来方便快捷,但是捆绑st-link的情况比较严重,使用Jlink或者DAPLink的只能用openocd这种方式,加载芯片cfg文件和寄存器映射表也比较麻烦,不能做到每次都方便快捷的开始。Keil和IAR工具的界面一言难尽,所以只能寄希望于一些第三方平台的优化了,在此期间笔者还接触到PlatformIO的开发方式,可以直接兼容C++的类库及面向对象的编程模式,感兴趣的可以继续了解,笔者就先停在EIDE的开发方式了。

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

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

相关文章

最新Next14 路由处理器 Route Handlers

四、使用Next路由处理程序 Next.js Route Handlers I. Next中路由处理程序是什么 ​ 路由处理程序是在用户访问站点路由时执行的功能。它们负责处理对定义的URL或路由的传入HTTP请求,以生成所需的数据。从本质上讲,当用户访问Next.js应用程序中的特定页…

chatglm3-6b部署及微调

chatglm3-6b部署及微调 modelscope: https://modelscope.cn/models/ZhipuAI/chatglm3-6b/filesgithub: https://github.com/THUDM/ChatGLM3镜像: ubuntu20.04-cuda11.8.0-py38-torch2.0.1-tf2.13.0-1.9.4v100 16G现存 单卡 安装 软件依赖 pip install --upgrade pippip ins…

使用IDEA让文本对比不在变的困难

文章目录 前言操作1、IDEA与电脑磁盘任意文件的比较2、项目内部的文件比较3、剪切板比较4、IDEA本地历史比较5、IDEA版本历史对比 前言 在日常实际开发当中我们常常会对一些代码或内容进行比对查看是否有差异,这个时候不需要借用第三方比对插件,在IDEA中…

git笔记

git常见命令 git init :初始化本地仓库,会生成一个.git文件,该文件用于管理和追踪该本地仓库,只有在git仓库下的文件才能被管理! git config user. name "用户名” git config user. email " 邮箱” git config -1 :列出当前git仓库…

老李测评:网络电视盒子哪个好?双十一必看电视盒子推荐

大家好,我是测评人老李,双十一大促期间我们都在买买买,本期老李要分享的数码产品推荐是电视盒子,为了推荐更客观,老李购入了各平台热销的十几款电视盒子,通过两周的对比后,整理了这份电视盒子推…

class类默认导出,header字段在请求中的位置

这是封装好的,没封装的如下 如果没有用uni.post那么就是如下的结构 let header {Content-Type: application/x-www-form-urlencoded,tenant: MDAwMA, } request({url:/sal/formula/validFormula,method:post,data:{},header })

音乐免费下载mp3格式+音频格式转换+剪辑音频+合并音频教程

1.在qq音乐网页版搜索想要的歌曲 qq音乐网站:https://y.qq.com/ 如果你是vip可以直接下载vip的歌曲,如果不是选择不是vip的歌曲进行第一步的操作 2.点击播放进入页面后F12拿到音频地址 然后双击src里面的音频地址复制 网页新标签打开赋值的这个链接&a…

Gitlab服务器配置LDAP指导

ssh登录gitlab服务器:192.168.1.203修改配置文件 sudo su vim /etc/gitlab/gitlab.rb找到ldap_enabled和ldap_servers关键字并修改参数 保存配置文件并重新载入配置 gitlab-ctl reconfigure检查ldap相关配置是否成功(列出前100个用户,若没…

BIM、建筑机器人、隧道工程施工关键技术

一、BIM简介 (一)BIM概念 BIM(Building Information Modeling),建筑信息模型。该技术通过数字化手段,在计算机中建立虚拟建筑,该虚拟建筑提供从单一到完整、包含逻辑关系的建筑信息库。信息库…

基于全阶模型磁链观测器的异步电机矢量控制的学习

导读:异步电机直接矢量控制需要通过磁链观测器来获取同步角,用于控制过程中的坐标变换。同时,磁链观测器输出的估计磁链用于磁链PI调节器闭环控制。所以磁链观测器在矢量控制中显得尤为重要。 如果需要文章中对应的仿真模型,关注…

C语言实现输出9*9口诀

完整代码&#xff1a; // 输出9*9口诀 #include<stdio.h>int main(){//i代表九行for (int i 1; i < 10; i){//j代表每行有几列for (int j 1; j <i; j){printf("%d*%d%d ",j,i,i*j);}printf("\n");}return 0; } 运行截图&#xff1a;

安防监控EasyCVR视频汇聚平台使用海康SDK播放时,画面播放缓慢该如何解决?

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。安防视频平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频录像、云存储、…

SpringBootWeb案例——Tlias智能学习辅助系统(2)

前一节已经实现了员工信息的条件分页查询以及删除操作。 这一节继续完成新增员工、文件上传、修改员工、配置文件的功能。 目录 新增员工文件上传简介本地存储阿里云OSS介绍与入门项目集成阿里云(难点) 修改员工查询回显修改员工 配置文件参数配置化(Value)yml配置文件Configur…

一文1700字使用Postman搞定各种接口token实战(建议收藏)

现在许多项目都使用jwt来实现用户登录和数据权限&#xff0c;校验过用户的用户名和密码后&#xff0c;会向用户响应一段经过加密的token&#xff0c;在这段token中可能储存了数据权限等&#xff0c;在后期的访问中&#xff0c;需要携带这段token&#xff0c;后台解析这段token才…

Gradle笔记 四 Gradle的核心 TASK

文章目录 Task任务入门任务的行为任务的依赖方式任务执行常见的任务&#xff08;*&#xff09;项目报告相关任务调试相关选项性能选项守护进程选项日志选项其它(*) 任务定义方式任务类型任务的执行顺序动态分配任务任务的关闭与开启任务的超时任务的查找任务的规则任务的 onlyI…

信息科技风险管理:合规管理、技术防控与数字化

信息科技对金融业务发展所起的作用是举足轻重的。近年来&#xff0c;金融机构在战略规划中相继引入科技引领的概念。作为金融机构信息科技从业人员&#xff0c;我们笃信信息科技是一个非常有用的工具&#xff0c;一个兼具产品思维和管理思维、拥有高质增效能力的工具。 这个工…

Flink之状态管理

Flink状态管理 状态概述状态分类 键控、按键分区状态概述值状态 ValueState列表状态 ListStateMap状态 MapState归约状态 ReducingState聚合状态 Aggregating State 算子状态概述列表状态 ListState联合列表状态 UnionListState广播状态 Broadcast State 状态有效期 (TTL)概述S…

换服还是掀桌?哪条才是程序员的出路?

站在时代的风口浪尖&#xff0c;猪都能起飞。 大数据互联网正是时代的宠儿&#xff0c;IT行业的发展也正如火如荼。 人人都眼红程序员的高薪资&#xff0c;认为他们吃着时代的红利。 但是三百六十行&#xff0c;行行出社畜。”996“也好&#xff0c;甚至"007"也罢…

OpenAI开发者大会掀起风暴:GPT模型价格狂降50%,应用商店即将亮相,AI技术将引爆全球!

OpenAI首届开发者大会召开了&#xff01; 关键信息&#xff1a; GPT-4升级版GPT-4 Turbo来了&#xff0c;上下文窗口达到128k&#xff0c;为GPT-4的4倍&#xff1b;OpenAI还降低了几乎所有模型的API使用价格&#xff0c;整体便宜了一半多&#xff1b;GPT-4系列的多模态能力向B…

竞赛选题 深度学习手势识别 - yolo python opencv cnn 机器视觉

文章目录 0 前言1 课题背景2 卷积神经网络2.1卷积层2.2 池化层2.3 激活函数2.4 全连接层2.5 使用tensorflow中keras模块实现卷积神经网络 3 YOLOV53.1 网络架构图3.2 输入端3.3 基准网络3.4 Neck网络3.5 Head输出层 4 数据集准备4.1 数据标注简介4.2 数据保存 5 模型训练5.1 修…