vscode + cmake + ninja + ARMCC 配置stm32开发环境(构建篇)

news2024/9/20 19:46:47

vscode + cmake + ninja + ARMCC 配置stm32开发环境(构建篇)

1. 前置环境

1.1 cmake安装

  • 从CMake官网上下载CMake安装包进行安装CMake。CMake官网
    在这里插入图片描述

  • 安装完成之后,使用cmd查看cmake是否添加进入环境变量。
    在这里插入图片描述

1.2 LLVM套件安装

  • 从LLVM的github上下载发布版安装包进行安装LLVM套件。LLVM
    在这里插入图片描述

  • 安装完成后,手动添加clang到环境变量中。
    在这里插入图片描述

  • 使用cmd查看clang是否添加进入环境变量。
    在这里插入图片描述

1.3 ninja安装

  • 参考ninja安装。ninja安装

1.4 vscode插件安装

  • 在vscode插件市场中安装以下插件。
    在这里插入图片描述

    clangd插件与C/C++插件不能共存,本次配置使用clangd插件,请先禁用C/C++插件

1.5 ARMCC

  • ARMCC添加到环境变量中。
    在这里插入图片描述

1.6 可使用的stm32 mdk工程

  • 需要准备一个可以使用的stm32 mdk工程。
  • 本教程使用的是自行搭建的工程,也可以使用stm32cubemx生成的工程。stm32cubemx生成的工程切记选择生成mdk工程。

2. 配置VScode插件

2.1 配置clangd插件

  • clang插件齿轮图标左键点击,进入配置界面。
    在这里插入图片描述

  • 配置clangd在本机的路径。如果之前设置过环境变量,则可以输入clangd即可,如果没有设置过环境变量,则需要输入完成的路径
    在这里插入图片描述

  • 配置clangd参数,最主要的参数就是--compile_commands-dir,此参数用于指定生成的compile-commands.json文件存放的路径,此文件可以确保函数,文件跳转更加精确。
    在这里插入图片描述

2.2 配置CMake Tools插件

  • 配置cmake构建生成文件存放的路径
    在这里插入图片描述

3. 编写Cmake文件

3.1 指定交叉编译工具链

  • 在工程文件根目录下,创建armcc-toolchain.cmake,用于指定ARMCC工具链的路径
    在这里插入图片描述

  • armcc-toolchain.cmake内容
    在这里插入图片描述

    此文件只需要修改第一行,armcc的本机路径即可。

3.2 CMakeLists.txt文件编写

  • 在工程文件根目录下,创建CMakeLists.txt文件
    在这里插入图片描述

  • CMakeLists.txt文件内容

    • 常规设置
      在这里插入图片描述

      在这里插入图片描述

      主要设置了cmake最低版本,目标平台,系统名称,CPU类型。SYSTEM_NAM一定要选择Generic

    • 工程名设置
      在这里插入图片描述

    • 编译器flag设置
      在这里插入图片描述

    • 头文件路径添加
      在这里插入图片描述

    • 链接选项
      在这里插入图片描述

      其中最重要的就是指定sct文件路径,该文件需要先试用keil编译生成一次。

    • 源文件路径添加
      在这里插入图片描述

    • 目标文件生成
      在这里插入图片描述

    • hex和bin文件生成
      在这里插入图片描述

3.3 CMakePresets.json文件编写

  • 配置生成ninja
    在这里插入图片描述

4. 使用

4.1 工具链查找

在这里插入图片描述

CMakeLists.txt文件在编写过程中进行保存,就会自动进行配置构建,出现上图则表示工具链查找正常。

4.2 工程构建

在这里插入图片描述

点击下方齿轮,进行编译
在这里插入图片描述

上图为编译成功之后的截图,可以看到相关存储占用大小信息。也能看到构建用时3.5s,使用mdk进行工程编译编译,需要1分钟以上

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

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

相关文章

K8S上安装LongHorn(分布式块存储) --use

要在 Kubernetes上安装 LongHorn,您可以按照以下步骤进行操作: 一、准备工作 参考 官网教程将LongHorn只部署在k8s-worker5节点上。https://github.com/longhorn/longhorn 安装要求 Each node in the Kubernetes cluster where Longhorn is installe…

Java虚拟机:运行时内存结构

大家好,我是栗筝i,这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 035 篇文章,在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验,并希望进…

人口老龄化社区服务与管理平台

TOC springboot136人口老龄化社区服务与管理平台 系统概述 1.1 研究背景 人口老龄化社区服务与管理平台是面向居家老人用户、社区的系统与信息平台,并在此基础上提供实时、快捷、高效、低成本的,物联化、互联化、智能化的人口老龄化社区服务服务。 …

CTFHub~SQL注入超简单详细教程

0x01整数型注入 # 本题告诉我们是整数型,所以就很容易了# 判断字段数量 1 order by 2# 判断回显点 -1 union select 1,2# 查询全部数据库名 -1 union select 1,group_concat(schema_name) from information_schema.schemata# 判断数据库中的表名 -1 union select 1…

Python采集爬取cnmo网站手机数据案例实现

前言 本例子利用Python爬虫爬取cnmo网站2020年至2022年11月的手机数据,并对其进行数据处理和可视化分析。 1、效果展示 如下如最终我们将得到一个包含手机型号、颜色、内存、价格及购买链接等的excel表以及dataframe和可视化效果。 2、需要用到的库 import panda…

【OpenCV——python】形态学变换 颜色空间 颜色替换 掩膜 旋转

形态学变换 形态学变换一般是处理二值图的腐蚀和膨胀操作,输入二值化图像和核,对图像进行类似卷积的操作 核 核是一定大小的区域,在原图中进行滑动计算 腐蚀erode 腐蚀过程 核在图像上滑动,对应位置相乘,最小值作为核…

孙宇晨领航波场TRON:引领数字资产迈向崭新纪元

​ 在风起云涌的数字资产领域,孙宇晨这个名字始终与创新、突破和引领紧密相连。作为波场TRON的创始人,他不仅是一位远见卓识的领导者,更是推动数字资产迈向新纪元的坚实力量。 自波场TRON诞生以来,孙宇晨便以其敏锐的洞察力…

MongoDB教程

目录 介绍启动命令命令行操作常用命令总结MongoDB Compass 介绍 MongoDB是一个基于分布式文件存储的开源数据库系统,由C语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB将数据存储为一个文档,数据结构由键值对组成&…

轮式遥控无人侦察车技术详解

轮式遥控无人侦察车(Wheeled Remote-Controlled Unmanned Ground Vehicle, RCUGV)作为现代战场及复杂环境侦察作业的重要工具,以其灵活性高、机动性强、风险低等优势,在军事侦察、灾害评估、环境监测等多个领域发挥着不可替代的作…

Cesium 加载高斯泼溅(Gaussian Splatting)模型

Cesium 加载高斯泼溅(Gaussian Splatting)模型 高斯泼溅(Gaussian Splatting) 高斯泼溅是一种革命性的 3D 重建新方法,它试图解决其他方法存在的一些问题,例如处理时间长。对于这种方法,他们的…

成都云飞浩容文化传媒有限公司是做什么的?

在数字经济的浪潮中,电商行业如日中天,成为推动经济发展的重要引擎。在这场没有硝烟的商战中,如何脱颖而出,实现品牌与销量的双重飞跃?成都云飞浩容文化传媒有限公司,作为电商服务领域的佼佼者,…

JavaHadoop白云白云图书管理系统---附源码19272

目 录 摘要 Abstract 1 绪论 1.1 研究背景及意义 1.2国内外研究现状 1.3 论文结构与章节安排 2 白云图书管理系统系统分析 2.1 系统可行性分析 3.2.1 技术可行性 3.2.2 经济可行性 3.2.3 操作可行性 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分析 2.3 …

【Web】LIT CTF 2024 题解(全)

目录 anti-inspect jwt-1 jwt-2 traversed kirbytime scrainbow anti-inspect 因为一直while true,网页会卡死无法访问 const flag "LITCTF{your_%cfOund_teh_fIg_94932}";console.log(flag,"background-color: darkblue; color: white; f…

Nginx异常关闭之中了挖矿病毒kswapd0

问题描述:系统突然无法访问了,登录服务器看了一下是因为Nginx服务关闭,重启后过了几天仍然异常关闭 系统:CentOS 7,Nginx 1.20 尝试解决过程:1、查询nginx/logs/error.log、系统日志,都没有查…

Ubuntu18.04 配置EtherCAT主站IGH SOEM

IGH IGH 是开源的EtherCAT 主站软件 一、安装依赖 sudo apt update sudo apt install build-essential linux-headers-$(uname -r) mercurial autoconf libtool 也不知道安装的完全不完全 uname -r 可以查看内核,我安装的ubuntu18.04的内核版本是 5.4.0-84-gen…

Robotics: Aerial Robotics 部分笔记——Week2(1) 运动学

Week 2.1 g ( q ) g(q) g(q) is called g of q.Rotation matrix R R R: P ′ R P PRP P′RP。旋转矩阵都是正交的(orthogonal),即 R T R R R T I R^TRRR^TI RTRRRTI;行列式为1 d e t R 1 det R 1 detR1;且旋转矩…

【JAVA】阿里巴巴的Arthas:Java应用诊断的利器

文章目录 引言1. Arthas概述2. 安装与配置3. 基本使用4. 业务开发示例5. 高级功能6. 实践经验与案例分析7. 结论8. 附录 更多相关内容可查看 引言 在现代软件开发中,Java作为一种广泛使用的编程语言,承担着大量企业级应用的开发任务。然而,随…

Linux驱动入门实验班——Hello驱动(后附百问网课程视频链接)

目录 1.如何编写驱动程序 2.编写驱动程序 ①确定主设备号 register_chrdev函数 ②file_operations结构体 ③实现对应的函数,填入结构体 copy_from_user函数 copy_to_user函数 ④注册驱动程序 方式一 方式二 ⑤入口函数 ⑥出口函数 ⑦提供设备信息&#x…

Type-C接口取电芯片-LDR6500

取电芯片,特别是针对Type-C接口的取电芯片,如LDR6328系列,是近年来电子设备领域的一个重要技术组件。这些芯片通过智能协议控制,实现高效、安全的充电过程,并广泛应用于智能手机、平板电脑、笔记本电脑、小家电等各类需…

18. 基于ES实战海量数据检索

18. 基于ES实战海量数据检索 一. 概述二. Elasticsearch 全文检索1. 分布式搜索引擎2. 搜索引擎种类3. 倒排索引三. elastic使用1. 官网介绍2. docker安装3. elasticsearch-head工具4. 分词与内置分词4.1 内置分词器(了解即可)4.2 `IK`中文分词器*****************************…