# STM_ATEM_F405 项目说明 ## 项目概述 STM32F405 航空电磁接收机固件,基于 STM32CubeIDE + HAL 库开发。 **核心功能:** ADC 采集(LTC2508)→ 数据校正 → SD 卡存储 / UART 输出 ## 目录结构 - `Core/` — CubeMX 生成代码(main.c、外设初始化),**不要手动修改生成区域** - `User/` — 业务逻辑(驱动、数据包、存储、GPS、配置管理等) - `Drivers/` — HAL 驱动库(不修改) - `Middlewares/` — FatFs、USB(不修改) ## 关键模块 | 文件 | 职责 | |------|------| | `ltc2508_driver` | SPI ADC 采集驱动 | | `data_packet` | 数据包格式定义与封包 | | `data_storage` | FatFs SD 卡文件写入 | | `correction` | ADC 校正参数应用 | | `app_config` | 编译期配置(UART 输出、SD 存储开关)| | `config_manager` | 配置运行时访问层,默认值来自 `app_config.h` | | `gps_driver` | GPS NMEA 解析(UART)| | `rs485_driver` | RS485 通信 | | `optic_mag_driver` | 光学磁传感器 | | `system_monitor` | 系统状态统计与诊断 | ## 通信接口 | 接口 | 用途 | 波特率 | 备注 | |------|------|--------|------| | USART1 (PA9/PA10) | RS485 数据输出 | 2 000 000 | TX DMA;DE/RE 控制脚 PC7 | | USART2 (PA3) | 光泵磁力仪接收 | 115 200 | 仅 RX,DMA 循环;PA2 已改为普通 GPIO | | USART3 (PB10/PB11) | GPS NMEA 接收 | 115 200 | TX/RX,单字节中断接收 | | SPI1/2/3 | LTC2508 ADC 采集 | — | 三路 SPI 同时驱动三片 ADC | | SDIO | SD 卡(FatFs) | — | 与 USB MSC 共用,采样期间独占 | | USB | MSC 大容量存储 | — | 供 PC 直接访问 SD 卡 | ## 开发规范 - 每次修改代码后,判断是否影响模块职责、接口用途、配置项或注意事项,若有则同步更新 CLAUDE.md 对应部分 - 业务代码只放 `User/` 目录;CubeMX 生成区域(`USER CODE BEGIN/END`)内写用户代码 - 函数命名:`模块名_功能()` 如 `DataStorage_StartRecording()` - 全局变量加 `g_` 前缀,静态变量加 `s_` 前缀 - 不添加无意义注释;注释用中文说明 **为什么**,不说明是什么 ## 注意事项 - 修改 `.ioc` 文件后重新生成代码会覆盖 `Core/` 文件,需手动恢复用户代码 - USB MSC 与 FatFs 共享 SD 卡,采样期间需卸载再挂载 - 配置在 `User/app_config.h` 中以 `#define` 编译期确定;若需恢复 CONFIG.TXT 运行时加载,在 `main.c` 挂载 SD 后重新调用 `Config_Load()` 即可