前言
ST在www.st.com官网上提供了针对IEC60730/IEC60335 ClassB认证的软件包。软件包分为三个,分别适用STM8,STM32(基于标准外设库)和STM32(基于HAL库):STM8-SafeCLASSB,STM32-CLASSB-SPL,X-CUBE-CLASSB。本文以X-CUBE-CLASSB为例介绍如何做代码的移植以及经常遇到的问题的解决办法。
X-CUBE-CLASSB软件包中分别提供有STM32F0/F1/F2/F3/F4/F7/L0/L1/L4的例程。但是STM32每个系列又分很多型号,每个型号的flash,ram大小可能也不相同。客户的应用程序大小以及架构也不尽相同。所以看起来很简单的移植过程还是会碰到这样那样的问题。
在本文中,笔者将以STM32F207Nucleo板为例,用CubeMX新建一个简单工程,然后将ClassB的功能添加到该工程中。当然这里提到的ClassB功能也仅指跟MCU相关的部分,和应用相关的检测因为直接依赖具体的应用,所以这里就不涉及了。
![02fa1a3ce682f0eead97bbf1c6ad64eb.png](https://i-blog.csdnimg.cn/blog_migrate/c0067c2e9d3411462b2db7ffb404292a.png)
新建用户代码
首先,需要用CubeMX新建一个可以在F207Nucleo板子上运行的简单程序。
打开CubeMXv5.0.0, 选择F207Nucleo板子来新建一个工程:
设置基于KEIL IDE环境的工程名称及位置。
生成KEIL工程,并打开工程,
在main函数中,添加闪灯的用户代码。通过编译后,一个简单的点灯程序就可以在F207Nucleo板上正常运行了。
当前的工程结构:
添加ClassB相关代码
01
了解例程中相关的文件
在AN4435中的表3中列出了和安全监测相关的通用代码文件,这些文件在X-CUBE-CLASSB软件包的Middlewares\STM32_SelfTest_Library目录下,所以直接将STM32_SelfTest_Library目录拷贝到新的工程的Middlewares目录下就可以了。
下面表4中列出的文件是和新工程所用的IDE以及应用程序相关的文件。Source这一行中的文件,主要是区分了不同的IDE,所以根据实际使用的IDE进行选择添加就好。这里用的是KEIL,所以可以将X-CUBE-CLASSB软件包的\Projects\STM322xG_EVAL\MDK-ARM路径下的这三个文件拷贝到新工程对应的位置:
stm32f2xx_STLcpurunKEIL.s
stm32f2xx_STLcpustartKEIL.s
stm32fxx_STLRamMcMxKEIL.s
Header这一行中的stm32xxx_STLparam.h文件也需要添加到新工程中ÿ