2. STM32CubeMX开发环境搭建:安装STM32CubeMX、安装STM32CubeIDE、配置STM32CubeMX固件包、创建第一个STM32工程模板
好,咱们正式开始动手了。
做嵌入式AI,说白了就是让单片机学会“思考”。但思考之前,得先把“纸”和“笔”准备好。这个章节,我就带你一步步把STM32的开发环境搭起来。
别小看这一步。我见过太多新手,代码写了一半发现编译器报错,最后查出来是环境没配好。嗯,咱们别走这个弯路。
2.1 安装STM32CubeMX:图形化配置利器
STM32CubeMX是什么?你可以把它理解成一个“图形化配置向导”。以前配单片机外设,得翻几百页的参考手册,对着寄存器一个个写。现在?点点鼠标就行了。
我个人习惯,先装CubeMX,再装IDE。因为CubeMX生成的代码,可以直接导入到IDE里用。
安装步骤:
- 去ST官网(www.st.com)搜索“STM32CubeMX”。注意,别下错了版本,要选最新的稳定版。
- 下载后双击安装包。嗯,这里有个坑——安装路径不要有中文。我曾经帮一个学员远程调试,折腾了半天,最后发现是他的用户名是中文,导致路径乱码。
- 一路Next,直到Finish。安装过程会自动注册一些环境变量,不用管它。
小技巧:安装完成后,建议把CubeMX的快捷方式固定到任务栏。后面你会频繁用到它。
2.2 安装STM32CubeIDE:一站式开发平台
CubeMX负责配置,那谁来写代码、编译、下载呢?就是STM32CubeIDE了。
它基于Eclipse,但ST做了深度定制。说白了,就是给你一个“全家桶”,不用再自己去拼凑编译器、调试器了。
注意:CubeIDE自带编译器,所以不需要额外安装Keil或IAR。但如果你之前装了别的IDE,可能会有环境变量冲突。我建议先卸载旧的,或者至少把CubeIDE装在一个干净的目录里。
安装过程跟CubeMX类似:
- 从官网下载安装包(大约1GB左右,耐心等)。
- 双击安装,选择安装路径。还是那句话——不要中文路径。
- 安装过程中会提示选择工作空间(Workspace)。我习惯把它放在D盘,跟项目分开,这样重装系统时不会丢配置。
2.3 配置STM32CubeMX固件包
环境装好了,但还没完。你得让CubeMX知道“我有哪些芯片可以用”。这就需要下载固件包。
固件包是什么?就是ST官方提供的HAL库、LL库、中间件等。没有它,CubeMX生成的代码就是一堆空壳。
配置步骤:
- 打开CubeMX,点击菜单栏的 Help → Manage embedded software packages。
- 在弹出的窗口中,你会看到所有支持的芯片系列。比如我们常用的STM32F4、STM32L4、STM32H7等。
- 勾选你需要的系列,点击“Install”。下载速度可能有点慢,毕竟服务器在国外。我建议你选一个网络好的时间段,或者用手机热点试试。
避坑指南:我曾经一次性勾选了所有系列,结果下载了整整一个下午。其实你只需要下载自己手头芯片对应的包就行。比如你用STM32F407,就只下载STM32F4的包。
下载完成后,你会看到每个系列后面有个绿色的勾。这就表示固件包已经就绪了。
2.4 创建第一个STM32工程模板
好了,万事俱备。咱们来创建第一个工程。这一步走通了,后面的AI实战才有基础。
创建步骤:
- 打开CubeMX,点击 File → New Project。
- 在“Board Selector”标签页里,你可以直接搜索你的开发板型号。比如我手头有块NUCLEO-F411RE,直接输入“NUCLEO-F411”就能找到。
- 如果没有开发板,选“MCU Selector”,然后手动选择芯片型号。比如STM32F411CEU6。
- 点击“Start Project”,进入配置界面。
配置界面里,你会看到芯片的引脚图。嗯,这里先别急着改。咱们先做最基础的配置:
- 时钟配置(Clock Configuration): 点一下“HCLK”输入框,输入你想要的频率(比如100MHz),CubeMX会自动帮你算好分频系数。如果算不出来,它会报红,你调整一下就行。
- 外设配置(Pinout & Configuration): 比如你想用串口,就在左侧列表里找到USART1,模式选“Asynchronous”。引脚会自动分配,不用你手动去查。
- 工程设置(Project Manager): 这里要填项目名称、路径、IDE类型。IDE类型选“STM32CubeIDE”,这样生成的代码可以直接用CubeIDE打开。
注意:生成代码前,一定要检查一下“Toolchain Folder”路径。我习惯把路径设成 D:/STM32_Projects/MyFirstProject,这样好管理。
最后,点击右上角的 GENERATE CODE。等几秒钟,代码就生成好了。
打开CubeIDE,选择工作空间,然后 File → Import → Existing Projects into Workspace,找到刚才生成的文件夹,导入。你会看到左侧的项目结构:
MyFirstProject/
├── Core/
│ ├── Inc/ // 头文件
│ └── Src/ // 源文件
├── Drivers/
│ ├── CMSIS/ // 内核相关
│ └── STM32F4xx_HAL_Driver/ // HAL库
├── .cproject
├── .project
└── *.ioc // CubeMX配置文件
双击 main.c,你会看到熟悉的 while(1) 循环。嗯,到这里,你的第一个STM32工程模板就创建成功了。
个人经验:第一次编译可能会报一些警告,比如“未使用的变量”。别慌,这是正常的。你可以在CubeIDE的设置里把警告等级调低,或者直接忽略。重点是确保编译通过,没有error。
好了,环境搭好了,模板也建好了。下一章,咱们就开始往这个模板里塞AI模型了。你想想看,一个能跑神经网络的单片机,是不是很酷?