MRobot/assets/User_code/STRUCTURE.md
Robofish eeb02a2de3 重构User_code目录结构:将文件组织到子文件夹中
主要更改:
- 将所有BSP外设文件移动到独立子文件夹(can/, fdcan/, uart/等)
- 将所有Component文件移动到独立子文件夹(pid/, filter/, cmd/等)
- 将所有Device文件移动到独立子文件夹(dr16/, bmi088/等)
- 更新代码生成器以支持新的文件夹结构
- 保持向后兼容性,支持从子文件夹或根目录加载模板
- 添加STRUCTURE.md文档说明新的目录结构

优势:
 更好的代码组织和管理
 便于添加、删除、修改模板
 清晰的模块划分
 向后兼容现有结构
2026-01-01 17:12:40 +08:00

114 lines
2.6 KiB
Markdown
Raw 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.

# User_code 目录结构说明
## 新的文件夹结构
所有外设、组件和设备的文件现在都存放在独立的子文件夹中,便于管理和维护。
### BSP (板级支持包)
```
bsp/
├── bsp.h # BSP 总头文件
├── describe.csv # 外设描述文件
├── .gitkeep
├── can/
│ ├── can.c
│ └── can.h
├── fdcan/
│ ├── fdcan.c
│ └── fdcan.h
├── uart/
│ ├── uart.c
│ └── uart.h
├── spi/
│ ├── spi.c
│ └── spi.h
├── i2c/
│ ├── i2c.c
│ └── i2c.h
├── gpio/
│ ├── gpio.c
│ └── gpio.h
├── pwm/
│ ├── pwm.c
│ └── pwm.h
├── time/
│ ├── time.c
│ └── time.h
├── dwt/
│ ├── dwt.c
│ └── dwt.h
└── mm/
├── mm.c
└── mm.h
```
### Component (组件)
```
component/
├── describe.csv # 组件描述文件
├── dependencies.csv # 组件依赖关系
├── .gitkeep
├── ahrs/
├── capacity/
├── cmd/
├── crc16/
├── crc8/
├── error_detect/
├── filter/
├── freertos_cli/
├── limiter/
├── mixer/
├── pid/
├── ui/
└── user_math/
```
### Device (设备)
```
device/
├── device.h # Device 总头文件
├── config.yaml # 设备配置文件
├── .gitkeep
├── bmi088/
├── buzzer/
├── dm_imu/
├── dr16/
├── ist8310/
├── led/
├── motor/
├── motor_dm/
├── motor_lk/
├── motor_lz/
├── motor_odrive/
├── motor_rm/
├── motor_vesc/
├── oid/
├── ops9/
├── rc_can/
├── servo/
├── vofa/
├── ws2812/
└── lcd_driver/ # LCD 驱动(原有结构)
```
## 代码生成逻辑
代码生成器会:
1. 首先尝试从子文件夹加载模板(如 `bsp/can/can.c`
2. 如果子文件夹不存在,回退到根目录加载(向后兼容)
3. 生成时将文件展开到项目的扁平目录结构中(如 `User/bsp/can.c`
## 优势
**更好的组织**: 每个外设/组件的文件都在独立文件夹中
**便于管理**: 添加、删除、修改模板更加方便
**向后兼容**: 现有的扁平结构仍然可以正常工作
**清晰的结构**: 一目了然地看到所有可用的外设/组件
## 迁移说明
如果你添加新的外设/组件/设备:
1. 在对应目录下创建新的子文件夹(小写命名)
2. 将 .c 和 .h 文件放入子文件夹
3. 代码生成器会自动识别并使用