AI on STM32 概述
CubeMX & X-CUBE-AI 安装
NUCLEO-H743ZI2
开发流程全景图
新建 CubeMX 工程
时钟树 & GPIO
生成 MDK-ARM
.ioc 文件结构
AI 模型部署流程
网络层类型
量化 vs 未量化
性能指标
安装 TensorFlow 2.x
CNN 手写数字
导出 .tflite
int8 量化
导入 .tflite
配置 AI 运行时
生成初始化代码
验证导入
分析模型报告
RAM/Flash/延迟
算子不支持
维度不匹配
为什么需要自定义算子
X-CUBE-AI 扩展机制
开发流程概览
GCC ARM 工具链
CMake 工程
获取 X-CUBE-AI 源码
第一个算子模板
AI_CUSTOM_OP_REGISTER
ai_tensor 描述符
参数传递机制
ReLU6 数学原理
C 代码实现
注册到运行时
替换标准 ReLU
Depthwise 原理
与 Conv2D 差异
循环展开优化
性能对比
串口 printf
ST-Link ITM
断点调试
段错误排查
SegNet 池化
保存池化索引
C 代码实现
STM32 验证
LSTM 门控机制
权重分块加载
状态更新 C 代码
与 Python 对比
TFLite C++ 算子
注册到解释器
生成含自定义算子模型
手势识别案例
自定义算子
Keras 到 STM32
静态 vs 动态
内存池设计
避免碎片
MPU 保护
数值稳定性
减去最大值
C 代码实现
与 CMSIS-NN 对比
GELU 近似公式
多项式逼近
精度与速度
Transformer 应用
API 文档
Doxygen
Git 版本管理
Release 流程
算子注册失败
维度错误
Flash 溢出
堆栈溢出
STM32N6 NPU
回退到 CPU
混合推理策略
Speech Commands
模型设计
部署到 STM32
实时测试
核心知识点
学习资源
边缘 AI 趋势
STM32 AI 社区