我们使用的工具 (STM32CubeMx) 提供 GUI 来配置嵌入式微控制器,并根据该配置生成完整的 C 项目。这包括 C 文件、头文件和其他文件。这些文件非常复杂,大多数开发人员都使用 GUI 工具来生成。
这些文件生成后,有时您需要手动编辑某些部分。然而,这是一个例外:大多数时候,您要么使用 GUI,要么将代码放入未生成的新文件中。
我们的工作流程是:
project
mx
的单独文件夹中,使用 GUI 生成代码(一个新项目,我们从不构建)mx
复制到project
(我们只复制我们实际需要的文件)project
下)mx
,并将 [*] 将新生成的文件合并到 project
。第 5 步很棘手,因为我们想要对这些文件进行任何更改,但不丢弃第 4 步中所做的更改。我们也不想复制我们选择不复制的文件。
我相信 git 可以用来做到这一点,因为这本质上是一个
git merge
。但是,git merge
旨在处理同一树中的文件,而不是具有通用性的子目录。
我们如何使用git来支持这个过程?管理自动生成、选择、编辑和合并周期的最佳方式应该是什么?我愿意接受任何推荐的工作流程。
虽然这不是您想要做的,但我仍然想告诉您经过多年的尝试和错误,我们最终是如何做到的:
bsp
。拥有您愿意按照自己的方式做的任何事情的所有权,例如,编写您自己的 SPI 驱动程序。您仍然可以在后台使用 ST HAL。最终,它会得到回报。 ST提供的驱动程序通常比较臃肿,有时还包含错误。恩智浦也是如此。一旦设计完成,您也很少修改硬件功能,除非您使用开发套件并使用相同的硬件执行不同的项目。
我们按照你的方法尝试过,但是维护成本不值得。尝试修改自动生成的代码并仍然保留重新生成该代码的能力根本行不通。完全拥有您的驱动程序也是有益的,因为您可以更好地了解您的硬件。