41 lines
1.2 KiB
C
41 lines
1.2 KiB
C
|
|
#ifndef HWT101_H
|
|||
|
|
#define HWT101_H
|
|||
|
|
|
|||
|
|
#include <stdint.h>
|
|||
|
|
#include "main.h"
|
|||
|
|
|
|||
|
|
#define HWT101_DMA_BUF_SIZE 256 // 必须是 32 的整数倍
|
|||
|
|
|
|||
|
|
typedef enum {
|
|||
|
|
HWT101_RATE_10HZ = 0x06,
|
|||
|
|
HWT101_RATE_50HZ = 0x08,
|
|||
|
|
HWT101_RATE_100HZ = 0x09, // 推荐:100Hz
|
|||
|
|
HWT101_RATE_200HZ = 0x0B
|
|||
|
|
} HWT101_Rate_t;
|
|||
|
|
|
|||
|
|
typedef enum {
|
|||
|
|
HWT101_BAUD_9600 = 0x02,
|
|||
|
|
HWT101_BAUD_115200 = 0x06,
|
|||
|
|
HWT101_BAUD_230400 = 0x07
|
|||
|
|
} HWT101_Baud_t;
|
|||
|
|
|
|||
|
|
typedef struct {
|
|||
|
|
float yaw; // 原始偏航角 (deg),范围 [-180, +180),跨界时跳变
|
|||
|
|
float yaw_continuous; // unwrap 后的连续偏航角 (deg),无跳变,可直接做差计算转角
|
|||
|
|
float wz; // Z 轴角速度 (deg/s)
|
|||
|
|
uint32_t last_update;
|
|||
|
|
uint8_t online;
|
|||
|
|
} HWT101_Data_t;
|
|||
|
|
|
|||
|
|
/* API 函数声明 */
|
|||
|
|
void HWT101_Init(UART_HandleTypeDef *huart);
|
|||
|
|
void HWT101_Process(void);
|
|||
|
|
|
|||
|
|
// 【升级 2】改为传入指针,安全拷贝数据,防止数据撕裂
|
|||
|
|
void HWT101_GetData(HWT101_Data_t *out_data);
|
|||
|
|
// 在末尾 API 声明处加上这句
|
|||
|
|
void HWT101_ErrorRecovery(UART_HandleTypeDef *huart);
|
|||
|
|
HAL_StatusTypeDef HWT101_Config(HWT101_Rate_t rate, HWT101_Baud_t baud);
|
|||
|
|
HAL_StatusTypeDef HWT101_ZeroYaw(void);
|
|||
|
|
|
|||
|
|
#endif /* HWT101_H */
|