#include "TopDefine.h" #include "FreeRTOS.h" #include "userTask.h" #include #include "shootTask.hpp" #include "shoot.hpp" #include "motor.hpp" #include "remote_control.h" #include "nuc.h" extern RC_ctrl_t rc_ctrl; Shoot shoot; NUC_t nucData; // 自瞄 int shoot_flag = 0; int a2; //E键 sw[0]👆 200 中 1000 👇1800 //F键 sw[1]👆 1800 👇200 void FunctionShoot(void *argument) { (void)argument; /* 未使用argument,消除警告 */ const uint32_t delay_tick = osKernelGetTickFreq() / TASK_FREQ_CTRL_SHOOT; uint32_t tick = osKernelGetTickCount(); while(1) { #ifdef DEBUG task_struct.stack_water_mark.shoot = osThreadGetStackSpace(osThreadGetId()); #endif //我放的任务通知 运球成功放置过来后 shoot.flag_thread=osThreadFlagsGet(); if(shoot.flag_thread & BALL_OK) { a2=2; } shoot_flag=HAL_GPIO_ReadPin(STOP_GPIO_Port, STOP_Pin); if (osMessageQueueGet(task_struct.msgq.nuc, &nucData, NULL, 0) == osOK) { //shoot.distanceGet(nucData); } if(rc_ctrl.sw[0]>1000) { if(rc_ctrl.sw[1]==1800) { shoot.errorControl(); } if(rc_ctrl.sw[1]==1000) { shoot.shootStop(); shoot.shootStateMachine();//shoot } if(rc_ctrl.sw[1]==200) { shoot.shootStateMachine();//shoot } } if(rc_ctrl.sw[0]==200) { shoot.shootStop(); } shoot.vesc_send(); // 发送电机速度数据 shoot.trigger_control(); shoot.vofaWatch(); osDelay(2); tick += delay_tick; /* 计算下一个唤醒时刻 */ osDelayUntil(tick); } }