From 2cebb50876fc6cf52d4bc710232ba50bb804148d Mon Sep 17 00:00:00 2001 From: ws <1621320660@qq.com> Date: Mon, 28 Apr 2025 19:23:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=89=E6=91=A9=E6=93=A6=E9=80=9F=E5=BA=A6?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E6=9A=82=E6=97=B6=E6=B2=A1=E6=9C=89=E4=BA=86?= =?UTF-8?q?=EF=BC=8C=E4=B8=8D=E7=9F=A5=E9=81=93=E4=B8=8A=E4=BA=86=E5=8F=91?= =?UTF-8?q?=E5=B0=84=E5=90=8E=E4=BC=9A=E4=B8=8D=E4=BC=9A=E6=8A=BD=E6=90=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- User/module/ball.cpp | 4 ++-- User/module/ball.hpp | 2 +- User/task/ballTask.cpp | 24 +++++++++++------------- User/task/encodeCan.cpp | 8 ++++---- User/task/userTask.c | 15 ++------------- User/task/userTask.h | 27 +++++++++++---------------- 6 files changed, 31 insertions(+), 49 deletions(-) diff --git a/User/module/ball.cpp b/User/module/ball.cpp index d51f707..1ea8443 100644 --- a/User/module/ball.cpp +++ b/User/module/ball.cpp @@ -227,7 +227,7 @@ void Ball::ballHadling(void) case BALL_FORWARD: HAL_GPIO_WritePin(PAW_GPIO_Port, PAW_Pin, GPIO_PIN_SET); // 打开气缸爪子 - osDelay(10); + osDelay(5); HAL_GPIO_WritePin(DOWN_GPIO_Port, DOWN_Pin, GPIO_PIN_SET); // 打开下气缸 currentState1 = BALL_DROP; // 切换到球下落状态 break; @@ -260,7 +260,7 @@ void Ball::ballHadling(void) case BALL_CLOSE: if (triggerCount == 2) // 确保是第二次触发 { - //osDelay(10); // 延时去抖 + osDelay(100); // 延时去抖 HAL_GPIO_WritePin(PAW_GPIO_Port, PAW_Pin, GPIO_PIN_RESET); // 闭合气缸爪子 currentState1 = BALL_REVERSE; // 切换到反转状态 } diff --git a/User/module/ball.hpp b/User/module/ball.hpp index d880f97..d0e4cd4 100644 --- a/User/module/ball.hpp +++ b/User/module/ball.hpp @@ -7,7 +7,7 @@ #include "djiMotor.h" #include "pid.h" -#define HANDLING3 0 +#define HANDLING3 1 // 定义状态枚举 typedef enum { diff --git a/User/task/ballTask.cpp b/User/task/ballTask.cpp index a4fadf6..ff14774 100644 --- a/User/task/ballTask.cpp +++ b/User/task/ballTask.cpp @@ -18,8 +18,8 @@ void FunctionBall(void *argument) { (void)argument; /* 未使用argument,消除警告 */ - // const uint32_t delay_tick = osKernelGetTickFreq() / TASK_FREQ_BALL; - // uint32_t tick = osKernelGetTickCount(); + const uint32_t delay_tick = osKernelGetTickFreq() / TASK_FREQ_BALL; + uint32_t tick = osKernelGetTickCount(); while(1) { @@ -30,19 +30,17 @@ void FunctionBall(void *argument) //abc=HAL_GPIO_ReadPin(STOP_GPIO_Port, STOP_Pin); ball.ballHadling(); // 处理摩擦轮转动 -// speedm=4000; -// speedm1=4000; -// ball.Spin(speedm,speedm1); -// ball.Send_control(); + ball.Spin(speedm,speedm1); + ball.Send_control(); -// vofa[0] = speedm; // 发送电机角度数据 -// vofa[1] = -ball.hand_Motor[0]->speed_rpm; // 发送电机角度数据 -// vofa[2] = ball.hand_Motor[1]->speed_rpm; // 发送电机速度数据 -// vofa[3] = ball.hand_Motor[2]->speed_rpm; // 发送电机速度数据 + vofa[0] = speedm; // 发送电机角度数据 + vofa[1] = -ball.hand_Motor[0]->speed_rpm; // 发送电机角度数据 + vofa[2] = ball.hand_Motor[1]->speed_rpm; // 发送电机速度数据 + vofa[3] = ball.hand_Motor[2]->speed_rpm; // 发送电机速度数据 -// vofa_tx_main(vofa); // 发送数据到虚拟串口 + vofa_tx_main(vofa); // 发送数据到虚拟串口 - // tick += delay_tick; /* 计算下一个唤醒时刻 */ - // osDelayUntil(tick); + tick += delay_tick; /* 计算下一个唤醒时刻 */ + osDelayUntil(tick); } } diff --git a/User/task/encodeCan.cpp b/User/task/encodeCan.cpp index 2791a76..261904d 100644 --- a/User/task/encodeCan.cpp +++ b/User/task/encodeCan.cpp @@ -15,11 +15,11 @@ void FunctionCan(void *argument) { (void)argument; /* 未使用argument,消除警告 */ - //const uint32_t delay_tick = osKernelGetTickFreq() / TASK_FREQ_CAN; + const uint32_t delay_tick = osKernelGetTickFreq() / TASK_FREQ_CAN; djiInit(); - //uint32_t tick = osKernelGetTickCount(); + uint32_t tick = osKernelGetTickCount(); while(1) { #ifdef DEBUG @@ -30,7 +30,7 @@ void FunctionCan(void *argument) djiMotorEncode(); can2MotorEncode(); - // tick += delay_tick; /* 计算下一个唤醒时刻 */ - // osDelayUntil(tick); + tick += delay_tick; /* 计算下一个唤醒时刻 */ + osDelayUntil(tick); } } diff --git a/User/task/userTask.c b/User/task/userTask.c index 0d66988..5149900 100644 --- a/User/task/userTask.c +++ b/User/task/userTask.c @@ -15,23 +15,12 @@ const osThreadAttr_t attr_gimbal = { .stack_size = 128 * 4, }; -const osThreadAttr_t attr_take = { - .name = "take", - .priority = osPriorityRealtime, - .stack_size = 128 * 4, -}; - const osThreadAttr_t attr_can = { .name = "can", .priority = osPriorityRealtime, - .stack_size = 128 * 8, + .stack_size = 256 * 4, }; -const osThreadAttr_t attr_rc = { - .name = "rc", - .priority = osPriorityRealtime, - .stack_size = 128 * 8, -}; const osThreadAttr_t attr_ball = { .name = "ball", @@ -41,7 +30,7 @@ const osThreadAttr_t attr_ball = { const osThreadAttr_t attr_nuc = { .name = "nuc", .priority = osPriorityRealtime, - .stack_size = 256 * 4, + .stack_size = 128 * 4, }; diff --git a/User/task/userTask.h b/User/task/userTask.h index 20977a6..3d11067 100644 --- a/User/task/userTask.h +++ b/User/task/userTask.h @@ -13,16 +13,13 @@ extern "C" { /* Exported constants ------------------------------------------------------- */ /* 所有任务都要define一个“任务运行频率”和“初始化延时” */ -#define TASK_FREQ_CTRL_CHASSIS (500u) -#define TASK_FREQ_CTRL_GIMBAL (500u) +#define TASK_FREQ_CTRL_GIMBAL (250u) #define TASK_FREQ_CTRL_SHOOT (500u) -#define TASK_FREQ_CTRL_CAP (100u) #define TASK_FREQ_CTRL_COMMAND (500u) -#define TASK_FREQ_INFO (4u) #define TASK_FREQ_MONITOR (2u) -#define TASK_FREQ_CAN (500u) +#define TASK_FREQ_CAN (1500u) #define TASK_FREQ_AI (500u) -#define TASK_FREQ_BALL (250u) +#define TASK_FREQ_BALL (500u) #define TASK_INIT_DELAY_INFO (500u) #define TASK_INIT_DELAY_MONITOR (10) @@ -42,11 +39,11 @@ typedef struct struct { osThreadId_t can; - osThreadId_t rc; + //osThreadId_t rc; osThreadId_t nuc; osThreadId_t shoot; osThreadId_t gimbal; - osThreadId_t handling; + //osThreadId_t handling; osThreadId_t ball; }thread; @@ -67,32 +64,32 @@ typedef struct #ifdef DEBUG struct { UBaseType_t can; - UBaseType_t rc; + //UBaseType_t rc; UBaseType_t nuc; UBaseType_t shoot; UBaseType_t gimbal; - UBaseType_t handling; + //UBaseType_t handling; UBaseType_t ball; } stack_water_mark; /* stack使用 */ struct { float can; - float rc; + //float rc; float nuc; float shoot; float gimbal; - float handling; + //float handling; float ball; } freq; /* 任务运行频率 */ struct { float can; - float rc; + //float rc; float nuc; float shoot; float gimbal; - float handling; + //float handling; float ball; } last_up_time; /* 任务最近运行时 */ #endif @@ -103,9 +100,7 @@ typedef struct extern task_t task_struct; /* 任务结构体实例化 */ extern const osThreadAttr_t attr_shoot; extern const osThreadAttr_t attr_gimbal; -extern const osThreadAttr_t attr_take; extern const osThreadAttr_t attr_can; -extern const osThreadAttr_t attr_rc; extern const osThreadAttr_t attr_ball; extern const osThreadAttr_t attr_nuc; extern const osEventFlagsAttr_t attr_event;