#ifndef __TASK_H #define __TASK_H #include "zf_common_typedef.h" #include "PID_Controller.h" //================================================================================================== // 任务频率配置(统一入口,修改这里即可全局生效) //================================================================================================== #define TASK_10MS_FREQ_HZ 100 // 10ms 任务:电机编码器、电机控制、IMU 姿态更新 #define TASK_20MS_FREQ_HZ 50 // 20ms 任务:灰度传感器、位置环、角度环 #define TASK_50MS_FREQ_HZ 20 // 50ms 任务:按键扫描、蜂鸣器、指令处理 void task_init(void); void set_yaw_ref(float set_value); //子系统初始化(传入频率 Hz,内部存储频率和周期) void motor_control_init(float freq_hz); void angle_control_init(float freq_hz); void position_control_init(float freq_hz); //供外部控制使用 extern volatile uint8_t motor_control_task_enable; extern volatile uint8_t angle_control_task_enable; extern volatile uint8_t position_control_task_enable; extern volatile uint8_t position_turn_right_90_runing; extern volatile PIDInstance pid_speed_right; extern volatile PIDInstance pid_speed_left; extern volatile PIDInstance pid_yaw; extern volatile PIDInstance pid_position; /*速度环的输入,开启角度环后由角度环接管(范围-50到+50)*/ extern volatile int16_t motor_speed_right_ref; extern volatile int16_t motor_speed_left_ref; /*角度环接管速度之后的基础直行速度*/ extern volatile int16_t motor_speed_base; /*角度环参考值*/ extern volatile float yaw_ref;//建议不直接修改此变量,而是通过set_yaw_ref(float set_value)设置,以防预期之外的值 /*角度速率控制,开启位置环后由位置环接管*/ extern volatile float angle_velocity; //配置项 /*自动模式下的基础直行速度*/ #define AUTO_MODE_BASE_SPEED 10 #endif