1. 课程导论与开发环境搭建

各位同学好,我是你们这门课的主讲。在嵌入式领域摸爬滚打了十几年,从最早的8051到现在的Cortex-M7,我见过太多工程师在边缘AI这个方向上「想干却不知从何下手」。今天咱们就把这第一块砖砌好。

边缘AI,说白了就是把人工智能算法从云端搬到设备本地。你想想看,一个摄像头如果每帧画面都要上传到服务器去识别,延迟、带宽、隐私全是问题。而STM32H743这种芯片,完全可以在本地跑轻量级神经网络——这就是我们要干的事。

核心认知:边缘AI不是要把云端的大模型硬塞进MCU,而是让算法适配硬件的边界。我见过太多人一上来就想跑ResNet-50,结果发现Flash和RAM根本装不下。选对模型、做对优化,才是实战的关键。

1.1 边缘AI概念与STM32AI生态

先聊聊边缘AI到底是什么。我个人的理解很简单:在数据产生的地方做推理。STM32H743这颗芯片,主频480MHz、2MB Flash、1MB RAM,还带双精度FPU和DSP指令集——这些资源足够跑一些轻量级的CNN模型了。

STM32的AI生态,我把它分成三层:

  • 工具链层:STM32CubeMX + X-CUBE-AI,负责把训练好的模型转换成STM32能跑的代码
  • 运行时层:STM32CubeAI Runtime,负责在芯片上执行推理
  • 硬件层:STM32H7系列,特别是带DSP和FPU的型号

我在项目中遇到过一个问题:同样的模型,在PC上推理只要5ms,移植到STM32上却要200ms。后来发现是量化没做好,模型权重还是float32的。嗯,这里要注意——STM32的AI优化,核心就是量化与算子优化。

我的建议:刚开始接触STM32AI的同学,别急着调模型。先把CubeMX的AI配置流程跑通,用官方提供的示例模型(比如手势识别、人检测)验证整个链路。我当年就是太心急,结果卡在模型转换这一步整整两天。

1.2 硬件平台:NUCLEO-H743ZI2

咱们课程用的板子是NUCLEO-H743ZI2。为什么选它?说白了,这是ST官方性价比最高的AI评估板之一。

参数 NUCLEO-H743ZI2 我的评价
主控 STM32H743ZIT6 Cortex-M7,480MHz,带双精度FPU
Flash 2MB 够放一个轻量级模型+应用代码
SRAM 1MB 做图像处理时刚好够用
摄像头接口 DCMI 可以直接接OV2640等摄像头模块
调试器 ST-LINK/V3 调试速度快,支持串口打印

这块板子我用了快三年。说实话,刚开始用H7系列时,我被它的时钟树绕晕过——480MHz怎么配出来的?PLL的N、M、R参数怎么算?后来发现,直接用CubeMX的时钟配置工具,选好外部晶振频率,它会自动帮你算好。别自己手算,容易出错。

避坑指南:我曾经在项目里直接用了HAL库的默认时钟配置,结果外设跑飞了。后来才发现,H7系列的AXI SRAM和TCM区域需要单独配置时钟使能。拿到板子第一步,先确认所有SRAM区域的时钟都打开了。

1.3 开发环境搭建:STM32CubeMX与IDE

环境搭建这块,我按步骤来,你跟着做就行。

第一步:安装STM32CubeMX

去ST官网下载最新版。我建议装6.10以上版本,对AI支持更好。安装时注意选上「STM32CubeMX AI Pack」,这个包包含了模型转换工具。

第二步:安装IDE

咱们用STM32CubeIDE,它集成了CubeMX和编译器,省去来回切换的麻烦。安装时记得勾选「STM32H7系列支持包」。

第三步:验证环境

打开CubeMX,新建一个NUCLEO-H743ZI2的工程。配置一个GPIO输出,生成代码,编译下载——看到板子上的LED闪烁,环境就算搭好了。

// 验证代码片段:让LD1(绿色LED)闪烁
HAL_GPIO_TogglePin(LD1_GPIO_Port, LD1_Pin);
HAL_Delay(500);

小技巧:我第一次用CubeMX生成代码时,发现生成的main函数里全是HAL_Init()和SystemClock_Config()。别删它们!H7的时钟配置很复杂,手动改容易出问题。我习惯在生成的代码基础上加自己的逻辑,而不是从头写。

1.4 本章知识体系

下面这张图,是我自己总结的本章知识结构。你看一遍,心里就有谱了。

第一章:课程导论与开发环境搭建 边缘AI概念 STM32AI生态 硬件平台 本地推理 低延迟 隐私保护 CubeMX + X-CUBE-AI 模型转换 量化优化 STM32H743 NUCLEO-H743ZI2 DCMI摄像头接口 本章核心目标 理解边缘AI在STM32上的实现路径 搭建完整的开发环境,为后续图像识别实战做好准备

这张图把本章内容串起来了。你看,边缘AI概念是「为什么做」,STM32AI生态是「用什么做」,硬件平台是「在哪做」。三者缺一不可。

1.5 开发环境验证清单

环境搭好后,我建议你按这个清单检查一遍:

  1. CubeMX能正常打开,并且能识别到NUCLEO-H743ZI2的板级支持包
  2. X-CUBE-AI插件已安装,在CubeMX的「Software Packs」里能看到
  3. STM32CubeIDE能编译下载,板子上的LED能受控闪烁
  4. 串口能打印信息,用USB线连接板子的ST-LINK虚拟串口

常见问题:我遇到过不少同学说CubeMX生成代码后,IDE编译报错「找不到头文件」。原因通常是工程路径里有中文或空格。养成好习惯——所有工程路径用英文,不要带空格。