2. 开发环境搭建:从零开始,跑通第一个AI例程
说实话,很多同学卡在环境搭建这一步。不是工具难装,是版本匹配太容易踩坑。我刚开始用X-CUBE-AI时,光装包就折腾了两天——后来发现是CubeMX版本太老,跟扩展包对不上。
这一章,咱们把环境捋顺。跟着我的步骤走,半小时内让板子跑起来。
2.1 工具链全景图
先搞清楚我们要装哪些东西。别急着下载,心里有个谱再动手。
说白了,就是三件套:CubeMX做配置,X-CUBE-AI塞模型,IDE编译下载。板子嘛,NUCLEO或Discovery都行。
2.2 安装STM32CubeMX
这个最简单,去ST官网下载最新版。我个人习惯用1.14.0以上版本,对AI扩展包支持更稳。
C:\STM32CubeMX 最省心。
装完后,打开软件。你会看到主界面——别慌,我们只关心两个地方:
- File → New Project:新建工程
- Help → Manage embedded software packages:管理扩展包
2.3 安装X-CUBE-AI扩展包
这一步是重点。X-CUBE-AI是ST官方的AI工具包,负责把训练好的模型转成STM32能跑的代码。
操作步骤:
- 打开CubeMX,点击 Help → Manage embedded software packages
- 在弹出窗口里,找到 X-CUBE-AI 这一行
- 勾选你需要的版本(我建议选最新稳定版,比如8.1.0)
- 点击 Install,等它下载完
装完后,你可以在 Installed 标签页看到它。如果没出现,点一下 Refresh 按钮。
2.4 开发板准备与验证
板子我推荐 NUCLEO-F746ZG 或 NUCLEO-H743ZI。为什么?因为AI模型对算力有要求,F4以下跑起来太吃力。我自己项目里用的最多的是F746,性价比高。
| 开发板型号 | 内核 | Flash | RAM | 适合场景 |
|---|---|---|---|---|
| NUCLEO-F401RE | Cortex-M4 | 512KB | 96KB | 轻量级模型(<10KB) |
| NUCLEO-F746ZG | Cortex-M7 | 1MB | 320KB | 中等模型(10-100KB) |
| NUCLEO-H743ZI | Cortex-M7 | 2MB | 1MB | 复杂模型(>100KB) |
拿到板子后,先做一件事:验证板子本身是好的。别等代码写完了才发现板子有问题。
验证步骤:
- 用USB线连接板子到电脑
- 板子上的绿色LED应该常亮或闪烁(出厂预装程序)
- 电脑设备管理器里出现 ST-Link 设备
- 打开CubeMX,点击 File → New Project,选择你的板子型号
- 随便配一个GPIO输出,生成代码,编译下载
- 看板子上的LED是否按你预期亮灭
避坑指南: 我曾经遇到过ST-Link驱动没装好,设备管理器里显示黄色感叹号。解决办法是去ST官网下载 ST-Link USB driver 重装。别用Windows自动更新,那个经常装不对。
2.5 跑通第一个AI例程
环境搭好了,咱们来点真格的。CubeMX自带了一些AI示例,我们拿一个最简单的 手势识别 来验证。
操作流程:
- 新建工程,选你的板子型号
- 在 Software Packs 里勾选 X-CUBE-AI
- 在 Pinout & Configuration 里找到 X-CUBE-AI 选项卡
- 点击 Add Network,选择预置的 Gesture_Recognition 模型
- 配置串口(USART2,波特率115200)用于打印结果
- 生成代码,编译,下载到板子
- 打开串口助手,对着板子做手势(左右挥动),看输出
如果串口打印出类似 Gesture: Left 或 Gesture: Right 的信息,恭喜你——环境搭建成功!
我个人的小习惯: 第一次跑通后,我会把整个工程文件夹备份一份。后面做模型替换时,直接复制这个工程改,省得重新配外设。你想想看,每次配串口、配时钟多麻烦,一次配好,后面只管换模型。
2.6 常见问题速查
嗯,这里我把踩过的坑列出来,你遇到了直接对照:
| 问题现象 | 可能原因 | 解决办法 |
|---|---|---|
| CubeMX找不到X-CUBE-AI | 版本不匹配或未安装 | 升级CubeMX到最新版,重新安装扩展包 |
| 编译报错:找不到头文件 | 工程路径有中文或空格 | 重建工程,路径全英文 |
| 下载失败:No ST-Link detected | 驱动问题或USB线坏了 | 重装ST-Link驱动,换USB线 |
| 串口打印乱码 | 波特率不匹配 | 检查CubeMX里配的波特率是否和串口助手一致 |
| AI模型推理结果全为0 | 输入数据格式不对 | 检查模型输入尺寸和实际数据是否匹配 |
我曾经有一次,模型推理结果全是0,查了两天。最后发现是输入数据的字节序搞反了——STM32是小端,我喂的数据是大端。这种细节,你不踩一次坑真记不住。
2.7 本章小结
到这步,你的开发环境应该已经跑通了。我们装了CubeMX、X-CUBE-AI,验证了板子,还跑了个手势识别的例程。说白了,后面的所有模型压缩和性能调优,都建立在这个环境之上。