STM32CubeMX工程实战:用户代码规范与LL/HAL库深度选择指南
当你第一次用STM32CubeMX生成MDK-ARM工程后,面对密密麻麻的文件夹和自动生成的代码,是否感到无从下手?本文将带你深入解析CubeMX工程结构,明确用户代码的安全存放位置,并为你剖析LL库与HAL库的核心差异,帮助你在正点原子F1平台上做出明智选择。
1. CubeMX工程结构深度解析
打开CubeMX生成的工程目录,你会看到类似如下的结构:
code复制MyProject/
├── Core/
│ ├── Inc/ // 头文件目录
│ ├── Src/ // 源文件目录
│ └── Startup/ // 启动文件
├── Drivers/
│ ├── CMSIS/ // Cortex微控制器软件接口标准
│ └── STM32F1xx_HAL_Driver/ // HAL库驱动
├── MDK-ARM/ // Keil工程文件
└── STM32CubeMX/ // CubeMX配置文件
1.1 用户代码的安全区域
CubeMX采用"代码生成保护块"机制来保护用户代码不被覆盖。这些特殊注释标记的区域是安全添加自定义代码的唯一位置:
c复制/* USER CODE BEGIN 1 */
// 在这里添加你的全局变量和函数声明
/* USER CODE END 1 */
int main(void) {
/* USER CODE BEGIN 2 */
// 初始化代码放在这里
/* USER CODE END 2 */
while (1) {
/* USER CODE BEGIN 3 */
// 主循环代码放在这里
/* USER CODE END 3 */
}
}
警告:在任何"USER CODE"注释块之外添加代码,在重新生成工程时将被CubeMX自动删除。
1.2 工程目录最佳实践
- Core/Inc和Core/Src:存放应用层代码
- 新增模块时,应创建对应的.h和.c文件对
- 例如
motor_control.h和`motor
