
添加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路径下的这三个文件拷贝到新工程对应的位置:
Header这一行中的stm32xxx_STLparam.h文件也需要添加到新工程中,但是里面的内容需要根据应用进行修改,比如:Flash,Ram的检测范围等,这里先添加进来,后面在调试时再做具体的修改。 ![]() 还有一类文件,在下面的表5中列出。这些文件在新建的工程中已经存在。但是还需要参考X-CUBE-CLASSB软件包中的例程,进行修改。因为这些文件中也包含了一部分检测的功能。 ![]() 在进行编译之前,先检查一下下表中的HAL驱动文件是否已经添加到新工程中。 表中列出了需要用到的hal驱动函数,以及调用它们的STL文件。 ![]() ![]() 除了这几个文件以外还有三个文件需要注意。就是\Projects\STM322xG_EVAL\MDK-ARM路径下的:Boot_Flash_ClassB.sct:KEIL的分散加载文件,里面指定了FLASH的保存和运行地址,RAM的地址范围以及运行中需要检测的RAM区域等。在新工程中的sct文件,也应该参考这个分散加载文件进行修改。 crc_gen_keil.bat:生成末尾带CRC校验码的HEX文件,因为KEIL不支持自动增加CRC校验码,所以在X-CUBE-CLASSB中提供了这个bat文件,它会利用外部工具Srecord来生成整个Flash的CRC校验码并放在文件末尾。 crc_load.ini:这个文件调试时有用,用来配置调试时导入带CRC校验码的HEX,避免对FLASH检测失败导致程序无法正常运行。 这两个文件中的也需要根据新工程路径进行修改,后面会再细说。 02 可以动手添加文件了 1.将X-CUBE-ClassB软件包中,Middlewares\STM32_SelfTest_Library文件夹下的文件拷贝到新工程的对应目录下。 2.将\Projects\STM322xG_EVAL\MDK-ARM路径下的以下文件,拷贝到新的工程目录下。 ![]() 将stm32fxx_STLparam.h文件拷贝到新工程的Inc文件夹内,里面是所有STL的配置参数。里面的参数要根据当前所用的板子进行调整,比如:#define STL_EVAL_MODE是针对使用eval板, #define STL_EVAL_LCD是控制EVAL板的LCD显示。如果不是eval板,没有LCD显示就可以注释掉。 如果使能了STL_VERBOSE,STL_VERBOSE_POR就需要完成相应的串口初始化定义,比如USARTx 3.将STL文件添加到新的项目中: ![]() 4.添加需要的HAL驱动文件到工程 确认CRC, WWDG, IWDG, TIM等STL代码会用到的模块的HAL驱动文件已经被添加到工程中。如果你使用了串口打印信息,就需要添加串口的HAL驱动。 03 初步修改代码 1.在stm32f2xx_hal_conf.h中使能CRC, WWDG, IWDG, TIM等模块。 ![]() 2. 添加定义Flash CRC校验码存储区域 参考startup_stm32f2xxKEIL.s修改startup_stm32f207xx.s文件 在末尾添加定义Checksum存储区域 ![]() 3. 修改main.h 添加下面的代码到main.h。根据实际所用的串口,定义USARTx(定义了STL_VERBOSE_POR或STL_VERBOSE时需要)。根据实际情况选择合适的Flash等待周期。 ![]() 4. 修改stm32fxx_STLparam.h 注释掉#define STL_EVAL_MODE和#define STL_EVAL_LCD,因为我们不是用的EVAL板,也没有LCD屏。 5. 修改stm32f2xx_it.c,添加处理运行时安全检测的代码和时钟检测的相关代码。 根据X-CUBE-CLASSB的例程,修改SysTick_Handler函数。 添加STL_InitClock_Xcross_Measurement函数以及TIM5_IRQHandler函数。 添加变量定义:volatile static uint32_t tmpCC4_last; /* keep last TIM5/Chn4 captured value */ 6. 修改main.c
7. 修改工程配置: 添加include路径:..\Middlewares\STM32_SelfTest_Library\inc ![]() 添加外部命令来让KEIL能自动生成一个带CRC值的HEX文件 ![]() 定义debug和flash download使用的HEX文件路径,使用带CRC校验值的HEX文件。 ![]() ![]() ![]() |
感谢分享![]() ![]() ![]() |