Files
car_stm32f103vet6/Core/Bsp/bsp_pid.h

31 lines
875 B
C

#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 */