From eeb02a2de349d6d4f9d99d6c999fd9728b24e71d Mon Sep 17 00:00:00 2001 From: Robofish <1683502971@qq.com> Date: Thu, 1 Jan 2026 17:12:40 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84User=5Fcode=E7=9B=AE=E5=BD=95?= =?UTF-8?q?=E7=BB=93=E6=9E=84=EF=BC=9A=E5=B0=86=E6=96=87=E4=BB=B6=E7=BB=84?= =?UTF-8?q?=E7=BB=87=E5=88=B0=E5=AD=90=E6=96=87=E4=BB=B6=E5=A4=B9=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 主要更改: - 将所有BSP外设文件移动到独立子文件夹(can/, fdcan/, uart/等) - 将所有Component文件移动到独立子文件夹(pid/, filter/, cmd/等) - 将所有Device文件移动到独立子文件夹(dr16/, bmi088/等) - 更新代码生成器以支持新的文件夹结构 - 保持向后兼容性,支持从子文件夹或根目录加载模板 - 添加STRUCTURE.md文档说明新的目录结构 优势: ✅ 更好的代码组织和管理 ✅ 便于添加、删除、修改模板 ✅ 清晰的模块划分 ✅ 向后兼容现有结构 --- .DS_Store | Bin 10244 -> 8196 bytes app/code_page/bsp_interface.py | 22 +++- app/code_page/component_interface.py | 12 +- app/code_page/device_interface.py | 12 +- assets/User_code/STRUCTURE.md | 113 ++++++++++++++++++ assets/User_code/bsp/{ => can}/can.c | 0 assets/User_code/bsp/{ => can}/can.h | 0 assets/User_code/bsp/{ => dwt}/dwt.c | 0 assets/User_code/bsp/{ => dwt}/dwt.h | 0 assets/User_code/bsp/{ => fdcan}/fdcan.c | 0 assets/User_code/bsp/{ => fdcan}/fdcan.h | 0 assets/User_code/bsp/{ => gpio}/gpio.c | 0 assets/User_code/bsp/{ => gpio}/gpio.h | 0 assets/User_code/bsp/{ => i2c}/i2c.c | 0 assets/User_code/bsp/{ => i2c}/i2c.h | 0 assets/User_code/bsp/{ => mm}/mm.c | 0 assets/User_code/bsp/{ => mm}/mm.h | 0 assets/User_code/bsp/{ => pwm}/pwm.c | 0 assets/User_code/bsp/{ => pwm}/pwm.h | 0 assets/User_code/bsp/{ => spi}/spi.c | 0 assets/User_code/bsp/{ => spi}/spi.h | 0 assets/User_code/bsp/{ => time}/time.c | 0 assets/User_code/bsp/{ => time}/time.h | 0 assets/User_code/bsp/{ => uart}/uart.c | 0 assets/User_code/bsp/{ => uart}/uart.h | 0 assets/User_code/component/{ => ahrs}/ahrs.c | 0 assets/User_code/component/{ => ahrs}/ahrs.h | 0 .../component/{ => capacity}/capacity.c | 0 .../component/{ => capacity}/capacity.h | 0 assets/User_code/component/{ => cmd}/cmd.c | 0 assets/User_code/component/{ => cmd}/cmd.h | 0 .../User_code/component/{ => crc16}/crc16.c | 0 .../User_code/component/{ => crc16}/crc16.h | 0 assets/User_code/component/{ => crc8}/crc8.c | 0 assets/User_code/component/{ => crc8}/crc8.h | 0 .../{ => error_detect}/error_detect.c | 0 .../{ => error_detect}/error_detect.h | 0 .../User_code/component/{ => filter}/filter.c | 0 .../User_code/component/{ => filter}/filter.h | 0 .../{ => freertos_cli}/FreeRTOS_CLI.c | 0 .../{ => freertos_cli}/FreeRTOS_CLI.h | 0 .../component/{ => limiter}/limiter.c | 0 .../component/{ => limiter}/limiter.h | 0 .../User_code/component/{ => mixer}/mixer.c | 0 .../User_code/component/{ => mixer}/mixer.h | 0 assets/User_code/component/{ => pid}/pid.c | 0 assets/User_code/component/{ => pid}/pid.h | 0 assets/User_code/component/{ => ui}/ui.c | 0 assets/User_code/component/{ => ui}/ui.h | 0 .../component/{ => user_math}/user_math.c | 0 .../component/{ => user_math}/user_math.h | 0 assets/User_code/device/{ => bmi088}/bmi088.c | 0 assets/User_code/device/{ => bmi088}/bmi088.h | 0 assets/User_code/device/{ => buzzer}/buzzer.c | 0 assets/User_code/device/{ => buzzer}/buzzer.h | 0 assets/User_code/device/{ => dm_imu}/dm_imu.c | 0 assets/User_code/device/{ => dm_imu}/dm_imu.h | 0 assets/User_code/device/{ => dr16}/dr16.c | 0 assets/User_code/device/{ => dr16}/dr16.h | 0 .../User_code/device/{ => ist8310}/ist8310.c | 0 .../User_code/device/{ => ist8310}/ist8310.h | 0 assets/User_code/device/{ => led}/led.c | 0 assets/User_code/device/{ => led}/led.h | 0 assets/User_code/device/{ => motor}/motor.c | 0 assets/User_code/device/{ => motor}/motor.h | 0 .../device/{ => motor_dm}/motor_dm.c | 0 .../device/{ => motor_dm}/motor_dm.h | 0 .../device/{ => motor_lk}/motor_lk.c | 0 .../device/{ => motor_lk}/motor_lk.h | 0 .../device/{ => motor_lz}/motor_lz.c | 0 .../device/{ => motor_lz}/motor_lz.h | 0 .../device/{ => motor_odrive}/motor_odrive.c | 0 .../device/{ => motor_odrive}/motor_odrive.h | 0 .../device/{ => motor_rm}/motor_rm.c | 0 .../device/{ => motor_rm}/motor_rm.h | 0 .../device/{ => motor_vesc}/motor_vesc.c | 0 .../device/{ => motor_vesc}/motor_vesc.h | 0 assets/User_code/device/{ => oid}/oid.c | 0 assets/User_code/device/{ => oid}/oid.h | 0 assets/User_code/device/{ => ops9}/ops9.c | 0 assets/User_code/device/{ => ops9}/ops9.h | 0 assets/User_code/device/{ => rc_can}/rc_can.c | 0 assets/User_code/device/{ => rc_can}/rc_can.h | 0 assets/User_code/device/{ => servo}/servo.c | 0 assets/User_code/device/{ => servo}/servo.h | 0 assets/User_code/device/{ => vofa}/vofa.c | 0 assets/User_code/device/{ => vofa}/vofa.h | 0 assets/User_code/device/{ => ws2812}/ws2812.c | 0 assets/User_code/device/{ => ws2812}/ws2812.h | 0 89 files changed, 151 insertions(+), 8 deletions(-) create mode 100644 assets/User_code/STRUCTURE.md rename assets/User_code/bsp/{ => can}/can.c (100%) rename assets/User_code/bsp/{ => can}/can.h (100%) rename assets/User_code/bsp/{ => dwt}/dwt.c (100%) rename assets/User_code/bsp/{ => dwt}/dwt.h (100%) rename assets/User_code/bsp/{ => fdcan}/fdcan.c (100%) rename assets/User_code/bsp/{ => fdcan}/fdcan.h (100%) rename assets/User_code/bsp/{ => gpio}/gpio.c (100%) rename assets/User_code/bsp/{ => gpio}/gpio.h (100%) rename assets/User_code/bsp/{ => i2c}/i2c.c (100%) rename assets/User_code/bsp/{ => i2c}/i2c.h (100%) rename assets/User_code/bsp/{ => mm}/mm.c (100%) rename assets/User_code/bsp/{ => mm}/mm.h (100%) rename assets/User_code/bsp/{ => pwm}/pwm.c (100%) rename assets/User_code/bsp/{ => pwm}/pwm.h (100%) rename assets/User_code/bsp/{ => spi}/spi.c (100%) rename assets/User_code/bsp/{ => spi}/spi.h (100%) rename assets/User_code/bsp/{ => time}/time.c (100%) rename assets/User_code/bsp/{ => time}/time.h (100%) rename assets/User_code/bsp/{ => uart}/uart.c (100%) rename assets/User_code/bsp/{ => uart}/uart.h (100%) rename assets/User_code/component/{ => ahrs}/ahrs.c (100%) rename assets/User_code/component/{ => ahrs}/ahrs.h (100%) rename assets/User_code/component/{ => capacity}/capacity.c (100%) rename assets/User_code/component/{ => capacity}/capacity.h (100%) rename assets/User_code/component/{ => cmd}/cmd.c (100%) rename assets/User_code/component/{ => cmd}/cmd.h (100%) rename assets/User_code/component/{ => crc16}/crc16.c (100%) rename assets/User_code/component/{ => crc16}/crc16.h (100%) rename assets/User_code/component/{ => crc8}/crc8.c (100%) rename assets/User_code/component/{ => crc8}/crc8.h (100%) rename assets/User_code/component/{ => error_detect}/error_detect.c (100%) rename assets/User_code/component/{ => error_detect}/error_detect.h (100%) rename assets/User_code/component/{ => filter}/filter.c (100%) rename assets/User_code/component/{ => filter}/filter.h (100%) rename assets/User_code/component/{ => freertos_cli}/FreeRTOS_CLI.c (100%) rename assets/User_code/component/{ => freertos_cli}/FreeRTOS_CLI.h (100%) rename assets/User_code/component/{ => limiter}/limiter.c (100%) rename assets/User_code/component/{ => limiter}/limiter.h (100%) rename assets/User_code/component/{ => mixer}/mixer.c (100%) rename assets/User_code/component/{ => mixer}/mixer.h (100%) rename assets/User_code/component/{ => pid}/pid.c (100%) rename assets/User_code/component/{ => pid}/pid.h (100%) rename assets/User_code/component/{ => ui}/ui.c (100%) rename assets/User_code/component/{ => ui}/ui.h (100%) rename assets/User_code/component/{ => user_math}/user_math.c (100%) rename assets/User_code/component/{ => user_math}/user_math.h (100%) rename assets/User_code/device/{ => bmi088}/bmi088.c (100%) rename assets/User_code/device/{ => bmi088}/bmi088.h (100%) rename assets/User_code/device/{ => buzzer}/buzzer.c (100%) rename assets/User_code/device/{ => buzzer}/buzzer.h (100%) rename assets/User_code/device/{ => dm_imu}/dm_imu.c (100%) rename assets/User_code/device/{ => dm_imu}/dm_imu.h (100%) rename assets/User_code/device/{ => dr16}/dr16.c (100%) rename assets/User_code/device/{ => dr16}/dr16.h (100%) rename assets/User_code/device/{ => ist8310}/ist8310.c (100%) rename assets/User_code/device/{ => ist8310}/ist8310.h (100%) rename assets/User_code/device/{ => led}/led.c (100%) rename assets/User_code/device/{ => led}/led.h (100%) rename assets/User_code/device/{ => motor}/motor.c (100%) rename assets/User_code/device/{ => motor}/motor.h (100%) rename assets/User_code/device/{ => motor_dm}/motor_dm.c (100%) rename assets/User_code/device/{ => motor_dm}/motor_dm.h (100%) rename assets/User_code/device/{ => motor_lk}/motor_lk.c (100%) rename assets/User_code/device/{ => motor_lk}/motor_lk.h (100%) rename assets/User_code/device/{ => motor_lz}/motor_lz.c (100%) rename assets/User_code/device/{ => motor_lz}/motor_lz.h (100%) rename assets/User_code/device/{ => motor_odrive}/motor_odrive.c (100%) rename assets/User_code/device/{ => motor_odrive}/motor_odrive.h (100%) rename assets/User_code/device/{ => motor_rm}/motor_rm.c (100%) rename assets/User_code/device/{ => motor_rm}/motor_rm.h (100%) rename assets/User_code/device/{ => motor_vesc}/motor_vesc.c (100%) rename assets/User_code/device/{ => motor_vesc}/motor_vesc.h (100%) rename assets/User_code/device/{ => oid}/oid.c (100%) rename assets/User_code/device/{ => oid}/oid.h (100%) rename assets/User_code/device/{ => ops9}/ops9.c (100%) rename assets/User_code/device/{ => ops9}/ops9.h (100%) rename assets/User_code/device/{ => rc_can}/rc_can.c (100%) rename assets/User_code/device/{ => rc_can}/rc_can.h (100%) rename assets/User_code/device/{ => servo}/servo.c (100%) rename assets/User_code/device/{ => servo}/servo.h (100%) rename assets/User_code/device/{ => vofa}/vofa.c (100%) rename assets/User_code/device/{ => vofa}/vofa.h (100%) rename assets/User_code/device/{ => ws2812}/ws2812.c (100%) rename assets/User_code/device/{ => ws2812}/ws2812.h (100%) diff --git a/.DS_Store b/.DS_Store index 65b45266195f613cbf994113e598927c1ff7e7b6..9fc6441e183a5c42ae115dd97a1e06be576770d0 100644 GIT binary patch delta 121 zcmZn(XmOBWU|?W$DortDU;r^WfEYvza8E20o2aMA$hR?IH$NlaW*&jBtdq6HbSC>q zPT3qI<;Ez;3{(aL65K$-6{KTh;dkcA{3?MQj1Y4eCdczko%~NwezJ_{QzX64i~xJ( B8OQ(t delta 616 zcmZp1XbF&DU|?W$DortDU{C-uIe-{M3-C-V6q~50$SAroU^hRb=w=>)udM2<3`q>7 z44Di$3@M&D`N>H+`AHzPKdjG+IfnoALQGG)eh7_R6Vulhlm79=N0@-kNlWhbV zCT|sX=R}Bb3HowIWG3h51!q>JPEHm)BN3fml$jD-keHmAm#%F80jM7clpO*ly9nu9 zECBOD^78XiIXRUbyunp9&aK8In=`#i#^S4-Ww# zTNp)`Cqo`6EEp1jVV48cT?8~Im7#(m70r}MXr^#76l^{s=FGUUA(cgt87K(^3fw@# p6%b*21uHbfx!SoPcD$@UCb!TIN-4s1_0HUo6rCN diff --git a/app/code_page/bsp_interface.py b/app/code_page/bsp_interface.py index 5ba4617..2b44b5f 100644 --- a/app/code_page/bsp_interface.py +++ b/app/code_page/bsp_interface.py @@ -61,9 +61,17 @@ class BspSimplePeripheral(QWidget): return "skipped" # 返回特殊值表示跳过 return "not_needed" # 返回特殊值表示不需要生成 - template_dir = CodeGenerator.get_template_dir() + # 使用外设名称作为子文件夹名(小写) + periph_folder = self.peripheral_name.lower() + template_base_dir = CodeGenerator.get_assets_dir("User_code/bsp") + for key, filename in self.template_names.items(): - template_path = os.path.join(template_dir, filename) + # 先尝试从子文件夹加载 + template_path = os.path.join(template_base_dir, periph_folder, filename) + if not os.path.exists(template_path): + # 如果子文件夹不存在,尝试从根目录加载(向后兼容) + template_path = os.path.join(template_base_dir, filename) + template_content = CodeGenerator.load_template(template_path) if not template_content: return False @@ -206,7 +214,15 @@ class BspPeripheralBase(QWidget): return True def _generate_header_file(self, configs, template_dir): - template_path = os.path.join(template_dir, self.template_names['header']) + # 构建模板路径,优先从子文件夹读取 + periph_folder = self.peripheral_name.lower() + template_base_dir = CodeGenerator.get_assets_dir("User_code/bsp") + template_path = os.path.join(template_base_dir, periph_folder, self.template_names['header']) + + if not os.path.exists(template_path): + # 向后兼容:尝试从根目录读取 + template_path = os.path.join(template_base_dir, self.template_names['header']) + template_content = CodeGenerator.load_template(template_path) if not template_content: return False diff --git a/app/code_page/component_interface.py b/app/code_page/component_interface.py index 5ced305..161f8a4 100644 --- a/app/code_page/component_interface.py +++ b/app/code_page/component_interface.py @@ -107,9 +107,17 @@ class ComponentSimple(QWidget): return "skipped" # 返回特殊值表示跳过 return "not_needed" # 返回特殊值表示不需要生成 - template_dir = self._get_component_template_dir() + # 使用组件名称作为子文件夹名(小写) + comp_folder = self.component_name.lower() + template_base_dir = CodeGenerator.get_assets_dir("User_code/component") + for key, filename in self.template_names.items(): - template_path = os.path.join(template_dir, filename) + # 先尝试从子文件夹加载 + template_path = os.path.join(template_base_dir, comp_folder, filename) + if not os.path.exists(template_path): + # 如果子文件夹不存在,尝试从根目录加载(向后兼容) + template_path = os.path.join(template_base_dir, filename) + template_content = CodeGenerator.load_template(template_path) if not template_content: print(f"模板文件不存在或为空: {template_path}") diff --git a/app/code_page/device_interface.py b/app/code_page/device_interface.py index 287d52e..af2f8b5 100644 --- a/app/code_page/device_interface.py +++ b/app/code_page/device_interface.py @@ -240,12 +240,18 @@ class DeviceSimple(QWidget): # 获取BSP配置 bsp_config = self.get_bsp_config() - # 复制并修改文件 - template_dir = self._get_device_template_dir() + # 使用设备名称作为子文件夹名(小写) + device_folder = self.device_name.lower() + template_base_dir = CodeGenerator.get_assets_dir("User_code/device") files = self.device_config.get('files', {}) for file_type, filename in files.items(): - src_path = os.path.join(template_dir, filename) + # 先尝试从子文件夹加载 + src_path = os.path.join(template_base_dir, device_folder, filename) + if not os.path.exists(src_path): + # 如果子文件夹不存在,尝试从根目录加载(向后兼容) + src_path = os.path.join(template_base_dir, filename) + dst_path = os.path.join(self.project_path, f"User/device/{filename}") if os.path.exists(src_path): diff --git a/assets/User_code/STRUCTURE.md b/assets/User_code/STRUCTURE.md new file mode 100644 index 0000000..6a79ab6 --- /dev/null +++ b/assets/User_code/STRUCTURE.md @@ -0,0 +1,113 @@ +# 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. 代码生成器会自动识别并使用 diff --git a/assets/User_code/bsp/can.c b/assets/User_code/bsp/can/can.c similarity index 100% rename from assets/User_code/bsp/can.c rename to assets/User_code/bsp/can/can.c diff --git a/assets/User_code/bsp/can.h b/assets/User_code/bsp/can/can.h similarity index 100% rename from assets/User_code/bsp/can.h rename to assets/User_code/bsp/can/can.h diff --git a/assets/User_code/bsp/dwt.c b/assets/User_code/bsp/dwt/dwt.c similarity index 100% rename from assets/User_code/bsp/dwt.c rename to assets/User_code/bsp/dwt/dwt.c diff --git a/assets/User_code/bsp/dwt.h b/assets/User_code/bsp/dwt/dwt.h similarity index 100% rename from assets/User_code/bsp/dwt.h rename to assets/User_code/bsp/dwt/dwt.h diff --git a/assets/User_code/bsp/fdcan.c b/assets/User_code/bsp/fdcan/fdcan.c similarity index 100% rename from assets/User_code/bsp/fdcan.c rename to assets/User_code/bsp/fdcan/fdcan.c diff --git a/assets/User_code/bsp/fdcan.h b/assets/User_code/bsp/fdcan/fdcan.h similarity index 100% rename from assets/User_code/bsp/fdcan.h rename to assets/User_code/bsp/fdcan/fdcan.h diff --git a/assets/User_code/bsp/gpio.c b/assets/User_code/bsp/gpio/gpio.c similarity index 100% rename from assets/User_code/bsp/gpio.c rename to assets/User_code/bsp/gpio/gpio.c diff --git a/assets/User_code/bsp/gpio.h b/assets/User_code/bsp/gpio/gpio.h similarity index 100% rename from assets/User_code/bsp/gpio.h rename to assets/User_code/bsp/gpio/gpio.h diff --git a/assets/User_code/bsp/i2c.c b/assets/User_code/bsp/i2c/i2c.c similarity index 100% rename from assets/User_code/bsp/i2c.c rename to assets/User_code/bsp/i2c/i2c.c diff --git a/assets/User_code/bsp/i2c.h b/assets/User_code/bsp/i2c/i2c.h similarity index 100% rename from assets/User_code/bsp/i2c.h rename to assets/User_code/bsp/i2c/i2c.h diff --git a/assets/User_code/bsp/mm.c b/assets/User_code/bsp/mm/mm.c similarity index 100% rename from assets/User_code/bsp/mm.c rename to assets/User_code/bsp/mm/mm.c diff --git a/assets/User_code/bsp/mm.h b/assets/User_code/bsp/mm/mm.h similarity index 100% rename from assets/User_code/bsp/mm.h rename to assets/User_code/bsp/mm/mm.h diff --git a/assets/User_code/bsp/pwm.c b/assets/User_code/bsp/pwm/pwm.c similarity index 100% rename from assets/User_code/bsp/pwm.c rename to assets/User_code/bsp/pwm/pwm.c diff --git a/assets/User_code/bsp/pwm.h b/assets/User_code/bsp/pwm/pwm.h similarity index 100% rename from assets/User_code/bsp/pwm.h rename to assets/User_code/bsp/pwm/pwm.h diff --git a/assets/User_code/bsp/spi.c b/assets/User_code/bsp/spi/spi.c similarity index 100% rename from assets/User_code/bsp/spi.c rename to assets/User_code/bsp/spi/spi.c diff --git a/assets/User_code/bsp/spi.h b/assets/User_code/bsp/spi/spi.h similarity index 100% rename from assets/User_code/bsp/spi.h rename to assets/User_code/bsp/spi/spi.h diff --git a/assets/User_code/bsp/time.c b/assets/User_code/bsp/time/time.c similarity index 100% rename from assets/User_code/bsp/time.c rename to assets/User_code/bsp/time/time.c diff --git a/assets/User_code/bsp/time.h b/assets/User_code/bsp/time/time.h similarity index 100% rename from assets/User_code/bsp/time.h rename to assets/User_code/bsp/time/time.h diff --git a/assets/User_code/bsp/uart.c b/assets/User_code/bsp/uart/uart.c similarity index 100% rename from assets/User_code/bsp/uart.c rename to assets/User_code/bsp/uart/uart.c diff --git a/assets/User_code/bsp/uart.h b/assets/User_code/bsp/uart/uart.h similarity index 100% rename from assets/User_code/bsp/uart.h rename to assets/User_code/bsp/uart/uart.h diff --git a/assets/User_code/component/ahrs.c b/assets/User_code/component/ahrs/ahrs.c similarity index 100% rename from assets/User_code/component/ahrs.c rename to assets/User_code/component/ahrs/ahrs.c diff --git a/assets/User_code/component/ahrs.h b/assets/User_code/component/ahrs/ahrs.h similarity index 100% rename from assets/User_code/component/ahrs.h rename to assets/User_code/component/ahrs/ahrs.h diff --git a/assets/User_code/component/capacity.c b/assets/User_code/component/capacity/capacity.c similarity index 100% rename from assets/User_code/component/capacity.c rename to assets/User_code/component/capacity/capacity.c diff --git a/assets/User_code/component/capacity.h b/assets/User_code/component/capacity/capacity.h similarity index 100% rename from assets/User_code/component/capacity.h rename to assets/User_code/component/capacity/capacity.h diff --git a/assets/User_code/component/cmd.c b/assets/User_code/component/cmd/cmd.c similarity index 100% rename from assets/User_code/component/cmd.c rename to assets/User_code/component/cmd/cmd.c diff --git a/assets/User_code/component/cmd.h b/assets/User_code/component/cmd/cmd.h similarity index 100% rename from assets/User_code/component/cmd.h rename to assets/User_code/component/cmd/cmd.h diff --git a/assets/User_code/component/crc16.c b/assets/User_code/component/crc16/crc16.c similarity index 100% rename from assets/User_code/component/crc16.c rename to assets/User_code/component/crc16/crc16.c diff --git a/assets/User_code/component/crc16.h b/assets/User_code/component/crc16/crc16.h similarity index 100% rename from assets/User_code/component/crc16.h rename to assets/User_code/component/crc16/crc16.h diff --git a/assets/User_code/component/crc8.c b/assets/User_code/component/crc8/crc8.c similarity index 100% rename from assets/User_code/component/crc8.c rename to assets/User_code/component/crc8/crc8.c diff --git a/assets/User_code/component/crc8.h b/assets/User_code/component/crc8/crc8.h similarity index 100% rename from assets/User_code/component/crc8.h rename to assets/User_code/component/crc8/crc8.h diff --git a/assets/User_code/component/error_detect.c b/assets/User_code/component/error_detect/error_detect.c similarity index 100% rename from assets/User_code/component/error_detect.c rename to assets/User_code/component/error_detect/error_detect.c diff --git a/assets/User_code/component/error_detect.h b/assets/User_code/component/error_detect/error_detect.h similarity index 100% rename from assets/User_code/component/error_detect.h rename to assets/User_code/component/error_detect/error_detect.h diff --git a/assets/User_code/component/filter.c b/assets/User_code/component/filter/filter.c similarity index 100% rename from assets/User_code/component/filter.c rename to assets/User_code/component/filter/filter.c diff --git a/assets/User_code/component/filter.h b/assets/User_code/component/filter/filter.h similarity index 100% rename from assets/User_code/component/filter.h rename to assets/User_code/component/filter/filter.h diff --git a/assets/User_code/component/FreeRTOS_CLI.c b/assets/User_code/component/freertos_cli/FreeRTOS_CLI.c similarity index 100% rename from assets/User_code/component/FreeRTOS_CLI.c rename to assets/User_code/component/freertos_cli/FreeRTOS_CLI.c diff --git a/assets/User_code/component/FreeRTOS_CLI.h b/assets/User_code/component/freertos_cli/FreeRTOS_CLI.h similarity index 100% rename from assets/User_code/component/FreeRTOS_CLI.h rename to assets/User_code/component/freertos_cli/FreeRTOS_CLI.h diff --git a/assets/User_code/component/limiter.c b/assets/User_code/component/limiter/limiter.c similarity index 100% rename from assets/User_code/component/limiter.c rename to assets/User_code/component/limiter/limiter.c diff --git a/assets/User_code/component/limiter.h b/assets/User_code/component/limiter/limiter.h similarity index 100% rename from assets/User_code/component/limiter.h rename to assets/User_code/component/limiter/limiter.h diff --git a/assets/User_code/component/mixer.c b/assets/User_code/component/mixer/mixer.c similarity index 100% rename from assets/User_code/component/mixer.c rename to assets/User_code/component/mixer/mixer.c diff --git a/assets/User_code/component/mixer.h b/assets/User_code/component/mixer/mixer.h similarity index 100% rename from assets/User_code/component/mixer.h rename to assets/User_code/component/mixer/mixer.h diff --git a/assets/User_code/component/pid.c b/assets/User_code/component/pid/pid.c similarity index 100% rename from assets/User_code/component/pid.c rename to assets/User_code/component/pid/pid.c diff --git a/assets/User_code/component/pid.h b/assets/User_code/component/pid/pid.h similarity index 100% rename from assets/User_code/component/pid.h rename to assets/User_code/component/pid/pid.h diff --git a/assets/User_code/component/ui.c b/assets/User_code/component/ui/ui.c similarity index 100% rename from assets/User_code/component/ui.c rename to assets/User_code/component/ui/ui.c diff --git a/assets/User_code/component/ui.h b/assets/User_code/component/ui/ui.h similarity index 100% rename from assets/User_code/component/ui.h rename to assets/User_code/component/ui/ui.h diff --git a/assets/User_code/component/user_math.c b/assets/User_code/component/user_math/user_math.c similarity index 100% rename from assets/User_code/component/user_math.c rename to assets/User_code/component/user_math/user_math.c diff --git a/assets/User_code/component/user_math.h b/assets/User_code/component/user_math/user_math.h similarity index 100% rename from assets/User_code/component/user_math.h rename to assets/User_code/component/user_math/user_math.h diff --git a/assets/User_code/device/bmi088.c b/assets/User_code/device/bmi088/bmi088.c similarity index 100% rename from assets/User_code/device/bmi088.c rename to assets/User_code/device/bmi088/bmi088.c diff --git a/assets/User_code/device/bmi088.h b/assets/User_code/device/bmi088/bmi088.h similarity index 100% rename from assets/User_code/device/bmi088.h rename to assets/User_code/device/bmi088/bmi088.h diff --git a/assets/User_code/device/buzzer.c b/assets/User_code/device/buzzer/buzzer.c similarity index 100% rename from assets/User_code/device/buzzer.c rename to assets/User_code/device/buzzer/buzzer.c diff --git a/assets/User_code/device/buzzer.h b/assets/User_code/device/buzzer/buzzer.h similarity index 100% rename from assets/User_code/device/buzzer.h rename to assets/User_code/device/buzzer/buzzer.h diff --git a/assets/User_code/device/dm_imu.c b/assets/User_code/device/dm_imu/dm_imu.c similarity index 100% rename from assets/User_code/device/dm_imu.c rename to assets/User_code/device/dm_imu/dm_imu.c diff --git a/assets/User_code/device/dm_imu.h b/assets/User_code/device/dm_imu/dm_imu.h similarity index 100% rename from assets/User_code/device/dm_imu.h rename to assets/User_code/device/dm_imu/dm_imu.h diff --git a/assets/User_code/device/dr16.c b/assets/User_code/device/dr16/dr16.c similarity index 100% rename from assets/User_code/device/dr16.c rename to assets/User_code/device/dr16/dr16.c diff --git a/assets/User_code/device/dr16.h b/assets/User_code/device/dr16/dr16.h similarity index 100% rename from assets/User_code/device/dr16.h rename to assets/User_code/device/dr16/dr16.h diff --git a/assets/User_code/device/ist8310.c b/assets/User_code/device/ist8310/ist8310.c similarity index 100% rename from assets/User_code/device/ist8310.c rename to assets/User_code/device/ist8310/ist8310.c diff --git a/assets/User_code/device/ist8310.h b/assets/User_code/device/ist8310/ist8310.h similarity index 100% rename from assets/User_code/device/ist8310.h rename to assets/User_code/device/ist8310/ist8310.h diff --git a/assets/User_code/device/led.c b/assets/User_code/device/led/led.c similarity index 100% rename from assets/User_code/device/led.c rename to assets/User_code/device/led/led.c diff --git a/assets/User_code/device/led.h b/assets/User_code/device/led/led.h similarity index 100% rename from assets/User_code/device/led.h rename to assets/User_code/device/led/led.h diff --git a/assets/User_code/device/motor.c b/assets/User_code/device/motor/motor.c similarity index 100% rename from assets/User_code/device/motor.c rename to assets/User_code/device/motor/motor.c diff --git a/assets/User_code/device/motor.h b/assets/User_code/device/motor/motor.h similarity index 100% rename from assets/User_code/device/motor.h rename to assets/User_code/device/motor/motor.h diff --git a/assets/User_code/device/motor_dm.c b/assets/User_code/device/motor_dm/motor_dm.c similarity index 100% rename from assets/User_code/device/motor_dm.c rename to assets/User_code/device/motor_dm/motor_dm.c diff --git a/assets/User_code/device/motor_dm.h b/assets/User_code/device/motor_dm/motor_dm.h similarity index 100% rename from assets/User_code/device/motor_dm.h rename to assets/User_code/device/motor_dm/motor_dm.h diff --git a/assets/User_code/device/motor_lk.c b/assets/User_code/device/motor_lk/motor_lk.c similarity index 100% rename from assets/User_code/device/motor_lk.c rename to assets/User_code/device/motor_lk/motor_lk.c diff --git a/assets/User_code/device/motor_lk.h b/assets/User_code/device/motor_lk/motor_lk.h similarity index 100% rename from assets/User_code/device/motor_lk.h rename to assets/User_code/device/motor_lk/motor_lk.h diff --git a/assets/User_code/device/motor_lz.c b/assets/User_code/device/motor_lz/motor_lz.c similarity index 100% rename from assets/User_code/device/motor_lz.c rename to assets/User_code/device/motor_lz/motor_lz.c diff --git a/assets/User_code/device/motor_lz.h b/assets/User_code/device/motor_lz/motor_lz.h similarity index 100% rename from assets/User_code/device/motor_lz.h rename to assets/User_code/device/motor_lz/motor_lz.h diff --git a/assets/User_code/device/motor_odrive.c b/assets/User_code/device/motor_odrive/motor_odrive.c similarity index 100% rename from assets/User_code/device/motor_odrive.c rename to assets/User_code/device/motor_odrive/motor_odrive.c diff --git a/assets/User_code/device/motor_odrive.h b/assets/User_code/device/motor_odrive/motor_odrive.h similarity index 100% rename from assets/User_code/device/motor_odrive.h rename to assets/User_code/device/motor_odrive/motor_odrive.h diff --git a/assets/User_code/device/motor_rm.c b/assets/User_code/device/motor_rm/motor_rm.c similarity index 100% rename from assets/User_code/device/motor_rm.c rename to assets/User_code/device/motor_rm/motor_rm.c diff --git a/assets/User_code/device/motor_rm.h b/assets/User_code/device/motor_rm/motor_rm.h similarity index 100% rename from assets/User_code/device/motor_rm.h rename to assets/User_code/device/motor_rm/motor_rm.h diff --git a/assets/User_code/device/motor_vesc.c b/assets/User_code/device/motor_vesc/motor_vesc.c similarity index 100% rename from assets/User_code/device/motor_vesc.c rename to assets/User_code/device/motor_vesc/motor_vesc.c diff --git a/assets/User_code/device/motor_vesc.h b/assets/User_code/device/motor_vesc/motor_vesc.h similarity index 100% rename from assets/User_code/device/motor_vesc.h rename to assets/User_code/device/motor_vesc/motor_vesc.h diff --git a/assets/User_code/device/oid.c b/assets/User_code/device/oid/oid.c similarity index 100% rename from assets/User_code/device/oid.c rename to assets/User_code/device/oid/oid.c diff --git a/assets/User_code/device/oid.h b/assets/User_code/device/oid/oid.h similarity index 100% rename from assets/User_code/device/oid.h rename to assets/User_code/device/oid/oid.h diff --git a/assets/User_code/device/ops9.c b/assets/User_code/device/ops9/ops9.c similarity index 100% rename from assets/User_code/device/ops9.c rename to assets/User_code/device/ops9/ops9.c diff --git a/assets/User_code/device/ops9.h b/assets/User_code/device/ops9/ops9.h similarity index 100% rename from assets/User_code/device/ops9.h rename to assets/User_code/device/ops9/ops9.h diff --git a/assets/User_code/device/rc_can.c b/assets/User_code/device/rc_can/rc_can.c similarity index 100% rename from assets/User_code/device/rc_can.c rename to assets/User_code/device/rc_can/rc_can.c diff --git a/assets/User_code/device/rc_can.h b/assets/User_code/device/rc_can/rc_can.h similarity index 100% rename from assets/User_code/device/rc_can.h rename to assets/User_code/device/rc_can/rc_can.h diff --git a/assets/User_code/device/servo.c b/assets/User_code/device/servo/servo.c similarity index 100% rename from assets/User_code/device/servo.c rename to assets/User_code/device/servo/servo.c diff --git a/assets/User_code/device/servo.h b/assets/User_code/device/servo/servo.h similarity index 100% rename from assets/User_code/device/servo.h rename to assets/User_code/device/servo/servo.h diff --git a/assets/User_code/device/vofa.c b/assets/User_code/device/vofa/vofa.c similarity index 100% rename from assets/User_code/device/vofa.c rename to assets/User_code/device/vofa/vofa.c diff --git a/assets/User_code/device/vofa.h b/assets/User_code/device/vofa/vofa.h similarity index 100% rename from assets/User_code/device/vofa.h rename to assets/User_code/device/vofa/vofa.h diff --git a/assets/User_code/device/ws2812.c b/assets/User_code/device/ws2812/ws2812.c similarity index 100% rename from assets/User_code/device/ws2812.c rename to assets/User_code/device/ws2812/ws2812.c diff --git a/assets/User_code/device/ws2812.h b/assets/User_code/device/ws2812/ws2812.h similarity index 100% rename from assets/User_code/device/ws2812.h rename to assets/User_code/device/ws2812/ws2812.h