STM32的个人备忘录
STM32CubeIDE的安装及配置注意事项
-
安装包要选通用版(即
Generic Linux),不要选细分类系统(例如Debian系)的版本, 否则当细分类系统里的包管理器出现问题(例如用户权限问题、沙盒限制等等)时,STM32CubeIDE的安装也会出现问题。 -
不要盲追最新版(尤其是重大变化的版本),而是选择一个日期较新的里程碑版本之前的一个版本, 例如在
2.0.0之前最后一个版本是1.19.0,可以考虑选它——原因是足够新(发布时间是2025年6月份), 已经适配了Ubuntu 24.04(本节内容撰写于2026年10月下旬,虽然Ubuntu 26.04亦已发布,但仍然很新), 又不似2.x版本那样可能隐藏重大缺陷。值得一提的是,再往前推的版本有1.18.1和1.18.0, 若在两者之间选择的话,肯定是选1.18.1,因为它一定是在1.18.0的基础上修复了一些缺陷,相对更稳定。 -
安装的时候优先以普通用户的身份去运行安装脚本。若报错,先用
sudo去随便执行一条命令, 然后再重复前述的安装——这种做法令人略为费解,但实测是可行的,详细原因以后可能会补充。 只有当前面两种方式都失败,才考虑加上sudo去安装——这种方式往往会引发权限问题,后续需要执行某些补救措施, 但具体是哪些措施需要视实际报错而定。 - 安装完毕,最好进行一些设置:
- 禁止数据收集:可供参考的菜单路径:在
Window->Preferences->STM32Cube->End User Agreements页面, 取消对Help STMicroeletronics improve its products的勾选。 - 关闭自动更新:可供参考的菜单路径:在
Window->Preferences->Install/Update->Automatic Updates页面, 取消对Automatically find new updates and notify me的勾选。再在同级的Available Software Sites页面, 取消对与所有ST相关的在线更新站点的勾选。 - 使用离线模式:可供参考的菜单路径:在
Window->Preferences->STM32Cube->Firmware Updater页面, 勾选Off Line Mode。 - 离线安装固件包(用于自动生成代码):可供参考的菜单路径:
Help->Configuration Tool->Manage Embedded Software Packages页面,找到并点击From Local按钮, 定位到事先下载好的压缩包进行安装即可。至于固件包的下载方法,可按以下步骤来操作:- 在刚才那个页面,切换到
STM32Cube MCU Packages标签页,即可看到所有系列的MCU。 手动展开其中一个系列并勾选某一项,即可看到具体软件包的全称,但这个全称对于全新的官网已用处不大, 反而用简称来搜索更简单,详见下一步骤。 - 以
F1系列为例,在ST官网首页的搜索框输入STM32F1(可搜与该系列相关的所有东西) 或STM32CubeF1(主要搜软件包),在搜索结果寻找并进入相应的页面去下载即可。 这里给出一个链接示例:https://www.st.com/zh/embedded-software/stm32cubef1.html - 还有另一种方法,就是在STM32软件生态系统汇总页直接查找, 但这个页面不一定永久有效,若失效则使用前一个更通用的方法即可。
- 在刚才那个页面,切换到
- 禁止数据收集:可供参考的菜单路径:在
-
自定义代码模板:可供参考的菜单路径:
Window->Preferences->C/C++->Code Style->Code Templates。TODO:模板内容待补充。 - 值得一提的是,以上的很多设置,与其说是
STM32CubeIDE独有的,不如说是在Eclipse基础上所做的二次改造, 因而很多操作都可以参考Eclipse的,只不过具体的菜单路径可能有所不同。其他基于Eclipse开发的IDE亦同理。
创建工程的的必要步骤(基于STM32CubeIDE)
-
选择
驱动类型:打开*.ioc,依次点击Project Manager->Advanced Settings,根据界面的提示, 对相应项选择HAL或LL即可。注意:在设置并保存之后,若没有自动弹出询问是否生成代码的对话框, 则需要手动对*.ioc右击,然后点击Generate Code来触发生成动作,后续需要修改*.ioc的步骤亦同理。 - 配置
时钟:打开*.ioc,然后:- 切换到
Pinout & Configuration页面,先(在Pinout view标签页)将对应的时钟引脚设置成接外部晶振的状态, 再依次点击System view->RCC,找到RCC Mode and Configuration,为High Speed Clock (HSE)选择Crystal/Ceramic Resonator。 - 切换到
Clock Configuration页面,根据界面的提示,设置好时钟路径、倍频参数、分频参数, 即可实时看到各路时钟的最终频率。
- 切换到
- 创建
用户代码目录:- 对工程右击,依次选择
New->Source Folder,目录名填User,最后点击Finish按钮。 - 右击该目录,选择
Add/remove include path...,将其加入编译器可搜索的头文件目录列表。
- 对工程右击,依次选择
-
创建
业务入口代码:在User目录下创建biz_entry.h和biz_entry.c,并分别编写void do_biz(void)的声明和函数体, 然后在Core/Src/main.c文件主函数的死循环里进行调用。 -
创建
版本头文件:在User目录下创建versions.h,内容详见懒编程秘笈 的vim/templates/h.tpl.list/versions.tpl。 - 创建
纯内存烧录的链接脚本:- 将
STM32*_FLASH.ld复制一份,并重命名为STM32*_RAM.ld,然后将所有的>FLASH和>RAM AT> FLASH均改成>RAM。 - 对工程右击,依次选择
Properties->C/C++ Build->Settings->Tool Settings->MCU GCC Linker->General, 找到Linker Script (-T)并将方框内的STM32*_FLASH.ld改成STM32*_RAM.ld,最后点击Apply and Close按钮。 注意:仅当需要纯内存烧录时才执行此步骤,当用于生产环境时,还是要恢复成STM32*_FLASH.ld。
- 将
- 创建
makefile.init:- 在工程根目录下创建,内容详见懒编程秘笈
的
vim/templates/mk.tpl.list/stm32_init.tpl。 - 对工程右击,依次选择
Properties->C/C++ Build->Settings->Tool Settings->MCU GCC Compiler->Include paths, 找到Include files (-include)并新建一项"generated.h"(注意此处的文件名需要用英文双引号括起), 最后点击Apply and Close按钮。
- 在工程根目录下创建,内容详见懒编程秘笈
的
-
创建
扩展Makefile:在工程根目录下创建,名为Makefile,内容详见懒编程秘笈 的vim/templates/mk.tpl.list/stm32cubeide.tpl。 -
设置
构建版本。例如想要构建发布版本,可对工程右击,依次选择:Build Configurations->Set Active->Release。 - 在
内存文件系统上存放构建产物:可借助懒编程秘笈的scripts/set_mcu_project_tmpfs.sh脚本。
串口编程的陷阱
待补充。