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

真.从“零”搞 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和冒号之间要有空格,不然也要报错!

  • 再次执行构建,成功!

后记

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

相关文章:

  • 明远智睿2351开发板:重塑嵌入式开发性价比新标杆
  • NC149KMP算法详解
  • 如何彻底卸载Android Studio?
  • 深度解析 LangChain、ReAct、ReROO 架构及其在 AI Agent 中的应用
  • node.js 实战——(Http 知识点学习)
  • EasyRTC音视频实时通话在线教育解决方案:打造沉浸式互动教学新体验
  • Oracle 11g RAC手动打补丁详细步骤
  • 240424 leetcode exercises II
  • 算法训练营第二天| 209.长度最小的子数组、59.螺旋矩阵II、区间和
  • Flink 消费 Kafka 数据流的最佳实践
  • 【激光雷达3D(7)】CenterPoint两阶段细化仅使用BEV特征;PV-RCNN两阶段细化使用体素特征;M3DETRTransformer统一多表征特征
  • 机器学习(7)——K均值聚类
  • 17.第二阶段x64游戏实战-人工遍历二叉树结构
  • 精益数据分析(20/126):解析经典数据分析框架,助力创业增长
  • Ollama工具调用(Tool Calls)业务应用案例
  • 各种各样的bug合集
  • 第一章:Model Context Protocol (MCP)
  • 【k8s】k8s是怎么实现自动扩缩的
  • 32BIT的SPI主机控制
  • 面试篇:Spring Boot
  • 上海银行一季度净赚逾62亿增2.3%,不良贷款率与上年末持平
  • 全品系停货?泸州老窖:暂未接到通知,常规调控手段
  • 中央空管办组织加强无人机“黑飞”“扰航”查处力度
  • 潘功胜在美谈关税:吁全球经济勿滑向“高摩擦、低信任”轨道
  • 吃饭睡觉打国米,如今的米兰把意大利杯当成宝
  • “全国十大考古”揭晓:盘龙城遗址、周原遗址入围