#ifndef _STATUSMONITOR_H_ #define _STATUSMONITOR_H_ #include "gd32f4xx.h" #include "drv_adc.h" #include "mb85rc64.h" typedef struct _PtzAs5047D_ { ///as5047d云台基准位置初始角度值 float as5047d_ptz_init_angle; ///as5047d角度相对于云台角度最大值 float as5047d_ptz_angle_max; ///磁编码器角度换算成云台角度对应的一次函数斜率K float as5047d_ptz_angle_K; ///as5047d相对于云台的角度的滤波角度当前值 float as5047d_ptz_angle_wf_actual; ///as5047d相对于云台的角度的滤波角度上一次的值 float as5047d_ptz_angle_wf_last; ///as5047d相对于云台的角度当前实际值 float as5047d_ptz_angle_actual; ///as5047d相对于云台的角度上一次值 float as5047d_ptz_angle_last; ///云台转动范围对应的磁编码应当转动的总角度: ///as5047d_ptz_angle_max = as5047d_cycle_num * 360 + as5047d_remain_angle ///as5047d除开转动的整圈数外,多出的不满足整圈的度数 float as5047d_remain_angle; ///as5047d转动的整圈数的数值 int as5047d_cycle_num; ///as5047d转动的整圈数计数,转动一圈加减1 int as5047d_cycle_count; int as5047d_cycle_count_last; //int as5047d_cycle_count_last_last; ///as5047d采集到的实时角度值 float as5047d_angle_actual; ///as5047d的转向 char as5047d_dir; ///as5047d的数据读错次数 //unsigned int as5047d_read_error_count; ///as5047d采集到的上一次实时角度值 float as5047d_angle_last; ///as5047d采集到的实时角度值与上一次实时角度值的差值 float as5047d_angle_difference; ///as5047d的状态,0处于自检初始化,1 数据能够正常使用, 0xff故障 char as5047d_state; ///as5047d的数据是否全部清除,0 不需要清除, 1清除数据 char as5047d_data_reset; ///磁编码器测转速 ///as5047d磁编码器转速 float as5047d_speed_actual; ///测试as5047d磁编码器转速起始角度a float as5047d_speed_angle_a; ///测试as5047d磁编码器转速结束角度b float as5047d_speed_angle_b; ///测试as5047d磁编码器转速起始角度a、结束角度b之间的差值 float as5047d_speed_angle_c; ///测试as5047d磁编码器转速起始角度a、结束角度b之间的上一次差值 float as5047d_speed_angle_c_last; unsigned int time_now; unsigned int time_end; unsigned int time; }PtzAs5047D; typedef struct _PowerOffData_ { PtzAs5047D hori_as5047d; PtzAs5047D vert_as5047d; float hori_angle; float vert_angle; float power_down_offset_anle; unsigned short int num;//编号,数字越大,表示存储的数据越新,主要用于判断最后一次保存的数据 float crc; }PowerOffData;