你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
攻城狮Melo 发布时间:2026-4-29 13:38

做家电、电机、小家电产品,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 "<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mrow><mi>B</mi><mi>u</mi><mi>i</mi><mi>l</mi><mi>d</mi><mi>A</mi><mi>r</mi><mi>t</mi><mi>i</mi><mi>f</mi><mi>a</mi><mi>c</mi><mi>t</mi><mi>F</mi><mi>i</mi><mi>l</mi><mi>e</mi><mi>B</mi><mi>a</mi><mi>s</mi><mi>e</mi><mi>N</mi><mi>a</mi><mi>m</mi><mi>e</mi></mrow><mi mathvariant="normal">.</mi><mi>e</mi><mi>l</mi><mi>f</mi><mi mathvariant="normal">"</mi><mi mathvariant="normal">"</mi></mrow></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut"></span><span class="mord"><span class="mord mathnormal">B</span><span class="mord mathnormal">u</span><span class="mord mathnormal">i</span><span class="mord mathnormal">l</span><span class="mord mathnormal">d</span><span class="mord mathnormal">A</span><span class="mord mathnormal">r</span><span class="mord mathnormal">t</span><span class="mord mathnormal">i</span><span class="mord mathnormal">f</span><span class="mord mathnormal">a</span><span class="mord mathnormal">c</span><span class="mord mathnormal">tF</span><span class="mord mathnormal">i</span><span class="mord mathnormal">l</span><span class="mord mathnormal">e</span><span class="mord mathnormal">B</span><span class="mord mathnormal">a</span><span class="mord mathnormal">se</span><span class="mord mathnormal">N</span><span class="mord mathnormal">am</span><span class="mord mathnormal">e</span></span><span class="mord">.</span><span class="mord mathnormal">e</span><span class="mord mathnormal">l</span><span class="mord mathnormal">f</span><span class="mord">""</span></span></span></span>{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 入门文档,新手照着做也能一次成功

收藏 评论1 发布时间:2026-4-29 13:38

举报

1个回答
背影101 回答时间:2026-4-29 14:44:37

赞赞赞

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版