#include "ball_task.h" #include "TopDefine.h" #include "FreeRTOS.h" #include "attrTask.h" #include #include "remote_control.h" #include "ball.h" #include "go.h" extern RC_mess_t RC_mess; extern GO go; BASKETBALL basketball; int bb=0; int Turn_pos=0; void Task_Ball(void *argument) { (void)argument; /* 未使用argument,消除警告 */ const uint32_t delay_tick = osKernelGetTickFreq() / TASK_FREQ_CAN; uint32_t tick = osKernelGetTickCount(); /* 控制任务运行频率的计算 */ basketball.hand=0; Turn_pos=20; GO_TURN_ball(TURN,go,Turn_pos); //发射舵机位置 HAL_GPIO_WritePin(down_GPIO_Port, down_Pin, GPIO_PIN_SET);//收回 while(1) { // Turn_pos=20; handling_ball(basketball.hand,Turn_pos); bb=ball_in(); if(bb==1) { // HAL_GPIO_WritePin(key_GPIO_Port, key_Pin, GPIO_PIN_SET); // HAL_GPIO_WritePin(paw_GPIO_Port, paw_Pin, GPIO_PIN_SET); // HAL_GPIO_WritePin(down_GPIO_Port, down_Pin, GPIO_PIN_SET); } else { // HAL_GPIO_WritePin(key_GPIO_Port, key_Pin, GPIO_PIN_RESET); // HAL_GPIO_WritePin(paw_GPIO_Port, paw_Pin, GPIO_PIN_RESET); // HAL_GPIO_WritePin(down_GPIO_Port, down_Pin, GPIO_PIN_RESET); } tick += delay_tick; /* 计算下一个唤醒时刻 */ osDelayUntil(tick); /* 运行结束,等待下一个周期唤醒 */ } }