#ifndef __WORK_H__ #define __WORK_H__ #include "main.h" #include "key.h" #include "pid.h" typedef enum { // PWM占空比映射到电机 WORK_PWM_MAP = 0, // 电机位置控制 WORK_MOTOR_POS = 1, // 电机速度控制 WORK_MOTOR_SPEED = 2, } work_e; typedef struct { work_e type; int32_t encoder_cnt; // 编码器位置 float32 pwm_percent; // PWM占空比 uint32_t pwm_feq; // PWM频率 pid_t pid; struct { float32 kp; float32 ki; float32 kd; float32 dead_zone; } pid_params; float32 target_pos; // 目标位置 float32 target_speed; // 目标速度 } work_t; extern work_t work; void work_init(void); void work_process(void); void work_key_handle_cb(button_id_e id); void work_encoder_exti(void); #endif // __WORK_H__