39bd06adea
- 新增 26 份目录 README:App/(+log,task,util,protocol)、Drivers/BSP/(+8子系统)、 Src/、Inc/、scripts/、tools/(+6子工具)、test/、MDK-ARM/、simulator/(+sim,tests) - 每份含:定位、文件清单表、关键约束/陷阱、指向 docs 权威文档 - 第三方库与生成代码目录排除(CMSIS/HAL/Middlewares/Lib/SDL2) - docs/文档规范.md 新增 §1.1b 代码目录 README 约定;根 README 目录结构加入说明
1.8 KiB
1.8 KiB
Src/ — CubeMX 生成的源文件
⚠️ 本目录文件由 STM32CubeMX 生成(
.ioc重生成会覆盖),不是自研代码。 但允许在USER CODE BEGIN/END标记区之间写自定义代码。
文件一览
| 文件 | 生成 | 作用 |
|---|---|---|
main.c |
CubeMX | 程序入口:HAL_Init → SystemClock_Config → 外设初始化 → app_main_init → osKernelStart |
freertos.c |
CubeMX | FreeRTOS 任务创建(MX_FREERTOS_Init)+ 任务栈/优先级定义 |
gpio.c / dma.c / spi.c / i2c.c / usart.c |
CubeMX | 各外设 MX_xxx_Init |
stm32f4xx_hal_msp.c |
CubeMX | HAL 外设底层初始化(时钟使能、NVIC、引脚复用) |
stm32f4xx_hal_timebase_tim.c |
自研覆盖 | HAL 时基改用 TIM7(非 SysTick),tick = 1ms |
stm32f4xx_it.c |
CubeMX | 中断服务函数(ISR) |
system_stm32f4xx.c |
CMSIS | 系统时钟初始化(SystemInit) |
⚠️ 修改约定(铁律)
- 自定义代码只写
USER CODE BEGIN xxx/USER CODE END xxx标记区之间—— 标记区外的内容在 CubeMX 重新生成时会被无条件覆盖丢失 - 本目录被 pre-commit 的 C 代码规范检查排除(因是生成代码,风格不受控)
Drivers/BSP/才是纯手工代码区;应用逻辑放App/
关键点
- HAL 时基 = TIM7,不是 SysTick;FreeRTOS 用 SysTick 之外的方式,tick = 1ms
- NVIC 4 位优先级分组;外设中断优先级 ≥ 5(0~4 预留给 FreeRTOS)
- 时钟:HSE 8MHz → PLL M=4/N=168/P=2 → 168MHz
相关文档
- 架构全景:
docs/架构设计/项目架构总览.md - 启动顺序:
docs/架构设计/项目启动顺序管理.md - 任务表(唯一事实源 =
freertos.c):根README.md