# Phantom-X **Repository Path**: pengkun813/phantom-x ## Basic Information - **Project Name**: Phantom-X - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-20 - **Last Updated**: 2026-08-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Phantom-X —— STM32 直立平衡车 基于 **STM32F103RC** 的两轮自平衡车固件工程,采用 CubeMX + Keil MDK 开发,按 **BSP / DEVICE / ALGO / APP 四层架构**组织代码,面向从零学习与逐步调试。 ## 硬件平台 | 项目 | 说明 | |---|---| | 主控 | STM32F103RC(72MHz,HSE 8MHz × PLL9) | | 开发板 | 亚博智能 YB-EST01 V2.0 | | 姿态传感器 | MPU6050(软件 I2C:PB10/PB11,INT:PA12) | | 电机驱动 | TIM8 四通道 PWM(PC6~PC9,25kHz) | | 编码器 | TIM3(PA6/PA7 左轮)/ TIM4(PB6/PB7 右轮) | | 超声波 | HC-SR04(TRIG:PA0,ECHO 捕获:TIM2_CH2/PA1) | | 电池检测 | ADC1_CH5(PA5 分压采样) | | 通信 | USART1 115200(蓝牙/调试)、USART2/3、UART5 9600 | | 人机交互 | KEY1(PA8)、蜂鸣器(PA11)、LED(PB3) | | 控制环 | TIM6 定时中断,5ms 周期(200Hz) | ## 目录结构 ``` Phantom-X/ ├── BSP/ 板级外设层:delay(DWT) / led / beep / key / uart / i2c(软) / pwm / adc / encoder / exti ├── DEVICE/ 器件驱动层:mpu6050 / motor / ultrasonic / battery / bluetooth ├── ALGO/ 算法层(零硬件依赖):pid / imu(姿态融合) / filter ├── APP/ 应用层:app(统一入口) / app_state(状态机) / app_control(5ms控制环) / app_test(模块自测) ├── Core/ CubeMX 生成区(仅在 USER CODE 标记内修改) ├── Drivers/ HAL / LL 官方驱动 ├── MDK-ARM/ Keil 工程(Phantom-X.uvprojx) └── Phantom-X.ioc CubeMX 工程文件 ``` **依赖方向**:`APP → DEVICE / ALGO → BSP → HAL`,单向向下,禁止反向依赖。 ## 开发环境 - **Keil MDK**(ARMCC V5),工程文件:`MDK-ARM/Phantom-X.uvprojx` - **STM32CubeMX**:修改外设配置请编辑 `.ioc` 后重新生成,勿手改生成区代码 - 全局编译宏:`USE_FULL_LL_DRIVER, USE_HAL_DRIVER, STM32F103xE, MODULE_TEST_EN` - 删除 `MODULE_TEST_EN` 可整体裁剪模块自测代码 ## 模块自测框架 每个模块的公开 API 均有独立测试函数(`模块前缀_Test_功能名()`,`#ifdef MODULE_TEST_EN` 保护): 1. 在 `main.c` 中取消 `APP_Test_RunAll();` 的注释(位于 `APP_Init()` 之后) 2. 编译烧录,上电自动顺序执行各模块测试 3. 结果通过串口 `[TEST] xxx -> PASS/FAIL` 输出(bsp_uart 就绪前以 LED 闪烁指示) ## 开发路线 0. ✅ 工程骨架 + 四层目录 + 测试框架 1. ✅ LED 闪烁(bsp_delay DWT 延时 + bsp_led) 2. ⬜ 串口调试地基(bsp_uart:环形缓冲 + printf 重定向) 3. ⬜ MPU6050(软 I2C → 原始数据 → 互补滤波姿态角) 4. ⬜ 电机 + 编码器开环验证 5. ⬜ 直立 PID(含倾角保护) 6. ⬜ 速度环 + 转向 7. ⬜ 蓝牙遥控 / 状态机 / 外围功能 ## 许可证 [MIT License](LICENSE)