Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
aa232e9862 | |||
2cebb50876 |
@ -159,7 +159,7 @@ void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan)
|
|||||||
|
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
static osEventFlagsId_t eventReceive;
|
//static osEventFlagsId_t eventReceive;
|
||||||
static osThreadId_t thread_alert;
|
static osThreadId_t thread_alert;
|
||||||
/**
|
/**
|
||||||
* @brief 自定义大疆电机回调函数
|
* @brief 自定义大疆电机回调函数
|
||||||
|
@ -29,7 +29,7 @@ Ball ::Ball()
|
|||||||
if(i <=3)
|
if(i <=3)
|
||||||
{
|
{
|
||||||
hand_Motor[i]->type = M3508;//设置电机类型
|
hand_Motor[i]->type = M3508;//设置电机类型
|
||||||
PID_init(&speed_pid[i],PID_POSITION,M3508_speed_PID,16000, 10000);//pid初始化
|
PID_init(&speed_pid[i],PID_POSITION,M3508_speed_PID,16000, 1000);//pid初始化
|
||||||
}
|
}
|
||||||
result[i] = 0;
|
result[i] = 0;
|
||||||
speedSet[i] = 0;
|
speedSet[i] = 0;
|
||||||
@ -87,9 +87,9 @@ void Ball::ballHadling(void)
|
|||||||
|
|
||||||
if (ball_state == 1) //读光电 有球 0 无球 1
|
if (ball_state == 1) //读光电 有球 0 无球 1
|
||||||
{
|
{
|
||||||
osDelay(200); // 延时200ms
|
osDelay(100); // 延时200ms
|
||||||
speedm=4500;
|
speedm=2500;
|
||||||
speedm1=4500;
|
speedm1=2500;
|
||||||
currentState1 = BALL_REVERSE; // 切换到反转状态
|
currentState1 = BALL_REVERSE; // 切换到反转状态
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -100,7 +100,6 @@ void Ball::ballHadling(void)
|
|||||||
if (ball_state == 0)
|
if (ball_state == 0)
|
||||||
{
|
{
|
||||||
|
|
||||||
//flag=2; //抽象的计次
|
|
||||||
speedm=0; // 停止电机
|
speedm=0; // 停止电机
|
||||||
speedm1=0;
|
speedm1=0;
|
||||||
currentState1 = BALL_CLOSE; // 切换到完成状态
|
currentState1 = BALL_CLOSE; // 切换到完成状态
|
||||||
@ -115,15 +114,7 @@ void Ball::ballHadling(void)
|
|||||||
HAL_GPIO_WritePin(CLOSE_GPIO_Port, CLOSE_Pin, GPIO_PIN_RESET);
|
HAL_GPIO_WritePin(CLOSE_GPIO_Port, CLOSE_Pin, GPIO_PIN_RESET);
|
||||||
currentState1 = BALL_FINISH; // 切换到完成状态
|
currentState1 = BALL_FINISH; // 切换到完成状态
|
||||||
}
|
}
|
||||||
// if (flag == 2)
|
|
||||||
// {
|
|
||||||
// if(ball_state == 0)
|
|
||||||
// {
|
|
||||||
// HAL_GPIO_WritePin(CLOSE_GPIO_Port, CLOSE_Pin, GPIO_PIN_RESET);
|
|
||||||
// currentState1 = BALL_FINISH; // 切换到完成状态
|
|
||||||
// }
|
|
||||||
|
|
||||||
// }
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case BALL_FINISH:
|
case BALL_FINISH:
|
||||||
@ -227,7 +218,7 @@ void Ball::ballHadling(void)
|
|||||||
|
|
||||||
case BALL_FORWARD:
|
case BALL_FORWARD:
|
||||||
HAL_GPIO_WritePin(PAW_GPIO_Port, PAW_Pin, GPIO_PIN_SET); // 打开气缸爪子
|
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); // 打开下气缸
|
HAL_GPIO_WritePin(DOWN_GPIO_Port, DOWN_Pin, GPIO_PIN_SET); // 打开下气缸
|
||||||
currentState1 = BALL_DROP; // 切换到球下落状态
|
currentState1 = BALL_DROP; // 切换到球下落状态
|
||||||
break;
|
break;
|
||||||
@ -260,7 +251,7 @@ void Ball::ballHadling(void)
|
|||||||
case BALL_CLOSE:
|
case BALL_CLOSE:
|
||||||
if (triggerCount == 2) // 确保是第二次触发
|
if (triggerCount == 2) // 确保是第二次触发
|
||||||
{
|
{
|
||||||
//osDelay(10); // 延时去抖
|
osDelay(100); // 延时去抖
|
||||||
HAL_GPIO_WritePin(PAW_GPIO_Port, PAW_Pin, GPIO_PIN_RESET); // 闭合气缸爪子
|
HAL_GPIO_WritePin(PAW_GPIO_Port, PAW_Pin, GPIO_PIN_RESET); // 闭合气缸爪子
|
||||||
currentState1 = BALL_REVERSE; // 切换到反转状态
|
currentState1 = BALL_REVERSE; // 切换到反转状态
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#include "djiMotor.h"
|
#include "djiMotor.h"
|
||||||
#include "pid.h"
|
#include "pid.h"
|
||||||
|
|
||||||
#define HANDLING3 0
|
#define HANDLING3 1
|
||||||
|
|
||||||
// 定义状态枚举
|
// 定义状态枚举
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
@ -18,8 +18,8 @@ void FunctionBall(void *argument)
|
|||||||
{
|
{
|
||||||
(void)argument; /* 未使用argument,消除警告 */
|
(void)argument; /* 未使用argument,消除警告 */
|
||||||
|
|
||||||
// const uint32_t delay_tick = osKernelGetTickFreq() / TASK_FREQ_BALL;
|
const uint32_t delay_tick = osKernelGetTickFreq() / TASK_FREQ_BALL;
|
||||||
// uint32_t tick = osKernelGetTickCount();
|
uint32_t tick = osKernelGetTickCount();
|
||||||
|
|
||||||
while(1)
|
while(1)
|
||||||
{
|
{
|
||||||
@ -30,19 +30,20 @@ void FunctionBall(void *argument)
|
|||||||
//abc=HAL_GPIO_ReadPin(STOP_GPIO_Port, STOP_Pin);
|
//abc=HAL_GPIO_ReadPin(STOP_GPIO_Port, STOP_Pin);
|
||||||
|
|
||||||
ball.ballHadling(); // 处理摩擦轮转动
|
ball.ballHadling(); // 处理摩擦轮转动
|
||||||
// speedm=4000;
|
ball.Spin(speedm,speedm1);
|
||||||
// speedm1=4000;
|
ball.Send_control();
|
||||||
// ball.Spin(speedm,speedm1);
|
|
||||||
// ball.Send_control();
|
|
||||||
|
|
||||||
// vofa[0] = speedm; // 发送电机角度数据
|
vofa[0] = speedm; // 发送电机角度数据
|
||||||
// vofa[1] = -ball.hand_Motor[0]->speed_rpm; // 发送电机角度数据
|
vofa[1] = -ball.hand_Motor[0]->speed_rpm; // 发送电机角度数据
|
||||||
// vofa[2] = ball.hand_Motor[1]->speed_rpm; // 发送电机速度数据
|
vofa[2] = ball.hand_Motor[1]->speed_rpm; // 发送电机速度数据
|
||||||
// vofa[3] = ball.hand_Motor[2]->speed_rpm; // 发送电机速度数据
|
vofa[3] = ball.hand_Motor[2]->speed_rpm; // 发送电机速度数据
|
||||||
|
vofa[4] = ball.result[0];
|
||||||
|
vofa[5] = ball.result[1];
|
||||||
|
vofa[6] = ball.result[2];
|
||||||
|
|
||||||
|
vofa_tx_main(vofa); // 发送数据到虚拟串口
|
||||||
|
|
||||||
// vofa_tx_main(vofa); // 发送数据到虚拟串口
|
tick += delay_tick; /* 计算下一个唤醒时刻 */
|
||||||
|
osDelayUntil(tick);
|
||||||
// tick += delay_tick; /* 计算下一个唤醒时刻 */
|
|
||||||
// osDelayUntil(tick);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,11 +15,11 @@ void FunctionCan(void *argument)
|
|||||||
{
|
{
|
||||||
(void)argument; /* 未使用argument,消除警告 */
|
(void)argument; /* 未使用argument,消除警告 */
|
||||||
|
|
||||||
//const uint32_t delay_tick = osKernelGetTickFreq() / TASK_FREQ_CAN;
|
const uint32_t delay_tick = osKernelGetTickFreq() / TASK_FREQ_CAN;
|
||||||
|
|
||||||
djiInit();
|
djiInit();
|
||||||
|
|
||||||
//uint32_t tick = osKernelGetTickCount();
|
uint32_t tick = osKernelGetTickCount();
|
||||||
while(1)
|
while(1)
|
||||||
{
|
{
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
@ -30,7 +30,7 @@ void FunctionCan(void *argument)
|
|||||||
djiMotorEncode();
|
djiMotorEncode();
|
||||||
can2MotorEncode();
|
can2MotorEncode();
|
||||||
|
|
||||||
// tick += delay_tick; /* 计算下一个唤醒时刻 */
|
tick += delay_tick; /* 计算下一个唤醒时刻 */
|
||||||
// osDelayUntil(tick);
|
osDelayUntil(tick);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,23 +15,12 @@ const osThreadAttr_t attr_gimbal = {
|
|||||||
.stack_size = 128 * 4,
|
.stack_size = 128 * 4,
|
||||||
};
|
};
|
||||||
|
|
||||||
const osThreadAttr_t attr_take = {
|
|
||||||
.name = "take",
|
|
||||||
.priority = osPriorityRealtime,
|
|
||||||
.stack_size = 128 * 4,
|
|
||||||
};
|
|
||||||
|
|
||||||
const osThreadAttr_t attr_can = {
|
const osThreadAttr_t attr_can = {
|
||||||
.name = "can",
|
.name = "can",
|
||||||
.priority = osPriorityRealtime,
|
.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 = {
|
const osThreadAttr_t attr_ball = {
|
||||||
.name = "ball",
|
.name = "ball",
|
||||||
@ -41,7 +30,7 @@ const osThreadAttr_t attr_ball = {
|
|||||||
const osThreadAttr_t attr_nuc = {
|
const osThreadAttr_t attr_nuc = {
|
||||||
.name = "nuc",
|
.name = "nuc",
|
||||||
.priority = osPriorityRealtime,
|
.priority = osPriorityRealtime,
|
||||||
.stack_size = 256 * 4,
|
.stack_size = 128 * 4,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -13,16 +13,13 @@ extern "C" {
|
|||||||
/* Exported constants ------------------------------------------------------- */
|
/* Exported constants ------------------------------------------------------- */
|
||||||
|
|
||||||
/* 所有任务都要define一个“任务运行频率”和“初始化延时” */
|
/* 所有任务都要define一个“任务运行频率”和“初始化延时” */
|
||||||
#define TASK_FREQ_CTRL_CHASSIS (500u)
|
#define TASK_FREQ_CTRL_GIMBAL (250u)
|
||||||
#define TASK_FREQ_CTRL_GIMBAL (500u)
|
|
||||||
#define TASK_FREQ_CTRL_SHOOT (500u)
|
#define TASK_FREQ_CTRL_SHOOT (500u)
|
||||||
#define TASK_FREQ_CTRL_CAP (100u)
|
|
||||||
#define TASK_FREQ_CTRL_COMMAND (500u)
|
#define TASK_FREQ_CTRL_COMMAND (500u)
|
||||||
#define TASK_FREQ_INFO (4u)
|
|
||||||
#define TASK_FREQ_MONITOR (2u)
|
#define TASK_FREQ_MONITOR (2u)
|
||||||
#define TASK_FREQ_CAN (500u)
|
#define TASK_FREQ_CAN (1500u)
|
||||||
#define TASK_FREQ_AI (500u)
|
#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_INFO (500u)
|
||||||
#define TASK_INIT_DELAY_MONITOR (10)
|
#define TASK_INIT_DELAY_MONITOR (10)
|
||||||
@ -42,11 +39,11 @@ typedef struct
|
|||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
osThreadId_t can;
|
osThreadId_t can;
|
||||||
osThreadId_t rc;
|
//osThreadId_t rc;
|
||||||
osThreadId_t nuc;
|
osThreadId_t nuc;
|
||||||
osThreadId_t shoot;
|
osThreadId_t shoot;
|
||||||
osThreadId_t gimbal;
|
osThreadId_t gimbal;
|
||||||
osThreadId_t handling;
|
//osThreadId_t handling;
|
||||||
osThreadId_t ball;
|
osThreadId_t ball;
|
||||||
|
|
||||||
}thread;
|
}thread;
|
||||||
@ -67,32 +64,32 @@ typedef struct
|
|||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
struct {
|
struct {
|
||||||
UBaseType_t can;
|
UBaseType_t can;
|
||||||
UBaseType_t rc;
|
//UBaseType_t rc;
|
||||||
UBaseType_t nuc;
|
UBaseType_t nuc;
|
||||||
UBaseType_t shoot;
|
UBaseType_t shoot;
|
||||||
UBaseType_t gimbal;
|
UBaseType_t gimbal;
|
||||||
UBaseType_t handling;
|
//UBaseType_t handling;
|
||||||
UBaseType_t ball;
|
UBaseType_t ball;
|
||||||
|
|
||||||
} stack_water_mark; /* stack使用 */
|
} stack_water_mark; /* stack使用 */
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
float can;
|
float can;
|
||||||
float rc;
|
//float rc;
|
||||||
float nuc;
|
float nuc;
|
||||||
float shoot;
|
float shoot;
|
||||||
float gimbal;
|
float gimbal;
|
||||||
float handling;
|
//float handling;
|
||||||
float ball;
|
float ball;
|
||||||
} freq; /* 任务运行频率 */
|
} freq; /* 任务运行频率 */
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
float can;
|
float can;
|
||||||
float rc;
|
//float rc;
|
||||||
float nuc;
|
float nuc;
|
||||||
float shoot;
|
float shoot;
|
||||||
float gimbal;
|
float gimbal;
|
||||||
float handling;
|
//float handling;
|
||||||
float ball;
|
float ball;
|
||||||
} last_up_time; /* 任务最近运行时 */
|
} last_up_time; /* 任务最近运行时 */
|
||||||
#endif
|
#endif
|
||||||
@ -103,9 +100,7 @@ typedef struct
|
|||||||
extern task_t task_struct; /* 任务结构体实例化 */
|
extern task_t task_struct; /* 任务结构体实例化 */
|
||||||
extern const osThreadAttr_t attr_shoot;
|
extern const osThreadAttr_t attr_shoot;
|
||||||
extern const osThreadAttr_t attr_gimbal;
|
extern const osThreadAttr_t attr_gimbal;
|
||||||
extern const osThreadAttr_t attr_take;
|
|
||||||
extern const osThreadAttr_t attr_can;
|
extern const osThreadAttr_t attr_can;
|
||||||
extern const osThreadAttr_t attr_rc;
|
|
||||||
extern const osThreadAttr_t attr_ball;
|
extern const osThreadAttr_t attr_ball;
|
||||||
extern const osThreadAttr_t attr_nuc;
|
extern const osThreadAttr_t attr_nuc;
|
||||||
extern const osEventFlagsAttr_t attr_event;
|
extern const osEventFlagsAttr_t attr_event;
|
||||||
|
Loading…
Reference in New Issue
Block a user