第一讲:课程导学与开发环境搭建
各位同学好,我是你们这门课的主讲工程师。说实话,每次带新人入门嵌入式AI,我最怕的就是环境搭建这一步——明明很简单的事,偏偏能卡住好多人。今天咱们就把这事彻底捋顺。
先说说这门课到底要干嘛。你想想看,传统的STM32开发,无非就是点灯、读传感器、跑个RTOS。但现在的趋势是什么?是把AI模型塞进MCU里,让设备自己学会判断。比如用加速度计数据做跌倒检测,或者用麦克风做关键词唤醒——这些就是咱们这门课要搞定的东西。
1.1 课程目标:你到底能学到什么?
我个人习惯把目标拆成三个层次:
- 第一层:工具链玩溜——CubeMX配CubeIDE,加上STM32CubeAI这个AI插件,你得知道它们怎么协作。我记得第一次用CubeAI时,光找那个插件入口就花了十分钟...后来发现其实就在CubeMX的菜单里。
- 第二层:传感器数据怎么喂给AI——B-L475E-IOT01A这块板子上有加速度计、陀螺仪、温湿度传感器、麦克风、距离传感器...你得知道怎么把这些数据整理成AI模型能吃的格式。
- 第三层:模型部署与调优——训练好的模型怎么转成STM32能跑的代码?推理速度不够怎么办?这些坑我都会带你们踩一遍。
核心目标就一句话:让你能独立完成一个“传感器采集→AI推理→控制输出”的完整闭环。
1.2 开发环境搭建:先把家伙事儿备齐
工欲善其事,必先利其器。咱们需要装三个东西:
1.2.1 STM32CubeMX——图形化配置神器
说白了,这就是个“点鼠标生成代码”的工具。你选好芯片型号,配好引脚功能,设置好时钟树,它就能给你生成初始化代码。我在项目中遇到过最爽的一次,是帮客户从F4系列迁移到H7系列,CubeMX里改个型号,重新生成一下,80%的代码直接复用。
安装要点:
- 去ST官网下载最新版(目前是6.x版本)
- 安装时记得勾选“添加环境变量”
- 需要Java运行环境(它会自动提示你装)
小技巧:CubeMX的固件包下载很慢。我建议你第一次打开时,直接去“Help→Manage embedded software packages”里,只勾选你需要的系列(比如STM32L4),别全选,不然能下一天。
1.2.2 STM32CubeIDE——集成开发环境
这个IDE是基于Eclipse魔改的,集成了编译器、调试器、代码编辑功能。你可能会问:为什么不用Keil或者IAR?嗯,这里要注意——CubeIDE是免费的,而且和CubeMX无缝衔接。你从CubeMX生成的项目,可以直接在CubeIDE里打开编译调试,省去很多配置的麻烦。
安装注意:
- 建议安装最新版本(目前是1.15.x)
- 安装路径不要有中文和空格
- 第一次启动会提示安装工具链,全部默认即可
避坑指南:我曾经因为安装路径带了“(中文)”这种括号,结果编译时死活找不到头文件。折腾了两小时才发现是路径编码问题。所以——路径纯英文,切记。
1.2.3 STM32CubeAI工具链——AI模型转C代码的核心
这是咱们这门课的“灵魂工具”。它的作用很简单:把你用TensorFlow或Keras训练好的模型(.h5或.tflite格式),转换成能在STM32上跑的C语言代码。
安装方式有两种:
- 作为CubeMX的插件:在CubeMX的“Help→Manage embedded software packages”里,找到“X-CUBE-AI”并安装
- 独立安装:去ST官网下载STM32CubeAI的独立安装包
我个人推荐用插件方式,因为这样在CubeMX里配置AI模型时,流程更顺畅。
| 工具 | 版本建议 | 主要作用 |
|---|---|---|
| STM32CubeMX | 6.8+ | 硬件配置、引脚分配、时钟设置 |
| STM32CubeIDE | 1.15+ | 代码编辑、编译、调试 |
| X-CUBE-AI | 8.0+ | AI模型导入、转换、优化 |
1.3 硬件平台准备:B-L475E-IOT01A
这块板子我特别喜欢,为什么呢?因为它几乎把常用的传感器都集成了。你想想看,不用自己飞线、不用自己焊板子,直接就能开始搞AI,多省心。
板载资源一览:
- 主控:STM32L475VG(Cortex-M4,80MHz,1MB Flash)
- 运动传感器:LSM6DSL(加速度计+陀螺仪)
- 磁力计:LIS3MDL
- 气压计:LPS22HB
- 温湿度:HTS221
- 距离传感器:VL53L0X(激光测距)
- 麦克风:MP34DT01(数字麦克风)
- 无线:WiFi模块(ISM43362)、NFC、蓝牙
说实话,这块板子就是为物联网AI应用量身定做的。我在做工业设备预测性维护项目时,就用它采集振动数据,然后跑一个简单的异常检测模型,效果出奇的好。
硬件连接要点:
- 用USB线连接板子上的ST-Link USB口(不是旁边的USB OTG口)
- 第一次连接会自动安装驱动,如果失败,去ST官网下载ST-Link驱动
- 板子上有个跳线帽(JP1),用来选择供电方式,默认USB供电即可
1.4 第一个实验:点亮LED并打印“Hello AI”
咱们不搞虚的,直接上手。这个实验的目的就是验证整个工具链是否打通。
步骤简述:
- 打开CubeMX,新建项目,选择B-L475E-IOT01A
- 配置LED引脚(板子上有4个LED,分别是LD1~LD4,对应PB14、PB15、PE8、PE9)
- 配置USART2(用于串口打印,连接到ST-Link的虚拟串口)
- 生成代码,在CubeIDE中打开
- 在main函数中,添加LED闪烁和串口打印代码
// 在main.c的while(1)循环中添加
HAL_GPIO_TogglePin(LD1_GPIO_Port, LD1_Pin);
printf("Hello AI! This is STM32CubeAI course.\r\n");
HAL_Delay(500);
编译下载后,你会看到板子上的LED以1秒频率闪烁,同时串口助手会收到“Hello AI”的消息。嗯,到这里,你的开发环境就算彻底搭好了。
提示:如果printf不输出,记得在CubeMX的USART2配置中,把“NVIC Settings”里的USART2中断使能打开。另外,在CubeIDE的项目设置里,勾选“Use MicroLIB”——这个坑我踩过,不勾的话printf会死机。
1.5 本章小结
咱们这一讲,把课程目标、工具安装、硬件准备都过了一遍。你可能会觉得内容有点多,但别急——环境搭建这种事,一次搞定后面就顺畅了。下一讲,咱们就开始真正接触传感器数据采集,把B-L475E上的加速度计用起来。
最后说一句:如果安装过程中遇到任何问题,别硬扛。去ST社区搜一下,或者直接问我。我记得当年自己啃这些工具时,光一个驱动问题就折腾了两天...现在想想,真没必要。
好了,咱们下一讲见。