#ifndef BMI088_H #define BMI088_H /* C 板板载六轴 IMU BMI088 驱动(HAL 版,架构与 legacy 一致) * SPI1 模式3 + DMA2(Stream2 RX/Stream3 TX),INT1_Accel=PC4(EXTI4)、INT1_Gyro=PC5(EXTI5) * 数据就绪下降沿触发 SPI DMA 读取,在完成回调中解析 * 量程:加速度 ±3g,角速度 ±2000°/s,陀螺 1kHz 输出 */ #include extern float bmi088_accel[3]; // (m/s^2) extern float bmi088_gyro[3]; // (rad/s) extern float bmi088_temperature; // (℃) extern uint8_t bmi088_online; // 1-初始化成功 0-检测失败(有界重试后放弃,系统继续运行) extern uint8_t bmi088_last_acc_id; // 最近一次读到的加速度计 ID(诊断用,正常 0x1E) extern uint8_t bmi088_last_gyro_id; // 最近一次读到的陀螺仪 ID(诊断用,正常 0x0F) /* 采样计数(诊断用):在 SPI 完成回调解析成功后自增。 * **判断"IMU 数据是否还在更新"只看这两个计数是否持续增长** —— * 数值变化与否不足以说明问题(数据可能冻结在最后一个样本上) */ extern volatile uint32_t bmi088_accel_cnt; extern volatile uint32_t bmi088_gyro_cnt; /* 初始化(任务上下文调用,含阻塞式寄存器配置与 ID 检测循环;失败时绿灯报警并重试) */ extern void bmi088_init(void); #endif