Keil项目代码分层策略

怎么判断一个代码文件应该被放在Driver层还是App层?

可以问两个问题:

1. 它会不会include更低层次的东西? 比如 printf、业务配置

  • → 这个文件应该被归到App层
  • 不会 → 这个文件可能是Driver或Middleware层

2. 把它原样拷到另一个完全不同的项目,能用吗?

  • → 这个文件是Driver或Middleware层
  • 不能 → App层,因为这说明耦合了太多业务了

我目前用的Keil项目分层策略:

层级职责示例
CoreCubeMX自动生成
Middlewares硬件无关的通用算法queue.c
Driver绑定某颗硬件芯片/外设的代码,只要硬件相同就能复用STM32F1xx_HAL_Driver
App产品/业务相关的代码clock.c