LAT1442
Local Application Tips
LAT1442 Rev 1.0 Nov. 2024
防止 STM32CubeMX 删除用户文件的方法
关键字:STM32H5LwIPSTM32CubeMX
1. 引言
STM32CubeMX 为了简化工程,通常情况下,会把一些它认为不再需要的文件删掉,
但是对于有些用户自己添加第三方软件包的情况来说,会给用户带来一定的困扰。
2. 问题
2.1. 问题详情
客户在开发其产品过程中,使用了 STM32H563ZIT6因为 STM32CubeH5 这个
Cube 包中,可以看到 STM32H5 默认使用的是 AzureRTOS 的产品,包括 THREADX
NETXDUO,等等。也就是说,同样在 STM32CubeMX 的界面中,在 RTOS 这块只能看
AzureRTOS 的配置。如果客户要使用 FreeRTOS,就只能再添加 X-CUBE-
FREERTOS。要使用 LwIP 的话,只能自己移植。
客户将 LwIP 的软件包复制到\Middlewares\Third_Party 下,如图 1
1. 重新生成代码前的\Middlewares\Third_Party 文件夹
成功调试以太网功能后,客户就直接在这个工程上继续添加其他功能。当在
STM32CubeMX 添加其他外设,并重新生成代码时,客户发现, Keil 下编译代码出现
了一大堆的错误,如图 2
LAT1442
LAT1442 - Rev 1.0 page 2/6
2. 编译错误
2.2. 问题分析
从图 2 的错误来看,用户放进去的 LwIP 相关的文件都不见了。于是从资源管理器中
入到工程里的文件,可以看到确实\Middlewares\Third_Party 下的 LwIP 文件夹不见
了,如图 3
3. 生成代码后的\Middlewares\Third_Party 文件夹
可见,在生成代码的时候,STM32CubeMX 把用户复制进来的 LwIP 文件夹删掉了,
导致编译失败。
2.3. 解决方法
对于这种情况,最直观的想法就是在重新生成代码后,把 LwIP 的文件夹重新拷贝过
来。这个办法可行,但是当一个项目很大的时候,用户添加了更多的文件夹和文件之后,
用这个办法的工作量可能会大大增加了,也不方便。
那么是否有一劳永逸的办法呢?
来看一下 STM32CubeMX 的用户手册,可以看到在代码生成的“生成的文件”选项
的介绍中提到了一个删除先前的文件的选项,如 4 所示。