)
前面三篇分别讲了三件事CubeIDE J-Link 在线调试 STM32N647没有摄像头时用静态图把991_AI_People_Detection的 NPU 推理 LCD 显示跑通给信息层加上「CPU 负载 / 推理 / 帧率 / 人数」的中文 OSD。本篇是收尾——摄像头模块到位后怎么一行开关切回官方采集链路并保留已有的中文叠加层。一、关键一步注释开关开关在Appli/Core/Inc/app_config.h原本是/* 无摄像头模式用内置静态图替代 DCMIPP 摄像头采集…… */#defineNO_CAMERA_STATIC_IMAGE改成注释掉即可/* #define NO_CAMERA_STATIC_IMAGE // 摄像机已到位恢复官方摄像头路径 */注释后所有无摄像头分支在编译期自动回退回到官方 DCMIPP 摄像头采集 原始 ISP 配置。不需要改其它任何代码。二、编译与体积验证重新 Release 构建输出落回Binary/appli.hex。一个有意思的副产物阶段appli.hex体积原因之前带静态图约1.26 MB那张 800×480 RGB888 人像被编译进了固件现在回摄像头约520 KB静态图不再参与链接体积回落正好佐证无摄像头代码确实被完全剔除了没有残留。三、烧录用 JLink 把三段分别烧进外部 Flash段地址文件FSBL0x70000000Binary/fsbl.hexAppli0x70100400Binary/appli.hex网络权重0x70200000Binary/network-data.hex中文 OSD 不改权重所以网络权重段和之前完全一致可以跳过或覆盖均可。cmd /c .\docs\run_platform\flash_ai_jlink.bat 991_AI_People_Detection四、效果上电后为摄像头实时画面铺在Layer0背景层 RGB565person检测框 标签叠加Layer1 透明前景层右上方仍显示中文信息层。五、小结把「无摄像头调试」做成可一键关闭的开关是这次能快速回退的关键。新项目遇到暂时缺外设时推荐用同一个套路先用开关隔离验证完主链路再接真件。中文 OSD 与采集来源解耦换回摄像头零改动这正是分层背景层/前景层、采集/显示分离的好处。到这一步991 例程在 STM32N647 上已经是一条完整链路真实摄像头 → DCMIPP → NPU 推理 → 检测框 中文信息层 → LCD 实时显示