#ifndef PID_H #define PID_H extern float g_Yaw, g_Pitch, g_Roll; //eular #define OUTTER_LOOP_KP 0 //0.257 * 0.83 0.255 #define OUTTER_LOOP_KI 0 #define OUTTER_LOOP_KD 0 #define INNER_LOOP_KP 0.03f #define INNER_LOOP_KI 0 #define INNER_LOOP_KD 0 #define SUM_ERRO_MAX 900 #define SUM_ERRO_MIN -900 #define PID_IMAX 30 #define PID_IMIN -30 typedef struct { float InnerLast; float OutterLast; float *Feedback; float *Gyro; float Error; float p; float i; float d; short output; __IO uint16_t *Channel1; __IO uint16_t *Channel2; } pid_st, *pid_pst; void pid_SingleAxis(pid_pst package, float setPoint); void pid(float setPoint, float d); #endif