导入你的 ST 项目到 Visual Studio

news2024/9/28 15:27:41

去年我们官宣了 Visual Studio Code 可以直接导入 ST 项目,今天再次宣布:它的好兄弟 Visual Studio 2022 17.6 也支持此功能,详细请看下文。

在 ARM 微控制器领域,有许多芯片供应商,其中最大的是意法半导体(ST)。ST 拥有大量具有多种功能的可用器件,以及用于评估这些功能的支持开发板。他们还生产STM32CubeIDE,一种用于定位设备的自定义IDE,以及STM32CubeMX,一种用于配置设备属性和生成项目的配置工具。

如果你是已经在使用过 ST 产品的开发人员,我不会告诉你任何新内容。你可能不知道我们为在 Visual Studio 中启用嵌入式开发人员所做的工作。此嵌入式体验依赖于新的 vcpkg 项目功能来帮助获取工具链和配置开发环境。为了让使用 ST 芯片的开发人员更容易尝试 Visual Studio Code,我们一直在与意法半导体合作,实现 STM32CubeIDE 项目的导入。

我们通过从 ST 项目生成一个 CMake 项目来实现这一点。ST 在其产品组合中提供了许多示例项目。我们已经使用这种机制验证了示例项目中的构建,其中超过3000个。目前,我们的通过率为 99%,我们正在继续提高。这使我们相信,我们的方法将成功导入你自己的意法半导体项目。我们的嵌入式工具扩展还支持通过导入器进行设备刷写和调试,尽管我们仅在我们拥有的硬件上对此进行了验证。

这篇文章将介绍这个项目导入器功能如何与 vcpkg 和 ST 的工具结合使用。

在 Visual Studio 中使用 ST 项目

这篇文章假设对 ST 器件、开发工具和嵌入式开发有一定的了解。如果你需要一些背景知识,我们推荐以下Shawn Hymel关于STM32入门的文章。
《Introduction to STM32CubeIDE》
《Introduction to FreeRTOS》

我们依靠 vcpkg 来管理像 CMake 和 Ninja 这样的依赖项,包括获取它们并使它们可用于你的开发环境。你可以在 Visual Studio 嵌入式开发概述中了解有关 vcpkg 的更多信息。你可以将其安装在适用于你的平台的单个 shell 命令中,在 Windows 上你应该使用此 PowerShell 命令。
iex (iwr -useb
https://aka.ms/vcpkg-init.ps1)

你将需要随 Linux 和嵌入式开发一起安装 Visual Studio 2022 17.6 预览版 1 或更高版本C++并选择工作负载。

>> 请移步至 topomel.com 以查看图片 << 

今天,我们的导入器要求你将 STM32CubeIDE 软件安装在平台的默认位置。我们一直在使用 STM32CubeIDE 1.9.0 和 STM32CubeMX 6.5.0 测试此功能。如果你并排安装了多个实例,我们无法控制选择哪个实例。

还需要在 STM32CubeIDE 中获取设备的板级支持包。这样我们就可以从 Visual Studio 中使用 ST 提供的编译器和支持应用程序。

或者,你可以使用 STM32CubeCLT ,其中包括此体验所需的一切,包括编译器,编程器和调试器。

安装我们的先决条件后,从 Visual Studio 中转到文件,打开,导入 STM32CubeIDE 项目。

>> 请移步至 topomel.com 以查看图片 << 

导航到你的 ST .cproject 所在的位置并选择它。然后,可以选择调试或发布配置。现在,可以选择“生成”以使用 CMake 编译固件。若要调试,请选择“调试”视图,然后选择启动按钮。这将运行 STM32 编程器将固件烧录到设备上并使用 GDB 连接。从这里,我们所有的嵌入式开发视图(串行、RTOS 和外设)都可用。

如果你的项目有 .ioc 文件,你还可以打开上下文菜单并为您的项目打开 STM32CubeMX。

>> 请移步至 topomel.com 以查看图片 << 

理解 CMake 互操作性

你可以看到简单的 CMakeLists.txt,它是在 .cproject 所在的项目的根目录中生成的。这依赖于 cmake 目录下生成的 CMake 文件。这些文件中的路径设置为计算机上 ST 编译器的发现位置。如果你打算从 ST 项目格式迁移到 CMake,我们建议根据需要调整这些文件,尤其是在路径可能不同的团队中使用。

需要注意的另一件事是,有时在 STM32CubeIDE 示例中,项目可能位于源代码的子目录中。如果在文件视图中看不到项目文件,这可能是原因。选择 CMake 目标视图,应会看到 CMake 用于生成生成的所有内容。

根据上述观点,我们建议在使用 STM32CubeMX 生成项目时,将项目管理器中“在根下生成”中的默认值保留为选中状态。这会将你的 .cproject 保留在包含生成的源文件的文件夹的根目录中。STM32CubeIDE也是默认生成项目的方式。

如果在 STM32CubeIDE 中再次打开项目,则需要从项目中排除 CMake 使用的构建目录。右键单击生成目录,然后选择“资源配置”>“从生成中排除”。然后选择“调试”和“发布”。

>> 请移步至 topomel.com 以查看图片 << 

总结

可以使用 Visual Studio 编写 ST 项目的代码,确实是一个微软进军非 Windows 生态系统的好兆头。
也说明了,她有了一些危机感。技术的升维变革,不会提前跟你打招呼,你需要始终看的更远一点,并做好十足的准备应对挑战。

最后

Microsoft Visual C++团队的博客是我非常喜欢的博客之一,里面有很多关于Visual C++的知识和最新开发进展。大浪淘沙,如果你对Visual C++这门古老的技术还是那么感兴趣,则可以经常去他们那(或者我这)逛逛。
本文来自:《Importing ST projects into Visual Studio》

 

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

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

相关文章

【冲刺蓝桥杯的最后30天】day6

大家好&#x1f603;&#xff0c;我是想要慢慢变得优秀的向阳&#x1f31e;同学&#x1f468;‍&#x1f4bb;&#xff0c;断更了整整一年&#xff0c;又开始恢复CSDN更新&#xff0c;从今天开始更新备战蓝桥30天系列&#xff0c;一共30天&#xff0c;如果对你有帮助或者正在备…

【魅力开源】第9集:管理者的大局观:企业数字化转型的能力逆向规划设计模型

文章目录前言一、背景&#xff1a;数字化转型机遇与挑战1.1 国家层面&#xff1a;数字化转型的背后代表的是“国家意志”1.2 企业层面&#xff1a;积极拥抱数字化转型&#xff0c;抢占的是“红利先机”1.3 个人层面&#xff1a;全民数字化时代到来&#xff0c;最为炙手可热的当…

CPDA|如何证明你的数据分析能力?

数据分析能力是一个很重要的能力&#xff0c;那么如何去证明这个能力呢&#xff1f; 一般来说&#xff0c;证明你的数据分析能力需要以实际的数据分析项目和成果为基础&#xff0c;可以从以下几个方面来证明&#xff1a; 项目经历&#xff1a;列举你参与的数据分析项目&#x…

Easy Deep Learning——PyTorch中的自动微分

目录 什么是深度学习&#xff1f;它的实现原理是怎么样的呢&#xff1f; 什么是梯度下降&#xff1f;梯度下降是怎么计算出最优解的&#xff1f; 什么是导数&#xff1f;求导对于深度学习来说有何意义&#xff1f; PyTorch 自动微分&#xff08;自动求导&#xff09; 为什么…

分享一个 hive on spark 模式下使用 HikariCP 数据库连接池造成的资源泄露问题

最近在针对某系统进行性能优化时&#xff0c;发现了一个hive on spark 模式下使用 HikariCP 数据库连接池造成的资源泄露问题&#xff0c;该问题具有普适性&#xff0c;故特地拿出来跟大家分享下。 1 问题描述 在微服务中&#xff0c;我们普遍会使用各种数据库连接池技术以加快…

二叉树,二叉搜索树相关模板

目录1.先序遍历2.中序遍历3.后序遍历4.层序遍历(可用于需按层进行计算的题目)5.判定二叉树的对称性6.二叉树最大深度&#xff08;结点深度&#xff1a;根节点到该结点。结点高度&#xff1a;该结点到叶子结点&#xff09;7.二叉树最小深度8.二叉树的平衡性9.求左叶子的和10.通过…

ArcGIS制图技巧:制图入门与点、线、面状符号制作

目的&#xff1a; 1、了解地图制作目的&#xff1b; 2、了解在ArcMap平台中制作地图大致过程。 3、掌握地形图生成的操作&#xff1b; 4、掌握地形图的正确输出方法。 5、理解点状符号、线状符号、面状符号的基本概念&#xff1b; 6、理解地形点状符号、线状符号、面状符…

从大专到测开,上海某字母站大厂的面试题,岗位是测开(25K*16)

简单介绍一句&#xff0c;大专出身&#xff0c;三年经验。跳了四次槽&#xff0c;面试了无数次&#xff0c;现在把自己的面试经验整理出来分享给大家&#xff0c;堪称必杀技&#xff01; 1&#xff0c;一切从实际出发&#xff0c;对实际工作进行适当修饰 2&#xff0c;不会的简…

【晓龙oba出品 - 黑科技解题系列】- 最小操作次数使数组元素相等

思路 算法归根到底就是找规律的游戏&#xff0c;我们首先来看一个现象&#xff1a; 以数组nums [1,2,3,4,5]为例 当我们将数组排序后&#xff0c;可以知道最小值为1,最大值为5&#xff0c;此时我们需要四次运算可以使最小值与最大值相等&#xff1a; 第一次&#xff1a;2,3,4,…

HNU-电子测试平台与工具2-数模转换

数模转换实验 计科XXXX wolf 工程文件我也一并上传了 D级任务 一.实验任务 对74194进行仿真验证&#xff0c;掌握Quartus仿真的基本原则和常规步骤&#xff0c;记录移位寄存器的数据读写&#xff0c;并描述仿真波形&#xff0c;分析结果。 二.实验过程 1.电路连接 2.功能…

Go 实现多态和 参数的动态个数及动态类型

引子 go语言作为静态(编译期类型检测)强类型(手写代码进行类型转换)语言, 要想实现 动态语言的鸭子类型的调用方法,做到 一个入参是不同类型,还是有些麻烦的; 需求 希望写代码时像python一样的鸭子类型,不用管参数类型,都可以调用同一个方法;希望 入参像python一样 能够在 个…

Kalman Filter in SLAM (1) ——Data Fusion and Kalman Filter(数据融合和卡尔曼滤波)

文章目录0. 参考资料1. Intro Example 例子引入1.1. 测量硬币直径1.2. 思考2. Data Fusion 数据融合2.1. 数据融合在做什么&#xff1f;2.2. 数据融合的前提——不确定度2.3. 数据融合的结果——统计意义下的最优估计3. State Space Representation 状态空间表达式3.1. 状态方程…

大数据 | (二)SSH连接报错Permission denied

大数据 | &#xff08;三&#xff09;centos7图形界面无法执行yum命令&#xff1a;centos7图形界面无法执行yum命令 哈喽&#xff01;各位CSDN的朋友们大家好&#xff01; 今天在执行Hadoop伪分布式安装时&#xff0c;遇到了一个问题&#xff0c;在此跟大家分享&#xff0c; …

ThreadLocal的内部结构和源码探究

目录一. ThreadLocal的内部结构1 常见的误解2 现在的设计3 这样设计的好处二. ThreadLocal的核心方法源码1 set方法2 get方法3 remove方法**4 initialValue方法**三. ThreadLocalMap源码分析1 基本结构2 弱引用和内存泄漏3 hash冲突的解决一. ThreadLocal的内部结构 ​ 通过之…

【C++知识点】STL 容器总结

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 &#x1f4da;专栏地址&#xff1a;C/C知识点 &#x1f4e3;专栏定位&#xff1a;整理一下 C 相关的知识点&#xff0c;供大家学习参考~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;…

2月榜单丨飞瓜数据B站UP主排行榜(哔哩哔哩平台)发布!

飞瓜轻数发布2023年2月飞瓜数据UP主排行榜&#xff08;B站平台&#xff09;&#xff0c;通过充电数、涨粉数、成长指数三个维度来体现UP主账号成长的情况&#xff0c;为用户提供B站号综合价值的数据参考&#xff0c;根据UP主成长情况用户能够快速找到运营能力强的B站UP主。飞瓜…

(蓝桥真题)剪格子(搜索+剪枝)

样例1输入&#xff1a; 3 3 10 1 52 20 30 1 1 2 3 样例1输出&#xff1a; 3 样例2输入&#xff1a; 4 3 1 1 1 1 1 30 80 2 1 1 1 100 样例2输出&#xff1a; 10 分析&#xff1a;这道题目我们直接从(1,1)点开始进行dfs搜索即可&#xff0c;但是需要注意一点的是我们搜…

FPGA和IC设计怎么选?哪个发展更好?

很多人纠结FPGA和IC设计怎么选&#xff0c;其实往小了说&#xff0c;要看你选择的具体是哪个方向岗位。往大了说&#xff0c;将来你要是走更远&#xff0c;要成为大佬&#xff0c;那基本各个方向的都要有涉及的。 不同方向就有不同的发展&#xff0c;目前在薪资上IC设计要比FP…

Vue3返回顶部组件及返回顶部js封装

介绍 vue3中,封装监听页面滚动的js, 及页面滚动到一定像素时,显示返回顶部的按钮,点击按钮会有放大的动画,并逐渐滚动到顶部的组件。效果如下: 代码 封装js,监听屏幕滚动事件,以及是否显示返回顶部的按钮; 在项目目录下新建 utils文件夹,并在该文件夹下创建index.…

国外SEO优化的重要性及应对策略

SEO是指搜索引擎优化&#xff0c;是一种通过优化网站的结构和内容&#xff0c;提高网站在搜索引擎中的排名&#xff0c;从而吸引更多的流量和潜在客户的过程。 国外SEO优化尤为重要&#xff0c;因为搜索引擎在全球范围内广泛使用&#xff0c;而谷歌是全球最受欢迎的搜索引擎之…