1. 课程导论与硬件准备:STM32Cube AI生态概述、TFLite Micro简介、硬件平台选型与介绍、开发板开箱与调试器连接

1.1 这门课到底讲什么?

说实话,市面上讲AI部署的课程不少。但大多数要么跑在Linux大系统上,要么用着昂贵的开发板。真正能在STM32这种资源受限的MCU上跑起来的,少之又少。

我做了十年嵌入式,踩过不少坑。有一次客户要求在产品里加一个人脸检测功能,板子已经定死了——STM32F746,没有Linux,没有GPU。当时我翻遍了资料,最后靠TFLite Micro硬生生跑了起来。嗯,从那时起我就意识到:边缘AI的战场,其实就在这些小小的MCU上。

这门课的核心就三件事:

  • 怎么把训练好的模型塞进STM32
  • 怎么让它跑得快(硬件加速、算子优化)
  • 怎么让它跑得稳(内存管理、中断处理、功耗控制)

说白了,就是让AI在单片机上真正落地。

课程定位:面向有STM32基础、想入门边缘AI部署的嵌入式工程师。你需要懂C语言、了解基本的神经网络概念,但不需要会Python训练模型——我会提供预训练模型。

1.2 STM32Cube AI生态——不只是个工具包

STM32Cube AI是ST官方推出的一整套AI部署工具链。我刚开始接触时也觉得它就是个模型转换器,后来才发现它远不止如此。

它的核心组件包括:

组件 作用 我的评价
X-CUBE-AI 模型转换与代码生成 最核心,支持Keras/TFLite/ONNX
STM32CubeMX 硬件配置与初始化 必用,管脚/时钟/外设全靠它
STM32CubeIDE 集成开发环境 基于Eclipse,调试方便
STM32CubeMonitor 运行时数据可视化 调试神经网络输出时很有用

我个人习惯用X-CUBE-AI做模型转换,然后用CubeMX生成初始化代码,最后在CubeIDE里调试。这套流程走顺了,从模型到硬件跑起来,快的话半小时就能搞定。

一个小建议:别一上来就想着自己写推理代码。X-CUBE-AI生成的代码已经做了大量优化,包括内存池管理、算子融合、量化处理。你直接用它生成的API就行,比自己手写靠谱得多。

1.3 TFLite Micro——为MCU量身定做的推理引擎

TFLite Micro是TensorFlow Lite的微控制器版本。它和标准TFLite最大的区别是什么?

  • 内存占用极小:核心运行时只要16KB RAM,整个框架可以控制在100KB以内
  • 无操作系统依赖:裸机就能跑,不需要Linux或RTOS
  • 算子集精简:只保留MCU上能跑的算子,比如CONV_2D、DEPTHWISE_CONV_2D、FULLY_CONNECTED等
  • 静态内存分配:所有内存都在初始化时分配好,运行时不会动态申请

为什么选TFLite Micro而不是其他框架?我对比过几个方案:

框架 RAM需求 Flash需求 硬件加速支持 社区活跃度
TFLite Micro ~16KB ~100KB CMSIS-NN、STM32 Cube AI 高
TensorFlow Lite ~300KB ~500KB GPU/NPU 高
ONNX Runtime ~1MB ~2MB 有限 中
CMSIS-NN ~8KB ~50KB 仅ARM Cortex-M 中

你看,TFLite Micro在资源占用和生态支持上取得了很好的平衡。而且它和STM32Cube AI深度集成——X-CUBE-AI可以直接生成TFLite Micro的推理代码。

注意:TFLite Micro不是万能的。它不支持训练,只做推理。而且有些算子(比如LSTM、Attention)在MCU上跑不动,模型设计时就要避开。

1.4 硬件平台选型——为什么是H747和F746?

课程里我选了两块板子:STM32H747和STM32F746。为什么是它们?

先看参数对比:

参数 STM32H747 STM32F746
内核 Cortex-M7 + Cortex-M4双核 Cortex-M7单核
主频 480MHz (M7) / 240MHz (M4) 216MHz
Flash 2MB 1MB
RAM 1MB (SRAM) + 64KB (DTCM) 340KB (SRAM)
硬件加速 Neural Processing Unit (NPU) 无专用NPU
典型功耗 ~500mW (全速) ~300mW (全速)

选这两块板子的原因很简单:

  • H747代表高端路线——有NPU硬件加速,适合跑实时视频处理、人脸识别这类重负载任务
  • F746代表主流路线——没有NPU,全靠CPU+CMSIS-NN软件优化,适合成本敏感型产品

我在项目里用过H747做工业视觉检测,也用过F746做智能门锁。两块板子各有千秋,但都能跑TFLite Micro。

选板建议:如果你是初学者,我建议先用F746上手。它便宜、资料多、社区活跃。等把TFLite Micro的部署流程跑通了,再上H747体验硬件加速的快感。

1.5 开发板开箱与调试器连接

拿到板子后,别急着上电。先检查一下配件:

  • 开发板本体(H747 Discovery Kit 或 F746 Nucleo)
  • USB Type-C数据线(用于供电和调试)
  • 网线(H747 Discovery Kit带以太网口)
  • 摄像头模块(H747 Discovery Kit自带)

连接步骤其实很简单:

  1. 插USB线:把USB线连到开发板的ST-Link USB口(注意不是OTG口)
  2. 装驱动:Windows会自动识别ST-Link驱动,如果没识别,去ST官网下载ST-Link驱动
  3. 确认指示灯:板子上电后,红色电源灯常亮,绿色LED闪烁(出厂程序)
  4. 打开设备管理器:确认出现"STMicroelectronics STLink Virtual COM Port"和"STMicroelectronics STLink Debug"

我记得第一次用H747时,插上USB线发现电脑没反应。折腾了半天,原来是USB线的问题——有些线只能充电不能传数据。所以,一定要用带数据传输功能的USB线。

避坑指南:我曾经遇到过ST-Link固件版本太旧导致无法调试的情况。解决办法是下载STM32CubeProgrammer,用"Firmware Update"功能升级ST-Link固件。这一步建议开箱后先做。

1.6 知识体系总览

下面这张图是我自己整理的课程知识体系,你可以先有个整体印象:

STM32Cube AI与TFLite Micro部署知识体系 STM32Cube AI 与 TFLite Micro 部署知识体系 预训练模型 X-CUBE-AI 模型转换与量化 STM32CubeMX 初始化 + TFLite Micro 推理代码 软件优化 CMSIS-NN / 算子融合 / 内存池 硬件加速 NPU / DCMI / DMA / Chrom-ART STM32CubeIDE 编译/下载/调试 H747: 硬件加速路线 F746: 软件优化路线 课程覆盖全部流程 从模型到硬件全链路

这张图把课程的核心链路讲清楚了:从预训练模型出发,经过X-CUBE-AI转换量化,生成TFLite Micro推理代码,再结合STM32CubeMX的硬件初始化,最后在CubeIDE里编译调试。两条路线——H747走硬件加速,F746走软件优化——最终都落在同一个目标上:让AI在MCU上跑起来。

1.7 本章小结

这一章我们做了几件事:

  • 明确了课程目标——在STM32上部署TFLite Micro模型
  • 了解了STM32Cube AI生态的组成
  • 对比了TFLite Micro和其他推理框架的差异
  • 选定了H747和F746两块开发板
  • 完成了开箱和调试器连接