# Balance car **Repository Path**: Yu_Hen/balance-car ## Basic Information - **Project Name**: Balance car - **Description**: STM32平衡小车 包含循迹和超声波避障 项目训练 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-10-17 - **Last Updated**: 2025-10-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Balance car #### 介绍 STM32平衡小车 项目训练 #### 软件架构 软件架构说明 #### 安装教程 1. xxxx 2. xxxx 3. xxxx #### 使用说明 1. xxxx 2. xxxx 3. xxxx #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) ### V0.1 2024-09-25 - **主要变更**:添加了FreeRTOS实时操作系统。 - **详细说明**: - 使用STM32CubeMX生成FreeRTOS实时操作系统 - 使用TIM4作为时基源 - 添加一个软件定时器:用LED测试 - ### V0.2 2024-09-25 - **主要变更**:添加硬件 spi OLED - **详细说明**: - 配置硬件spi - 计划使用 DMA + spi 由于硬件设计只能启动仅发送配置,无法配置两个DMA 而spi开启DMA需要打开接收和发送的DMA - 仅使用硬件spi - 添加一个显示屏打印任务 ### V0.3 2024-09-25 - **主要变更**:添加Type-c串口打印 USART1 - **详细说明**: - 配置串口1 - 使用DMA 不定长数据接收 - 添加Serial发送和接收数据任务 - 添加Serial发送和接收数据队列 - 添加判断Serial发送队列已满操作 ### V0.4 2024-09-26 - **主要变更**:添加Wireless无线模块 USART3 - **详细说明**: - 配置串口3 - 使用DMA 不定长数据接收 - 添加Wireless发送和接收数据任务 - 添加Wireless发送和接收数据队列 - 添加判断Wireless发送队列已满操作 ### V0.4.1 2024-09-28 - **主要变更**:初步确定json格式数据 - **详细说明**: ``` { "motor_left_dead_zone": 10, "motor_right_dead_zone": 10, "car_balance_angle": 0.0, "movement_velocity": 1.5, "turn_angle": 30.0, "balance_pid_kp": 2.0, "balance_pid_kd": 0.1, "velocity_pid_kp": 1.0, "velocity_pid_ki": 0.05, "turn_pid_kp": 1.5, "turn_pid_kd": 0.05, "operation_mode": "normal" } ``` - 添加了解析提取键值函数 - 修改Serial串口接收和发送任务逻辑 - 考虑堆管理,删除serial写入队列函数,直接采用printf代替 {"motor_left_dead_zone": 10.0,"motor_right_dead_zone": 10.0,"car_balance_angle": 0.0,"movement_velocity": 1.5,"turn_angle": 30.0,"balance_pid_kp": 2.0,"balance_pid_kd": 0.1,"velocity_pid_kp": 1.0,"velocity_pid_ki": 0.05,"turn_pid_kp": 1.5,"turn_pid_kd": 0.05,"operation_mode": 1} ### V0.5 2024-09-29 - **主要变更**:添加mpu6050 dmp库 - **详细说明**: - 配置硬件iic,高速 - 添加mpu6050 dpm库 - 由于硬件pcb设计,需要更换mpu6050代码中的方向 ### V0.6 2024-09-30 - **主要变更**:添加无线模块控制参数 - **详细说明**: - DARMSTM.DLL - -p STM32F103C8 - 添加delay WTD 可以用来检测运行时间或者延迟 - 扩大接收数据字符数组大小,减小结构体数组数量 - 修复重大bug: ``` 1.注意MPU6050的dmp库的延时需要用HAL-delya,不能用系统osdelay 会导致任务调度后依然处于初始化状态耗时较长,导致其他的任务周期性延时超时,卡死 2.在串口空闲函数中,由于数组过半也会进入此函数,所以需要在确实判断为\r\n结尾时,接收结构体数组下标才加一 3.如果DMA空闲中断接收数据大于创建的接收缓存数组,那么DMA接收会失效,需要重新开启DMA接收 4.清空数组缓存时,必须延时较大的时间段后等DMA发送完成再清除数组,否则数据发送一半后失效 5.需要打印任务栈使用情况时,(目前推断)需要freertos空闲栈大小大于256或者128才可以打印成功,否则打印空白字段 ``` ### V0.7 2024-10-08 - **主要变更**:平衡直立环 - **详细说明**: