真.从“零”搞 VSCode+STM32CubeMx+C <1>构建

目录

前言

准备工作

创建STM32CubeMx项目

VSCode导入项目&配置

构建错误调试

后记


前言

       去年10月开始接触单片机,一直在用树莓派的Pico,之前一直用Micropython,玩的不亦乐乎,试错阶段优势明显,很快就能鼓捣一些小玩意出来。这两天准备往“C+STM32”的路线走一走,也是因为市场上还是这个路线比较通用。

准备工作

  • 开发工具1:STM32CubeMx,用于生成项目及基础代码,我理解就是把依赖都弄好,毕竟是人家官方的开发工具。
  • 开发工具2:VSCode,装插件,主要是C和EIDE这两个插件,原来还不知道为啥要多加个VSCode,直到我第一次运行STM32CubeMx,实在不知道点哪里,上手有点难度,而且巨慢,时不时报个错,但是能用,我这是新装的WIN10,没有乱七八糟的软件。
  • 其实这个组合就是一个亲爹负责生出来,后爹负责养育,后边只要改依赖什么的都需要亲爹重新生成一下子。
  • STM32单片机一个:我之前买了4个,拿看着最简单的先来试试,STM32F103C8T6。
  • STM32CubeMx注册账号一个,下载需要,另外创建项目的时候需要下载相关的依赖,也需要。

创建STM32CubeMx项目

  • 打开软件,第一次打开无所适从,最后选的红框处

  • 脑袋嗡嗡的,最后按箭头所指摸索的

  • 默认进到的页面选针脚,单片机领域的HelloWorld都是点灯

  • 然后选Project Manager,我主要是奔着Makefile来的,第三个框选的就是这个,中间的框好像是默认的,不确定是否对后续的操作有无影响。

VSCode导入项目&配置

  • 这个直接打开STM32CubeMx创建的项目没有反应,我就又创建了EIDE项目,然后把所有文件都拷贝到这个新目录里,然后就开始各种找资料,没有一个准确的,但是思路基本有了。需要配置如图红框处的内容,这些都是拷贝过来的,需要人工指定一下。

  • 最后两个框,在Makefile文件中找

构建错误调试

  • 配置好了就可以点构建了
  • 哈,噼里啪啦一通报错,大概有两种情况

1.引入了不该引入的内容,如:

stm32f1xx_hal_timebase_rtc_alarm_template.c:73:1: error: unknown type name 'RTC_HandleTypeDef'; did you mean 'DMA_HandleTypeDef'?
   73 | RTC_HandleTypeDef        hRTC_Handle;
      | ^~~~~~~~~~~~~~~~~
      | DMA_HandleTypeDef

2.Gcc版本问题,如:

c:/users/administrator/.eide/tools/gcc_arm/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/ld.exe:d:/A_WorkPlaces/C/NewProject1/STM32F103XX_FLASH.ld:105: non constant or 
forward reference address expression for section .ARM.extab
collect2.exe: error: ld returned 1 exit status

  • 问题1解决,禁用掉报错的文件,都是模板文件,不会有无问题:

  • 问题2解决,是因为eide自动装的Gcc是版本10,而生成的文件是Gcc11的,可以先看看自己系统是用的哪个版本,然后修改生成文件,看注释删掉“(READONLY)” 连括号一块删,我的一共五个,另外注意,“.ARM :”的ARM和冒号之间要有空格,不然也要报错!

  • 再次执行构建,成功!

后记

花了大概三个小时,中途卡点有点多,好在晕晕乎乎编译成功了,下一篇继续。

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

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

相关文章

C语言学习之结构体

在C语言中,我们已经学了好几种类型的数据。比如整型int、char、short等,浮点型double、float等。但是这些都是基本数据类型,而这些数据类型应用在实际编程里显然是不够用的。比如我们没有办法用一旦数据类型来定义一个”人“的属性。因此这里…

架构-计算机系统基础

计算机系统基础 一、计算机系统组成 (一)计算机系统层次结构 硬件组成 主机:包含CPU(运算器控制器)、主存储器(内存)。外设:输入设备、输出设备、辅助存储器(外存&…

【计算机网络性能优化】从基础理论到实战调优

目录 前言技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块说明技术选型对比 二、实战演示环境配置要求核心代码实现案例1:iPerf3带宽测试案例2:TCP窗口优化案例3:QoS流量整形 运行…

Python 自动化办公:Excel 数据处理的“秘密武器”

引言 在日常的 IT 办公场景里,Excel 是数据处理与分析的 “常胜将军”。无论是财务人员整理账目、销售团队统计业绩,还是运营人员分析用户数据,Excel 都发挥着关键作用。但面对海量数据,手动操作 Excel 不仅效率低下,还…

缓存集群技术深度解析:从原理到实战

缓存集群技术深度解析:从原理到实战 一、缓存集群核心定位与架构选型 1. 集群模式核心价值 缓存集群通过数据分片、高可用保障、水平扩展解决单节点瓶颈,核心能力包括: 数据分片:将数据分散到多个节点,突破单节点内…

CSDN编辑文章时如何自动生成目录

如何自动生成目录 前置条件1. 插入目录标识符2. 编写标题层级 前置条件 需要使用markdown编辑,并且只有按照markdown语法编写不同的标题级别,才能使用这个方法自动生成对应的目录。 1. 插入目录标识符 在文章的顶部添加以下代码: [TOC](文…

产品经理对于电商接口的梳理||电商接口文档梳理与接入

接口梳理7个注意点总结 ①注意要测试环境和生产环境。生产上线时候要提醒研发换到生产环境调用。 ②注意必输字段和选输字段,要传入字段的含义和校验。枚举值不清楚含义的要询问对方含义,比如说单据类型字段枚举值是B2C发货单,BBC发货单&am…

更快的图像局部修改与可控生成:Flex.2-preview

Flex.2-preview 文本生成图像扩散模型介绍 一、模型简介 Flex.2-preview 是一种 开源的 80 亿参数文本生成图像扩散模型,具备通用控制和修复支持功能,是 Flex.1alpha 的下一代版本。该模型由社区开发并为社区服务,采用 Apache 2.0 许可证&a…

【Castle-X机器人】一、模块安装与调试:机器人底盘

持续更新。。。。。。。。。。。。。。。 【ROS机器人】模块安装 一、Castle-X机器人底盘1.1 结构概述1.2 驱动执行结构1.3 环境传感器1.4 电气系统1.5 Castle-x机器人底盘测试激光雷达传感器测试及数据可视化超声波传感器实时数据获取防跌落传感器测试陀螺仪测试键盘控制测试…

条件、列表渲染.

#### v-for 1. 渲染列表 vue <template> <ul v-for"(item,index) in list" > <li>{{ item }}</li> </ul> </template> <script setup> import { ref } from vue; let list ref([苹果, 香蕉, 橙子]) </script>…

node20的安装和vue的入门准备

一、node20的安装 直接下载路径&#xff1a;https://nodejs.org/download/release/v20.11.0/node-v20.11.0-x64.msi 安装&#xff0c;双击msi文件 点击同意协议 更改下载路径 什么也不用选&#xff0c;点击next进行下一步 什么也不用选&#xff0c;点击next进行下一步 点击安…

从 Java 到 Kotlin:在现有项目中迁移的最佳实践!

全文目录&#xff1a; 开篇语 1. 为什么选择 Kotlin&#xff1f;1.1 Kotlin 与 Java 的兼容性1.2 Kotlin 的优势1.3 Kotlin 的挑战 2. Kotlin 迁移最佳实践2.1 渐进式迁移2.1.1 步骤一&#xff1a;将 Kotlin 集成到现有的构建工具中2.1.2 步骤二&#xff1a;逐步迁移2.1.3 步骤…

威雅利电子|业界领先的高隔离度用于5G基站的吸收式SPDT开关“NT1819“

业界领先的高隔离度 用于5G基站的吸收式SPDT开关"NT1819" 为了实现智能社会&#xff0c;已经启动了5G服务。这样&#xff0c;高速、低延迟、大容量的数据通信成为可能&#xff0c;也给我们的生活和工业发展带来了巨大的变化。 在5G基站有很多天线&#xff0c;每个天…

Diamond软件的使用--(6)访问FPGA的专用SPI接口

1.什么是FPGA的专用SPI接口&#xff1f; 此处的SPI FLASH接口即为FPGA的专用SPI接口&#xff0c;上电时&#xff0c;FPGA从该FLASH读出程序并运行。 2.访问SPI PROM需要注意哪些地方&#xff1f; 1&#xff09;处于MASTER SPI MODE 2&#xff09;调用USRMCLK原语&#xff0c;…

Go 语言中的 `select` 语句详解

select 是 Go 语言中处理通道(Channel)操作的一个强大控制结构&#xff0c;它允许 goroutine 同时等待多个通道操作。下面我将全面详细地解释 select 语句的各个方面。 基本语法 select 语句的基本语法如下&#xff1a; select { case <-ch1:// 如果从 ch1 成功接收数据&…

AI如何重塑CC防护行业?五大变革与实战策略解析

一、CC防护行业的技术痛点与AI的破局方向 CC攻击&#xff08;Challenge Collapsar&#xff09;作为一种以高频合法请求消耗服务器资源的DDoS攻击手段&#xff0c;传统防护技术面临三大核心挑战&#xff1a; 规则依赖性强&#xff1a;基于IP封禁或请求频率的静态规则易被绕过&a…

GPT-4o最新图像生成完全指南:10大应用场景与提示词模板

引言 OpenAI于近期推出的全新GPT-4o图像生成功能&#xff0c;代表了AI图像创作领域的重大突破。作为一个原生多模态系统&#xff0c;GPT-4o将文本理解和图像生成无缝整合&#xff0c;为创作者、教育工作者和专业人士提供了前所未有的视觉创作灵活性。本文将分享10个GPT-4o图像…

Linux驱动开发2 - 内核定时器驱动

背景 所有驱动开发都是基于全志T507&#xff08;Android 10&#xff09;进行开发&#xff0c;用于记录驱动开发过程。 简介 定时器是比较常用的一个功能&#xff0c;用来执行周期性任务。一般不太精确的定时可以用系统提供的延时函数进行。如果需要进行较为精确的延时&#…

Dify 使用 excel 或者 csv 文件创建知识库

Dify 使用 excel 或者 csv 文件创建知识库 1. 创建知识库2. 创建聊天助手3. 其他 1. 创建知识库 创建知识库&#xff0c;导入excel/csv文件&#xff0c; 文件内容&#xff0c; 单击 “预览块”&#xff0c;可以确认会生成多个键值对的块&#xff0c; 配置 Embedding 模型和检索…

23种设计模式-行为型模式之迭代器模式(Java版本)

Java 迭代器模式&#xff08;Iterator Pattern&#xff09;详解 &#x1f9e0; 什么是迭代器模式&#xff1f; 迭代器模式是一种行为型设计模式&#xff0c;它提供一种方法顺序访问一个聚合对象中的各个元素&#xff0c;而不暴露该对象的内部表示。 &#x1f3af; 使用场景 …