Files
motor_control_board_wmz_gas…/README_重写说明.txt
2026-04-30 18:15:28 +08:00

49 lines
2.2 KiB
Plaintext
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.
这个包是基于你上传的 motor_control_board_V1.2 工程做的“可直接替换版”。
我保留了 CubeMX 生成的外设初始化文件结构,重点重写了你自己的应用层逻辑:
- Core/Src/app_init.c
- Core/Src/app_freertos.c
- Core/Src/attitude.c
- Core/Src/callback.c
- Core/Src/car_move.c
- Core/Src/mpu6050.c
- Core/Src/readpin.c
- Core/Src/variables.c
- Core/Inc/variables.h
主要修复点:
1. 串口帧解析改为状态机,支持重新同步,只接受 0F xx xx F0且中间两字节必须是 01~04。
2. UART 接收中断启动移到 UART 任务里,避免任务句柄未注册时丢第一帧。
3. 电机控制重写为“左电机/右电机”两套独立模式解析,逻辑更清晰。
4. ADC 任务启动时先做 HAL_ADCEx_Calibration_Start 校准,再做 8 次平均采样。
5. 电池电压增加 battery_voltage 变量,显示时直接看实际电池电压(按 *11 分压比换算)。
6. MPU6050 支持自动探测 0x68 / 0x69 两个地址;初始化失败会显示 P:ERR。
7. 姿态任务支持掉线重试,不会一直静默为 0。
8. ReadPin 改成显式位掩码写法,保持和你原车控编码兼容,但去掉了原先晦涩的连环左移。
9. OLED 刷新时先清屏,避免显示残影和旧数字残留。
使用方法:
- 最简单:直接把这个包里的整个 Core 文件夹覆盖到你的工程里。
- 如果你只想替换我重写过的文件,也可以只替换上面列出的那些文件。
上板后建议按下面顺序验证:
1. 上电看 OLED
- 如果串口没发数据,应显示 S:0 0
- 如果 ADC 正常,应显示 V:x.x
- 如果 MPU 正常,应显示 P:x.x否则显示 P:ERR
2. 电脑发原始 4 字节 HEX0F 01 04 F0
- OLED 应显示 S:1 4
3. 按按钮
- 电机应按左右轮分别动作
4. 摇晃板子
- P: 数值应变化
5. 检查电源电压
- V: 不应长期固定为 0.0
仍然可能需要你继续检查的硬件项:
1. MPU6050 是否真的接在 I2C1且 AD0 是接地还是接高电平。
2. I2C 的 PB8/PB9 是否有上拉。
3. ADC 的 PA0 是否真的接到了分压输出,而不是悬空或接错通道。
4. 电脑串口工具是否发的是“原始字节流”,不是字符串 "0F0104F0"。