[其他ST产品] 是否可以指定代码生成器不更改某些文件/文件夹?

[复制链接]
 楼主| Hitomi22 发表于 2025-6-28 11:34 | 显示全部楼层 |阅读模式
有时候我们需要对'Drivers'/'Middlewares'进行修改,并将它们存储在svn仓库中.如果我们通过“外部”将这些库包含到我们的项目中并进行代码生成,那么将丢失所有的修改。
例如:我们使用的PHY不能由现有的“HAL_ETH_Init”函数管理(在Drivers/Src/stm32f4xx_hal_eth.c中)。我们想改变双工和速度逻辑,但是不能正确修改。
是否可以指定代码生成器不更改某些文件/文件夹?

公羊子丹 发表于 2025-7-31 13:39 | 显示全部楼层
STM32CubeIDE的代码生成器默认会覆盖Drivers和Middlewares里的文件,确实很烦人。
周半梅 发表于 2025-7-31 13:40 | 显示全部楼层
一般推荐不要直接修改Drivers里的源文件,改动很容易被代码生成覆盖。
帛灿灿 发表于 2025-7-31 13:40 | 显示全部楼层
你可以把修改做成自己的库或者扩展函数,避免直接改HAL源码。
童雨竹 发表于 2025-7-31 13:42 | 显示全部楼层
也有办法在CubeMX里设置某些文件为只读,但并不能完全阻止覆盖。
万图 发表于 2025-7-31 13:46 | 显示全部楼层
另一种思路是用代码生成后,把Drivers文件夹从项目里“断开”管理,改动后手动维护。
Wordsworth 发表于 2025-7-31 13:49 | 显示全部楼层
SVN可以用分支管理修改后的Drivers版本,更新代码时小心合并冲突。
Bblythe 发表于 2025-7-31 13:49 | 显示全部楼层
如果是修改ETH驱动,建议继承HAL_ETH_Init功能,写一个wrapper函数来实现双工和速度的自定义。
Pulitzer 发表于 2025-7-31 14:00 | 显示全部楼层
你还可以试试CubeMX的“User Code”区域,把改动写在这些保护区段里。
Uriah 发表于 2025-7-31 14:00 | 显示全部楼层
有些人把修改放到单独的.c/.h文件里,保持Drivers库文件纯净,代码生成后只用自己写的文件。
Clyde011 发表于 2025-7-31 14:01 | 显示全部楼层
官方暂时没有提供“指定不覆盖文件”的开关,主要还是靠开发者自己规范管理代码。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

43

主题

45

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部