攻守方模式
This commit is contained in:
parent
bffdb230c6
commit
e420cea621
4
MDK-ARM/.vscode/uv4.log
vendored
4
MDK-ARM/.vscode/uv4.log
vendored
@ -1,8 +1,10 @@
|
|||||||
*** Using Compiler 'V5.06 update 7 (build 960)', folder: 'D:\keil\ARM\ARMCC\Bin'
|
*** Using Compiler 'V5.06 update 7 (build 960)', folder: 'D:\keil\ARM\ARMCC\Bin'
|
||||||
Build target 'R1'
|
Build target 'R1'
|
||||||
|
compiling shootTask.cpp...
|
||||||
|
compiling shoot.cpp...
|
||||||
compiling ball.cpp...
|
compiling ball.cpp...
|
||||||
linking...
|
linking...
|
||||||
Program Size: Code=31076 RO-data=1832 RW-data=268 ZI-data=32252
|
Program Size: Code=31644 RO-data=1832 RW-data=268 ZI-data=32252
|
||||||
FromELF: creating hex file...
|
FromELF: creating hex file...
|
||||||
"R1\R1.axf" - 0 Error(s), 0 Warning(s).
|
"R1\R1.axf" - 0 Error(s), 0 Warning(s).
|
||||||
Build Time Elapsed: 00:00:06
|
Build Time Elapsed: 00:00:06
|
||||||
|
2
MDK-ARM/.vscode/uv4.log.lock
vendored
2
MDK-ARM/.vscode/uv4.log.lock
vendored
@ -1 +1 @@
|
|||||||
2025/6/25 21:22:14
|
2025/6/26 3:22:31
|
@ -175,7 +175,25 @@
|
|||||||
<WinNumber>1</WinNumber>
|
<WinNumber>1</WinNumber>
|
||||||
<ItemText>ball_exit,0x0A</ItemText>
|
<ItemText>ball_exit,0x0A</ItemText>
|
||||||
</Ww>
|
</Ww>
|
||||||
|
<Ww>
|
||||||
|
<count>4</count>
|
||||||
|
<WinNumber>1</WinNumber>
|
||||||
|
<ItemText>nucbuf</ItemText>
|
||||||
|
</Ww>
|
||||||
|
<Ww>
|
||||||
|
<count>5</count>
|
||||||
|
<WinNumber>1</WinNumber>
|
||||||
|
<ItemText>nuc_v</ItemText>
|
||||||
|
</Ww>
|
||||||
</WatchWindow1>
|
</WatchWindow1>
|
||||||
|
<MemoryWindow4>
|
||||||
|
<Mm>
|
||||||
|
<WinNumber>4</WinNumber>
|
||||||
|
<SubType>0</SubType>
|
||||||
|
<ItemText>nucbuf</ItemText>
|
||||||
|
<AccSizeX>0</AccSizeX>
|
||||||
|
</Mm>
|
||||||
|
</MemoryWindow4>
|
||||||
<Tracepoint>
|
<Tracepoint>
|
||||||
<THDelay>0</THDelay>
|
<THDelay>0</THDelay>
|
||||||
</Tracepoint>
|
</Tracepoint>
|
||||||
@ -934,7 +952,7 @@
|
|||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>User/device</GroupName>
|
<GroupName>User/device</GroupName>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>1</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
@ -1026,7 +1044,7 @@
|
|||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>User/module</GroupName>
|
<GroupName>User/module</GroupName>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>1</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
@ -1058,7 +1076,7 @@
|
|||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>User/task</GroupName>
|
<GroupName>User/task</GroupName>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>1</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
|
@ -29,9 +29,15 @@ r1上层
|
|||||||
+ 👆 传球档 👆 配合档
|
+ 👆 传球档 👆 配合档
|
||||||
+ 中 初始档 中 初始档
|
+ 中 初始档 中 初始档
|
||||||
+ 👇 发射档 👇 运球档
|
+ 👇 发射档 👇 运球档
|
||||||
+ 起步遥控档我直接蓄力准备接球
|
+ 起步遥控档我直接蓄力准备接球 + 可多次的运球
|
||||||
+ 可多次的运球
|
|
||||||
+ 缩回转移球
|
+ 缩回转移球
|
||||||
+ 蓄力到位,收到掉落信号和已伸出信号
|
+ 蓄力到位,收到掉落信号和已伸出信号
|
||||||
+ 根据视觉拟合信息的动态调整
|
+ 根据视觉拟合信息的动态调整
|
||||||
+ 拨置👇发射清空掉落信号
|
+ 拨置👇发射清空掉落信号
|
||||||
|
|
||||||
|
+ 用一个攻守方档
|
||||||
|
+ 攻方时拨下立马蓄力并伸出(可小角度)
|
||||||
|
+ 守方时不动并保持缩回
|
||||||
|
+ 👇 运球档正常运球
|
||||||
|
+ 中 初始档直接缩回
|
||||||
|
+ 👆 配合档 完成配合并伸出才能发射
|
||||||
|
@ -16,7 +16,11 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#define ONE_CONTROL 0
|
#define ONE_CONTROL 1
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//是否使用大疆DT7遥控器
|
//是否使用大疆DT7遥控器
|
||||||
#ifndef DT7
|
#ifndef DT7
|
||||||
#define DT7 0
|
#define DT7 0
|
||||||
@ -33,9 +37,10 @@
|
|||||||
//运球
|
//运球
|
||||||
#define BALL_DOWN (1<<1)
|
#define BALL_DOWN (1<<1)
|
||||||
|
|
||||||
//运球结束
|
//可以蓄力标志
|
||||||
//#define PREPARE (1<<0)
|
#define READY_TELL (1<<0)
|
||||||
|
//运球完成
|
||||||
|
#define HANDING_FINISH (1<<2)
|
||||||
//伸缩结束
|
//伸缩结束
|
||||||
#define EXTEND_OK (1<<3)
|
#define EXTEND_OK (1<<3)
|
||||||
|
|
||||||
|
@ -12,6 +12,7 @@ extern int ball_exit;
|
|||||||
//伸缩
|
//伸缩
|
||||||
#define I_ANGLE 147
|
#define I_ANGLE 147
|
||||||
#define O_ANGLE 187
|
#define O_ANGLE 187
|
||||||
|
#define WAIT_POS 165
|
||||||
|
|
||||||
//PE11 气缸
|
//PE11 气缸
|
||||||
|
|
||||||
@ -72,6 +73,14 @@ void Ball::rc_mode()
|
|||||||
extern_key=OUT;
|
extern_key=OUT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(rc_ctrl.sw[5]==1800)
|
||||||
|
{
|
||||||
|
ready_key=SIDE;
|
||||||
|
}
|
||||||
|
if(rc_ctrl.sw[5]==200)
|
||||||
|
{
|
||||||
|
ready_key=0; //默认不准备
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Ball::Send_control()
|
void Ball::Send_control()
|
||||||
@ -222,7 +231,10 @@ void Ball::ball_control()
|
|||||||
hand_thread = osThreadFlagsGet(); // 获取任务通知标志位
|
hand_thread = osThreadFlagsGet(); // 获取任务通知标志位
|
||||||
ball_state = HAL_GPIO_ReadPin(up_ball_GPIO_Port, up_ball_Pin); // 读取光电状态(有球 1,无球 0)
|
ball_state = HAL_GPIO_ReadPin(up_ball_GPIO_Port, up_ball_Pin); // 读取光电状态(有球 1,无球 0)
|
||||||
|
|
||||||
switch (rc_key){
|
//进攻
|
||||||
|
if(ready_key==SIDE)
|
||||||
|
{
|
||||||
|
switch (rc_key){
|
||||||
case MIDDLE2:
|
case MIDDLE2:
|
||||||
Idle_control();
|
Idle_control();
|
||||||
break;
|
break;
|
||||||
@ -236,6 +248,17 @@ void Ball::ball_control()
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
//防守
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xiaomi.position = I_ANGLE; // 保持收回
|
||||||
|
HAL_GPIO_WritePin(CLOSE_GPIO_Port, CLOSE_Pin, GPIO_PIN_RESET); // 确保爪气缸关闭
|
||||||
|
HAL_GPIO_WritePin(DOWN_GPIO_Port, DOWN_Pin, GPIO_PIN_RESET); // 确保下气缸关闭
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Send_control();
|
Send_control();
|
||||||
|
|
||||||
@ -260,7 +283,7 @@ void Ball::ballDown(void)
|
|||||||
HAL_GPIO_WritePin(CLOSE_GPIO_Port, CLOSE_Pin, GPIO_PIN_SET);
|
HAL_GPIO_WritePin(CLOSE_GPIO_Port, CLOSE_Pin, GPIO_PIN_SET);
|
||||||
HAL_GPIO_WritePin(DOWN_GPIO_Port, DOWN_Pin, GPIO_PIN_RESET);
|
HAL_GPIO_WritePin(DOWN_GPIO_Port, DOWN_Pin, GPIO_PIN_RESET);
|
||||||
// 检测到球自由下落一次就切换状态
|
// 检测到球自由下落一次就切换状态
|
||||||
if(ball_state == 0)
|
if(ball_state == 1)
|
||||||
{
|
{
|
||||||
currentState1 = EXTEND_OUT;
|
currentState1 = EXTEND_OUT;
|
||||||
}
|
}
|
||||||
@ -291,9 +314,22 @@ void Ball::Idle_control()
|
|||||||
HAL_GPIO_WritePin(CLOSE_GPIO_Port, CLOSE_Pin, GPIO_PIN_RESET); // 确保爪气缸关闭
|
HAL_GPIO_WritePin(CLOSE_GPIO_Port, CLOSE_Pin, GPIO_PIN_RESET); // 确保爪气缸关闭
|
||||||
HAL_GPIO_WritePin(DOWN_GPIO_Port, DOWN_Pin, GPIO_PIN_RESET); // 确保下气缸关闭
|
HAL_GPIO_WritePin(DOWN_GPIO_Port, DOWN_Pin, GPIO_PIN_RESET); // 确保下气缸关闭
|
||||||
|
|
||||||
osThreadFlagsClear(PREPARE);
|
|
||||||
osThreadFlagsClear(EXTEND_OK);
|
osThreadFlagsClear(EXTEND_OK);
|
||||||
|
|
||||||
|
if(ready_key==SIDE) // 检测是否准备好
|
||||||
|
{
|
||||||
|
xiaomi.position = WAIT_POS;
|
||||||
|
if(feedback->position_deg >= WAIT_POS-3)
|
||||||
|
{
|
||||||
|
osThreadFlagsSet(task_struct.thread.shoot, READY_TELL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xiaomi.position = I_ANGLE; // 默认回到收回位置
|
||||||
|
}
|
||||||
|
|
||||||
// 拨杆回到中间挡位时,回位并重置状态机
|
// 拨杆回到中间挡位时,回位并重置状态机
|
||||||
if(currentState1==EXTEND_FINISH)//转移后
|
if(currentState1==EXTEND_FINISH)//转移后
|
||||||
{
|
{
|
||||||
@ -322,13 +358,14 @@ void Ball::ballHadling(void)
|
|||||||
switch (currentState1)
|
switch (currentState1)
|
||||||
{
|
{
|
||||||
case BALL_IDLE:
|
case BALL_IDLE:
|
||||||
HAL_GPIO_WritePin(CLOSE_GPIO_Port, CLOSE_Pin, GPIO_PIN_RESET); //确保爪气缸关闭
|
if (rc_key == DOWN2)
|
||||||
HAL_GPIO_WritePin(DOWN_GPIO_Port, DOWN_Pin, GPIO_PIN_RESET); // 确保下气缸关闭
|
{
|
||||||
if (rc_key == DOWN2) // 检测按键是否被按下
|
xiaomi.position = O_ANGLE;//外伸
|
||||||
{
|
if(feedback->position_deg>= O_ANGLE-1)// 确保伸缩电机到位
|
||||||
|
{
|
||||||
|
currentState1 = BALL_FORWARD;
|
||||||
currentState1 = BALL_FORWARD;
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -369,13 +406,9 @@ void Ball::ballHadling(void)
|
|||||||
|
|
||||||
case BALL_FINISH:
|
case BALL_FINISH:
|
||||||
osDelay(50); // 延时 50ms
|
osDelay(50); // 延时 50ms
|
||||||
|
//osThreadFlagsSet(task_struct.thread.ball, HANDING_FINISH);
|
||||||
HAL_GPIO_WritePin(CLOSE_GPIO_Port, CLOSE_Pin, GPIO_PIN_RESET); // 确保气缸爪子闭合
|
HAL_GPIO_WritePin(CLOSE_GPIO_Port, CLOSE_Pin, GPIO_PIN_RESET); // 确保气缸爪子闭合
|
||||||
HAL_GPIO_WritePin(DOWN_GPIO_Port, DOWN_Pin, GPIO_PIN_RESET); // 确保下气缸关闭
|
HAL_GPIO_WritePin(DOWN_GPIO_Port, DOWN_Pin, GPIO_PIN_RESET); // 确保下气缸关闭
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//currentState1 = BALL_IDLE; // 回到空闲状态
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@ -386,6 +419,6 @@ void Ball::ballHadling(void)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -31,14 +31,6 @@ typedef enum {
|
|||||||
|
|
||||||
} BallState_t;
|
} BallState_t;
|
||||||
|
|
||||||
typedef enum
|
|
||||||
{
|
|
||||||
MOTOR_1 = 0,
|
|
||||||
MOTOR_2 = 1,
|
|
||||||
MOTOR_3 = 2,
|
|
||||||
MOTOR_DOWN = 3,
|
|
||||||
MOTOR_NUM
|
|
||||||
}motorhangd_e;
|
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
@ -46,7 +38,8 @@ typedef enum
|
|||||||
MIDDLE2,
|
MIDDLE2,
|
||||||
DOWN2,
|
DOWN2,
|
||||||
IN,
|
IN,
|
||||||
OUT
|
OUT,
|
||||||
|
SIDE
|
||||||
}ball_rc_mode;
|
}ball_rc_mode;
|
||||||
|
|
||||||
// 定义光电传感器检测宏
|
// 定义光电传感器检测宏
|
||||||
@ -78,6 +71,7 @@ public:
|
|||||||
//==========================公共变量==========================//
|
//==========================公共变量==========================//
|
||||||
int16_t rc_key; //遥控器按键
|
int16_t rc_key; //遥控器按键
|
||||||
int16_t extern_key;
|
int16_t extern_key;
|
||||||
|
int16_t ready_key; //准备按键
|
||||||
//用于传接球,运球后通知
|
//用于传接球,运球后通知
|
||||||
volatile BallState_t ballStatus;//是否有球
|
volatile BallState_t ballStatus;//是否有球
|
||||||
volatile uint32_t hand_thread;//接收传回的线程通知
|
volatile uint32_t hand_thread;//接收传回的线程通知
|
||||||
|
@ -156,11 +156,11 @@ void Shoot::rc_mode()
|
|||||||
// }
|
// }
|
||||||
if(rc_ctrl.sw[5]==1800)
|
if(rc_ctrl.sw[5]==1800)
|
||||||
{
|
{
|
||||||
ready_key=PREPARE;
|
ready_key=OFFENSIVE;
|
||||||
}
|
}
|
||||||
else
|
else if(rc_ctrl.sw[5]==200)
|
||||||
{
|
{
|
||||||
ready_key=0; //默认不准备
|
ready_key=DEFENSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
// //旋钮增量
|
// //旋钮增量
|
||||||
@ -370,6 +370,7 @@ feedback.fd_tpos = trigger_Motor->total_angle;
|
|||||||
|
|
||||||
shoot_thread = osThreadFlagsGet(); // 获取任务通知标志位
|
shoot_thread = osThreadFlagsGet(); // 获取任务通知标志位
|
||||||
|
|
||||||
|
if(ready_key==OFFENSIVE){
|
||||||
switch (mode_key)
|
switch (mode_key)
|
||||||
{
|
{
|
||||||
case VSION:
|
case VSION:
|
||||||
@ -424,9 +425,15 @@ break;
|
|||||||
BSP_Buzzer_Set(1,5000);
|
BSP_Buzzer_Set(1,5000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(shoot_thread & READY_TELL) // 如果收到等待配合的通知
|
||||||
|
{
|
||||||
|
ball_receive(); // 执行接收球的操作
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ball_receive(); // 执行接收球的操作
|
go1.Pos = TOP_POS-3.0f; //-208
|
||||||
|
limit_speed=TO_TOP;//快速上去
|
||||||
|
t_posSet = Tigger_ZERO; // 扳机松开
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -455,6 +462,14 @@ break;
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else if(ready_key==DEFENSE)//攻守档总控
|
||||||
|
{
|
||||||
|
go1.Pos = TOP_POS-3.0f; //-208
|
||||||
|
limit_speed=TO_TOP;//快速上去
|
||||||
|
t_posSet = Tigger_ZERO; // 扳机松开
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
abs_limit_min_max_fp(&go1.Pos ,-210.0f,2.0f);
|
abs_limit_min_max_fp(&go1.Pos ,-210.0f,2.0f);
|
||||||
// 发送数据到蓄力电机
|
// 发送数据到蓄力电机
|
||||||
@ -470,18 +485,16 @@ void Shoot ::ball_receive()
|
|||||||
switch (currentState)
|
switch (currentState)
|
||||||
{
|
{
|
||||||
case SHOOT_IDLE:
|
case SHOOT_IDLE:
|
||||||
//底盘手动档直接蓄力
|
|
||||||
if(ready_key == PREPARE){
|
|
||||||
// 初始状态:钩子移动到顶部,钩住拉簧
|
// 初始状态:钩子移动到顶部,钩住拉簧
|
||||||
control_pos = TOP_POS;
|
control_pos = TOP_POS;
|
||||||
limit_speed=TO_TOP;//快速上去
|
limit_speed=TO_TOP;//快速上去
|
||||||
t_posSet = Tigger_ZERO;
|
t_posSet = Tigger_ZERO;
|
||||||
if(feedback.fd_gopos >= TOP_POS - 0.5f && feedback.fd_gopos <= TOP_POS + 0.5f)
|
if(feedback.fd_gopos <-209)
|
||||||
{
|
{
|
||||||
currentState = GO_TOP; // 切换到准备发射状态
|
currentState = GO_TOP; // 切换到准备发射状态
|
||||||
}
|
}
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GO_TOP:
|
case GO_TOP:
|
||||||
t_posSet = Tigger_DO;
|
t_posSet = Tigger_DO;
|
||||||
if (trigger_Motor->total_angle<Tigger_DO+1.0f && trigger_Motor->total_angle>Tigger_DO-1.0f)
|
if (trigger_Motor->total_angle<Tigger_DO+1.0f && trigger_Motor->total_angle>Tigger_DO-1.0f)
|
||||||
@ -496,7 +509,7 @@ void Shoot ::ball_receive()
|
|||||||
if(feedback.fd_gopos >= BOTTOM_POS - 1.0f && feedback.fd_gopos <= BOTTOM_POS + 1.0f)
|
if(feedback.fd_gopos >= BOTTOM_POS - 1.0f && feedback.fd_gopos <= BOTTOM_POS + 1.0f)
|
||||||
{
|
{
|
||||||
|
|
||||||
//osThreadFlagsClear(PREPARE); // 清除任务通知标志位
|
osThreadFlagsClear(READY_TELL); // 清除任务通知标志位
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@ -514,14 +527,14 @@ void Shoot::RemoveError() {
|
|||||||
t_posSet = Tigger_ZERO;
|
t_posSet = Tigger_ZERO;
|
||||||
is_hooked = false;
|
is_hooked = false;
|
||||||
}
|
}
|
||||||
if(trigger_Motor->total_angle>=Tigger_ZERO-10)
|
if(trigger_Motor->total_angle>=Tigger_ZERO-5)
|
||||||
{
|
{
|
||||||
//认为完全松开
|
//认为完全松开
|
||||||
control_pos=INIT_POS;
|
control_pos=INIT_POS;
|
||||||
BSP_Buzzer_Stop();
|
BSP_Buzzer_Stop();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
limit_speed=3.0f;//慢慢送上去
|
||||||
go1.Pos = control_pos;
|
go1.Pos = control_pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,7 +40,8 @@ typedef enum
|
|||||||
WAIT,
|
WAIT,
|
||||||
TEST,
|
TEST,
|
||||||
VSION,
|
VSION,
|
||||||
PREPARE
|
OFFENSIVE,
|
||||||
|
DEFENSE
|
||||||
}rc_mode;
|
}rc_mode;
|
||||||
|
|
||||||
// 光电传感器读取宏
|
// 光电传感器读取宏
|
||||||
|
@ -22,8 +22,8 @@ void FunctionBall(void *argument)
|
|||||||
|
|
||||||
const uint32_t delay_tick = osKernelGetTickFreq() / TASK_FREQ_BALL;
|
const uint32_t delay_tick = osKernelGetTickFreq() / TASK_FREQ_BALL;
|
||||||
|
|
||||||
// osDelay(6000);//等待极致控制板启动
|
osDelay(6000);//等待极致控制板启动
|
||||||
// XiaomiWait_init(1,&hcan2); //小米电机初始化
|
XiaomiWait_init(1,&hcan2); //小米电机初始化
|
||||||
|
|
||||||
uint32_t tick = osKernelGetTickCount();
|
uint32_t tick = osKernelGetTickCount();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user