当前位置: 首页 > ai >正文

真.从“零”搞 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.xdnf.cn/news/1587.html

相关文章:

  • simsun.ttf simsun.ttc
  • 第15章:MCP服务端项目开发实战:性能优化
  • 基于SpringBoot+Vue的影视系统(源码+lw+部署文档+讲解),源码可白嫖!
  • 从零搭建高可用分布式限流组件:设计模式与Redis令牌桶实践
  • 安宝特案例 | 物流仓储头部企业应用AR+作业流,规范日常安全点检,保障消防安全
  • Java面试实战:电商场景下的Spring Cloud微服务架构与缓存技术剖析
  • 如何在 Docker 中搭建 Redis 集群
  • 一键多环境构建——用 Hvigor 玩转 HarmonyOS Next
  • volatile怎么保证可见性和有序性?(个人理解)
  • [特殊字符]️ 基于Pytest的自动化测试框架架构解析
  • 大数据运维面试题
  • CF每日4题
  • hive默认的建表格式
  • Flink介绍——实时计算核心论文之Flink论文
  • Linux:进程的创建进程的终止
  • VSCode如何修改默认扩展路径和用户文件夹目录到其他盘以及微信开发工具如何修改扩展路径到其他盘
  • 倚光科技:柱面透镜加工工艺详解,解锁光学新境界
  • “广州丰田汽车.网址”中文域名仲裁案:“网络门牌”保护战
  • 数字IC后端项目典型问题之后端实战项目问题记录(2025.04.24)
  • C++内存管理那些事
  • 身份证实名认证接口数字时代的信任基石-node.js实名认证集成
  • Docker部署一款开源的极简服务器监控工具Ward内网穿透远程使用
  • AXP2101入门
  • 向量检索新选择:FastGPT + OceanBase,快速构建RAG
  • 【Promethus(普罗米修斯)介绍安装及使用】
  • Python----深度学习(基于深度学习Pytroch线性回归和曲线回归)
  • 【Nginx】Nginx 最新稳定版本(1.28.0)发布
  • ASP.NET MVC​ 入门指南
  • 数据结构【树和二叉树】
  • 无过拟合的记忆:分析大语言模型的训练动态