Files
wandering1 39bd06adea 为自建代码目录补齐 README,建立目录级导航体系
- 新增 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 目录结构加入说明
2026-09-26 12:25:36 +08:00

36 lines
1.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`