做家电、电机、小家电产品,IEC 60730 ClassB 功能安全自检是绕不开的门槛。但很多人在移植时遇到:编译报错、链接脚本不对、CRC 生成失败、运行自检不通过……
ST 官方 LAT1257 应用笔记,专门教你从零开始,在 STM32CubeIDE 里快速搭建可直接运行的 ClassB 工程,基于 STM32G070 实测,步骤清晰、可直接复刻。
资料获取:【应用笔记】LAT1257 建立基于STM32CubeIDE的ClassB工程
1. 先搞懂:ClassB 工程要做什么
ClassB 是针对 IEC 60335-1 家电安全标准的自检库,主要实现:
LAT1257 使用的是 X-CUBE-CLASSB V2.3.0 版本,基于 CubeIDE 环境。
2. 搭建前准备
- 硬件:NUCLEO-G070
- 软件:STM32CubeIDE + CubeMX
- 软件包:X-CUBE-CLASSB V2.3.0
3. CubeMX 基础工程配置
- 新建工程,配置时钟、GPIO、串口
- 使能 IWDG、WWDG、CRC
- 生成代码,验证基础工程可正常运行
4. ClassB 工程搭建 7 个关键步骤(照着做就行)
4.1 复制 Middlewares 文件夹
把 X-CUBE-CLASSB 里的 Middleware 整个拷贝到工程根目录。
4.2 添加 3 个汇编文件
复制到 startup 目录:
- stm32g0xx_STLcpurunGCC.s
- stm32g0xx_STLcpustartGCC.s
- stm32g0xx_STLRamMcMxGCC.s
4.3 复制 CRC 生成脚本
拷贝 crc_gen_gcc.bat 到工程目录,并修改 bat 里的工程名。
4.4 修改链接脚本 .ld
这是最关键一步,必须添加:
- CLASSB RAM 区域
- .check_sum 段
- .user_classb 段
- 正确的 RAM/FLASH 地址划分
4.5 添加头文件路径
在 Paths and Symbols 里加入:Middleware/ST/CLASSB_LIB/inc
4.6 复制配置头文件
将 stm32xx_STLparam.h 复制到 Core/Inc。
4.7 添加编译后命令
在 Post-build steps 中添加:
arm-none-eabi-objcopy -O binary "${BuildArtifactFileBaseName}.elf" "${BuildArtifactFileBaseName}.bin" && arm-none-eabi-size "${BuildArtifactFileName}" && ..\crc_gen_gcc.bat
5. 工程运行后正常输出(成功标志)
编译下载后,串口输出如下信息,说明 ClassB 正常运行:
*******Self Test Library Init ****
Start-up CPU Test OK
Start-up FLASH 32-bit CRC OK
Full RAM Test OK
Clock frequency OK
... main routine starts ....
6. LAT1257 总结的 5 个高频坑(提前避开)
1. 编译正常,但 hex 只有 132 字节
原因:缺少源文件路径,重新添加 CLASSB 文件夹即可。
2. 变量重复定义报错
解决:确保 ALLOC_GLOBALS 宏放在头文件最前面。
3.启动阶段自检失败
解决:ClassB 库编译等级设为 -O1。
4.运行提示 FLASH CRC Error
解决:必须下载带 CRC 的 .hex 文件。
5. 时钟检测不过
解决:核对芯片型号,时钟配置必须与实际芯片一致。
用 STM32CubeIDE 搭建 ClassB 工程,只要做好 复制文件 → 改链接脚本 → 加 CRC 脚本 → 配置头文件路径,就能一次性跑通。LAT1257 是 ST 官方最实用的 ClassB 入门文档,新手照着做也能一次成功。
407