#include "shoot_task.h" #include "TopDefine.h" #include "FreeRTOS.h" #include "attrTask.h" #include #include "remote_control.h" #include "shoot.h" #include "odrive_shoot.h" #include "read_spi.h" extern RC_mess_t RC_mess; Encoder_t encoder; double angles; int32_t rounds; int angleo = 0; //发射角度 #define GO1_SHOOT 0 #define ODRIVE_SHOOT 1 void Task_Shoot(void *argument) { (void)argument; /* 未使用argument,消除警告 */ const uint32_t delay_tick = osKernelGetTickFreq() / TASK_FREQ_CAN; Encoder_Init(&encoder); #if GO1_SHOOT == 1 shooterInit(); #endif uint32_t tick = osKernelGetTickCount(); /* 控制任务运行频率的计算 */ while(1) { #if GO1_SHOOT == 1 shoot_ball(0); #elif ODRIVE_SHOOT == 1 shootStep(); //shoot_odrive(angleo); #endif // 更新编码器数据 Update_Encoder(&encoder); tick += delay_tick; /* 计算下一个唤醒时刻 */ osDelayUntil(tick); /* 运行结束,等待下一个周期唤醒 */ } }