#ifndef __BSP_PID_H #define __BSP_PID_H #include "main.h" /** * @brief PID 参数结构体定义 */ typedef struct { float target; // 目标值 (目标 RPM) float actual; // 实际值 (反馈 RPM) float err; // 当前误差 float err_last; // 上次误差 float Kp, Ki, Kd; // PID 增益 float integral; // 误差积分累加器 float integral_max; // 积分限幅 (防止积分饱和) float output; // PID 计算输出值 (PWM) float output_max; // 输出限幅 (如 3599) } PID_TypeDef; /* 初始化 PID 控制器 */ void pid_init(PID_TypeDef *pid, float kp, float ki, float kd, float out_max, float int_max); /* 计算 PID 输出 */ float pid_calculate(PID_TypeDef *pid, float target, float actual); /* 重置 PID 内部状态 */ void pid_reset(PID_TypeDef *pid); #endif /* __BSP_PID_H */