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

news/2024/9/22 17:25:33/

vscode__cmake__ninja__ARMCC_stm32_0">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安装

vscode_27">1.4 vscode插件安装

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

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

1.5 ARMCC

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

stm32_mdk_38">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.ppmy.cn/news/1509059.html

相关文章

EasyExcel实现100w数据导入导出

EasyExcel实现100w数据导入导出 他山之石,可以攻玉 参考文章链接:百万数据的导入导出解决方案 个人功能实现github代码地址:batchExcelData-import-export 前置准备 Java17 SpringBoot3 100w数据生成SQL CREATE TABLE student_info (id …

C++ list【常用接口、模拟实现等】

1. list的介绍及使用 1.1 list的介绍 1.list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。 2.list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前…

Micrometer Tracing和Zipkin实现链路追踪

一、为什么使用链路追踪 在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果,每一个前段请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现高延时或错误都会引起整个…

小红书js逆向x-s之补环境

请求参数分析 数据文件在homefeed里,直接复制header参数在Convert curl commands 生成python代码跑一下 (注意curlconverter生成的respond的输入参数里有一个是json,这个是不对的,需要改为data) 结果发现报错&…

FPGA可以解决哪些问题?

FPGA 允许在单个芯片中实现大量数字逻辑,其运行速度相对较高,并且只需很少或不需要在 CPU 内核上运行的传统顺序程序即可完成其工作。 这种数字逻辑可以实现任何东西,从简单的UART到由数十个CPU内核组成的架构,每个CPU内核都运行自…

Cisco交换机SSH使用RSA公钥免密登录(IOS与Nexus,服务器以RHEL8为例)

目录 需求实验步骤0. 实验环境1. Linux2. CiscoIOS基础设置保存密钥登陆测试 3. CiscoNexus基础配置保存密钥登陆测试 需求 在实际工作中,常会遇到自动化的需求,那么在自动采集、配置等对网络设备的自动化需求中,不可避免的会遇到需要登录-&…

DALL-E 2: 重新定义图像生成的人工智能|深度学习|图像生成|Transformer|创意设计|艺术创作|图像优化|数据偏见|计算资源|精度|跨领域融合

目录 1. DALL-E 2 的技术原理 1.1 深度学习与Transformer架构 1.2 文本编码与图像生成 2. DALL-E 2 的应用场景 2.1 创意设计与广告行业 2.2 教育与科研 2.3 艺术创作 3. DALL-E 2 的实际操作 3.1 简单示例 3.2 图像优化与微调 4. DALL-E 2 的挑战与未来展望 4.1 数…

15.3 模型评估与调优

欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏: 工💗重💗hao💗:野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来:详细讲解AIGC的概念、核心技术、应用领域等内容。 ⭐…