扫码加入

  • 正文
  • 相关推荐
申请入驻 产业图谱

一步到位!STM32CubeIDE 搭建 ClassB 功能安全工程

03/17 15:34
407
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

做家电、电机、小家电产品,IEC 60730 ClassB 功能安全自检是绕不开的门槛。但很多人在移植时遇到:编译报错、链接脚本不对、CRC 生成失败、运行自检不通过……

ST 官方 LAT1257 应用笔记,专门教你从零开始,在 STM32CubeIDE 里快速搭建可直接运行的 ClassB 工程,基于 STM32G070 实测,步骤清晰、可直接复刻。

资料获取:【应用笔记】LAT1257 建立基于STM32CubeIDE的ClassB工程

1. 先搞懂:ClassB 工程要做什么

ClassB 是针对 IEC 60335-1 家电安全标准的自检库,主要实现:

  • CPU 自检
  • RAM 全检 / 分段检
  • Flash 完整性 CRC 校验
  • 时钟频率监测
  • 看门狗、窗口看门狗监测
  • 程序流监控(CFC)

LAT1257 使用的是 X-CUBE-CLASSB V2.3.0 版本,基于 CubeIDE 环境。

2. 搭建前准备

  1. 硬件:NUCLEO-G070
  2. 软件:STM32CubeIDE + CubeMX
  3. 软件包:X-CUBE-CLASSB V2.3.0

3. CubeMX 基础工程配置

  1. 新建工程,配置时钟、GPIO、串口
  2. 使能 IWDG、WWDG、CRC
  3. 生成代码,验证基础工程可正常运行

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 入门文档,新手照着做也能一次成功

相关推荐