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

一步到位!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 回答时间:3 小时前

赞赞赞

所属标签

相似分享

官网相关资源

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