/* N100 陀螺仪数据 */ #pragma once #ifdef __cplusplus extern "C" { #endif /* Includes ----------------------------------------------------------------- */ #include #include #include #include "component/ahrs.h" /* Exported constants ------------------------------------------------------- */ /* Exported macro ----------------------------------------------------------- */ /* Exported types ----------------------------------------------------------- */ typedef struct { struct { uint8_t head; uint8_t cmd; uint8_t len; uint8_t count; uint8_t crc8; } header; /* 数据包头部 */ struct { uint16_t crc16; AHRS_Gyro_t gyro; /* 陀螺仪数据 */ AHRS_Eulr_t eulr; /* 欧拉角数据 */ AHRS_Quaternion_t quat; /* 四元数数据 */ int64_t time; /* 时间戳 */ } data; /* 数据包内容 */ uint8_t end; } N100_AHRS_t; typedef struct { float offset_x; float offset_y; float offset_z; } N100_Cali_t; typedef struct { osThreadId_t thread_alert; N100_AHRS_t rx_raw; AHRS_Gyro_t gyro; /* 陀螺仪数据 */ AHRS_Eulr_t eulr; /* 欧拉角数据 */ AHRS_Quaternion_t quat; /* 四元数数据 */ } N100_t; /* Exported functions prototypes -------------------------------------------- */ int8_t N100_Init(N100_t *n100); int8_t N100_Restart(void); int8_t N100_StartReceiving(N100_t *n100); bool N100_WaitDmaCplt(void); int8_t N100_ParseData (N100_t *n100, N100_Cali_t *cali); int8_t N100_HandleOffline(N100_t *n100); #ifdef __cplusplus } #endif