增加了pc操作和按键行为
This commit is contained in:
parent
8ab6208ff1
commit
d5d9628cf2
@ -233,14 +233,14 @@ static void CMD_NUC_BuildShootCmd(CMD_t *ctx) {
|
|||||||
ctx->output.shoot.cmd.firecmd = false;
|
ctx->output.shoot.cmd.firecmd = false;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
if (ctx->input.rc.sw[1]==CMD_SW_DOWN) {
|
if ((ctx->active_source == CMD_SRC_PC && ctx->input.pc.mouse.l_click) ||
|
||||||
ctx->output.shoot.cmd.ready = true;
|
(ctx->active_source == CMD_SRC_RC && ctx->input.rc.sw[1] == CMD_SW_DOWN)) {
|
||||||
ctx->output.shoot.cmd.firecmd = true;
|
ctx->output.shoot.cmd.ready = true;
|
||||||
}else {
|
ctx->output.shoot.cmd.firecmd = true;
|
||||||
ctx->output.shoot.cmd.ready = true;
|
} else {
|
||||||
ctx->output.shoot.cmd.firecmd = false;
|
ctx->output.shoot.cmd.ready = true;
|
||||||
}
|
ctx->output.shoot.cmd.firecmd = false;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -388,19 +388,11 @@ static void CMD_PC_BuildBalanceChassisCmd(CMD_t *ctx) {
|
|||||||
ctx->output.balance_chassis.cmd.mode = CHASSIS_MODE_WHELL_LEG_BALANCE;
|
ctx->output.balance_chassis.cmd.mode = CHASSIS_MODE_WHELL_LEG_BALANCE;
|
||||||
|
|
||||||
float vx = 0.0f, wz = 0.0f;
|
float vx = 0.0f, wz = 0.0f;
|
||||||
uint32_t kb = ctx->input.pc.keyboard.bitmap;
|
|
||||||
|
|
||||||
//案件的命令要放到behavior里,
|
|
||||||
// if (kb & CMD_KEY_W) vx += sens->move_sens;
|
|
||||||
// if (kb & CMD_KEY_S) vx -= sens->move_sens;
|
|
||||||
// if (kb & CMD_KEY_A) wz += sens->move_sens;
|
|
||||||
// if (kb & CMD_KEY_D) wz -= sens->move_sens;
|
|
||||||
// if (kb & CMD_KEY_SHIFT) { vx *= sens->move_fast_mult; wz *= sens->move_fast_mult; }
|
|
||||||
// if (kb & CMD_KEY_CTRL) { vx *= sens->move_slow_mult; wz *= sens->move_slow_mult; }
|
|
||||||
|
|
||||||
ctx->output.balance_chassis.cmd.move_vec.vx = vx;
|
ctx->output.balance_chassis.cmd.move_vec.vx = vx;
|
||||||
ctx->output.balance_chassis.cmd.move_vec.wz = wz;
|
ctx->output.balance_chassis.cmd.move_vec.wz = wz;
|
||||||
ctx->output.balance_chassis.cmd.move_vec.vy = 0.0f;
|
ctx->output.balance_chassis.cmd.move_vec.vy = 0.0f;
|
||||||
|
|
||||||
}
|
}
|
||||||
#endif /* CMD_ENABLE_SRC_PC && CMD_ENABLE_MODULE_BALANCE_CHASSIS */
|
#endif /* CMD_ENABLE_SRC_PC && CMD_ENABLE_MODULE_BALANCE_CHASSIS */
|
||||||
#if CMD_ENABLE_SRC_NUC && CMD_ENABLE_MODULE_REFUI
|
#if CMD_ENABLE_SRC_NUC && CMD_ENABLE_MODULE_REFUI
|
||||||
|
|||||||
@ -64,6 +64,7 @@ int8_t CMD_DR16_PC_GetInput(void *data, CMD_RawInput_t *output) {
|
|||||||
/* PC端鼠标映射 */
|
/* PC端鼠标映射 */
|
||||||
output->pc.mouse.x = dr16->data.mouse.x;
|
output->pc.mouse.x = dr16->data.mouse.x;
|
||||||
output->pc.mouse.y = dr16->data.mouse.y;
|
output->pc.mouse.y = dr16->data.mouse.y;
|
||||||
|
output->pc.mouse.z = dr16->data.mouse.z;
|
||||||
output->pc.mouse.l_click = dr16->data.mouse.l_click;
|
output->pc.mouse.l_click = dr16->data.mouse.l_click;
|
||||||
output->pc.mouse.r_click = dr16->data.mouse.r_click;
|
output->pc.mouse.r_click = dr16->data.mouse.r_click;
|
||||||
|
|
||||||
|
|||||||
@ -3,6 +3,7 @@
|
|||||||
*/
|
*/
|
||||||
#include "cmd_behavior.h"
|
#include "cmd_behavior.h"
|
||||||
#include "cmd.h"
|
#include "cmd.h"
|
||||||
|
#include "module/balance_chassis.h"
|
||||||
#if CMD_ENABLE_MODULE_GIMBAL
|
#if CMD_ENABLE_MODULE_GIMBAL
|
||||||
#include "module/gimbal.h"
|
#include "module/gimbal.h"
|
||||||
#endif
|
#endif
|
||||||
@ -16,6 +17,9 @@
|
|||||||
int8_t CMD_Behavior_Handle_FORE(CMD_t *ctx) {
|
int8_t CMD_Behavior_Handle_FORE(CMD_t *ctx) {
|
||||||
#if CMD_ENABLE_MODULE_CHASSIS
|
#if CMD_ENABLE_MODULE_CHASSIS
|
||||||
ctx->output.chassis.cmd.ctrl_vec.vy += ctx->config->sensitivity.move_sens;
|
ctx->output.chassis.cmd.ctrl_vec.vy += ctx->config->sensitivity.move_sens;
|
||||||
|
#endif
|
||||||
|
#if CMD_ENABLE_MODULE_BALANCE_CHASSIS
|
||||||
|
ctx->output.balance_chassis.cmd.move_vec.vy += ctx->config->sensitivity.move_sens;
|
||||||
#endif
|
#endif
|
||||||
return CMD_OK;
|
return CMD_OK;
|
||||||
}
|
}
|
||||||
@ -23,6 +27,9 @@ int8_t CMD_Behavior_Handle_FORE(CMD_t *ctx) {
|
|||||||
int8_t CMD_Behavior_Handle_BACK(CMD_t *ctx) {
|
int8_t CMD_Behavior_Handle_BACK(CMD_t *ctx) {
|
||||||
#if CMD_ENABLE_MODULE_CHASSIS
|
#if CMD_ENABLE_MODULE_CHASSIS
|
||||||
ctx->output.chassis.cmd.ctrl_vec.vy -= ctx->config->sensitivity.move_sens;
|
ctx->output.chassis.cmd.ctrl_vec.vy -= ctx->config->sensitivity.move_sens;
|
||||||
|
#endif
|
||||||
|
#if CMD_ENABLE_MODULE_BALANCE_CHASSIS
|
||||||
|
ctx->output.balance_chassis.cmd.move_vec.vy -= ctx->config->sensitivity.move_sens;
|
||||||
#endif
|
#endif
|
||||||
return CMD_OK;
|
return CMD_OK;
|
||||||
}
|
}
|
||||||
@ -30,6 +37,9 @@ int8_t CMD_Behavior_Handle_BACK(CMD_t *ctx) {
|
|||||||
int8_t CMD_Behavior_Handle_LEFT(CMD_t *ctx) {
|
int8_t CMD_Behavior_Handle_LEFT(CMD_t *ctx) {
|
||||||
#if CMD_ENABLE_MODULE_CHASSIS
|
#if CMD_ENABLE_MODULE_CHASSIS
|
||||||
ctx->output.chassis.cmd.ctrl_vec.vx -= ctx->config->sensitivity.move_sens;
|
ctx->output.chassis.cmd.ctrl_vec.vx -= ctx->config->sensitivity.move_sens;
|
||||||
|
#endif
|
||||||
|
#if CMD_ENABLE_MODULE_BALANCE_CHASSIS
|
||||||
|
ctx->output.balance_chassis.cmd.move_vec.vx -= ctx->config->sensitivity.move_sens;
|
||||||
#endif
|
#endif
|
||||||
return CMD_OK;
|
return CMD_OK;
|
||||||
}
|
}
|
||||||
@ -37,6 +47,9 @@ int8_t CMD_Behavior_Handle_LEFT(CMD_t *ctx) {
|
|||||||
int8_t CMD_Behavior_Handle_RIGHT(CMD_t *ctx) {
|
int8_t CMD_Behavior_Handle_RIGHT(CMD_t *ctx) {
|
||||||
#if CMD_ENABLE_MODULE_CHASSIS
|
#if CMD_ENABLE_MODULE_CHASSIS
|
||||||
ctx->output.chassis.cmd.ctrl_vec.vx += ctx->config->sensitivity.move_sens;
|
ctx->output.chassis.cmd.ctrl_vec.vx += ctx->config->sensitivity.move_sens;
|
||||||
|
#endif
|
||||||
|
#if CMD_ENABLE_MODULE_BALANCE_CHASSIS
|
||||||
|
ctx->output.balance_chassis.cmd.move_vec.vx += ctx->config->sensitivity.move_sens;
|
||||||
#endif
|
#endif
|
||||||
return CMD_OK;
|
return CMD_OK;
|
||||||
}
|
}
|
||||||
@ -45,14 +58,17 @@ int8_t CMD_Behavior_Handle_ACCELERATE(CMD_t *ctx) {
|
|||||||
#if CMD_ENABLE_MODULE_CHASSIS
|
#if CMD_ENABLE_MODULE_CHASSIS
|
||||||
ctx->output.chassis.cmd.ctrl_vec.vx *= ctx->config->sensitivity.move_fast_mult;
|
ctx->output.chassis.cmd.ctrl_vec.vx *= ctx->config->sensitivity.move_fast_mult;
|
||||||
ctx->output.chassis.cmd.ctrl_vec.vy *= ctx->config->sensitivity.move_fast_mult;
|
ctx->output.chassis.cmd.ctrl_vec.vy *= ctx->config->sensitivity.move_fast_mult;
|
||||||
|
#endif
|
||||||
|
#if CMD_ENABLE_MODULE_BALANCE_CHASSIS
|
||||||
|
ctx->output.balance_chassis.cmd.move_vec.vx *= ctx->config->sensitivity.move_fast_mult;
|
||||||
|
ctx->output.balance_chassis.cmd.move_vec.vy *= ctx->config->sensitivity.move_fast_mult;
|
||||||
#endif
|
#endif
|
||||||
return CMD_OK;
|
return CMD_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
int8_t CMD_Behavior_Handle_DECELERATE(CMD_t *ctx) {
|
int8_t CMD_Behavior_Handle_CLIMB(CMD_t *ctx) {
|
||||||
#if CMD_ENABLE_MODULE_CHASSIS
|
#if CMD_ENABLE_MODULE_BALANCE_CHASSIS
|
||||||
ctx->output.chassis.cmd.ctrl_vec.vx *= ctx->config->sensitivity.move_slow_mult;
|
ctx->output.balance_chassis.cmd.mode = CHASSIS_MODE_CLIMB_STEP;
|
||||||
ctx->output.chassis.cmd.ctrl_vec.vy *= ctx->config->sensitivity.move_slow_mult;
|
|
||||||
#endif
|
#endif
|
||||||
return CMD_OK;
|
return CMD_OK;
|
||||||
}
|
}
|
||||||
@ -72,12 +88,15 @@ int8_t CMD_Behavior_Handle_FIRE_MODE(CMD_t *ctx) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int8_t CMD_Behavior_Handle_ROTOR(CMD_t *ctx) {
|
int8_t CMD_Behavior_Handle_ROTOR(CMD_t *ctx) {
|
||||||
#if CMD_ENABLE_MODULE_CHASSIS
|
|
||||||
ctx->output.chassis.cmd.mode = CHASSIS_MODE_ROTOR;
|
|
||||||
ctx->output.chassis.cmd.mode_rotor = ROTOR_MODE_RAND;
|
|
||||||
#endif
|
|
||||||
#if CMD_ENABLE_MODULE_GIMBAL
|
#if CMD_ENABLE_MODULE_GIMBAL
|
||||||
ctx->output.gimbal.cmd.mode = GIMBAL_MODE_RELATIVE;
|
ctx->output.gimbal.cmd.mode = GIMBAL_MODE_RELATIVE;
|
||||||
|
#if CMD_ENABLE_MODULE_CHASSIS
|
||||||
|
ctx->output.chassis.cmd.mode = CHASSIS_MODE_ROTOR;
|
||||||
|
ctx->output.chassis.cmd.mode_rotor = ROTOR_MODE_RAND;
|
||||||
|
#endif
|
||||||
|
#if CMD_ENABLE_MODULE_BALANCE_CHASSIS
|
||||||
|
ctx->output.balance_chassis.cmd.mode = CHASSIS_MODE_BALANCE_ROTOR;
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
return CMD_OK;
|
return CMD_OK;
|
||||||
}
|
}
|
||||||
@ -131,7 +150,11 @@ int8_t CMD_Behavior_Handle_CHECKSOURCERCPC(CMD_t *ctx) {
|
|||||||
}
|
}
|
||||||
return CMD_OK;
|
return CMD_OK;
|
||||||
}
|
}
|
||||||
|
extern bool reset;
|
||||||
|
int8_t CMD_Behavior_Handle_RESET(CMD_t *ctx) {
|
||||||
|
reset = !reset;
|
||||||
|
return CMD_OK;
|
||||||
|
}
|
||||||
/* 行为配置表 - 由宏生成 */
|
/* 行为配置表 - 由宏生成 */
|
||||||
static const CMD_BehaviorConfig_t g_behavior_configs[] = {
|
static const CMD_BehaviorConfig_t g_behavior_configs[] = {
|
||||||
CMD_BEHAVIOR_TABLE(BUILD_BEHAVIOR_CONFIG)
|
CMD_BEHAVIOR_TABLE(BUILD_BEHAVIOR_CONFIG)
|
||||||
|
|||||||
@ -252,19 +252,20 @@ typedef enum {
|
|||||||
/* 行为定义 */
|
/* 行为定义 */
|
||||||
/* ========================================================================== */
|
/* ========================================================================== */
|
||||||
/* 行为-按键映射宏表 */
|
/* 行为-按键映射宏表 */
|
||||||
#define BEHAVIOR_CONFIG_COUNT (11)
|
#define BEHAVIOR_CONFIG_COUNT (12)
|
||||||
#define CMD_BEHAVIOR_TABLE(X) \
|
#define CMD_BEHAVIOR_TABLE(X) \
|
||||||
X(FORE, CMD_KEY_W, CMD_ACTIVE_PRESSED, CMD_MODULE_CHASSIS) \
|
X(FORE, CMD_KEY_W, CMD_ACTIVE_PRESSED, CMD_MODULE_CHASSIS|CMD_MODULE_BALANCE_CHASSIS) \
|
||||||
X(BACK, CMD_KEY_S, CMD_ACTIVE_PRESSED, CMD_MODULE_CHASSIS) \
|
X(BACK, CMD_KEY_S, CMD_ACTIVE_PRESSED, CMD_MODULE_CHASSIS|CMD_MODULE_BALANCE_CHASSIS) \
|
||||||
X(LEFT, CMD_KEY_A, CMD_ACTIVE_PRESSED, CMD_MODULE_CHASSIS) \
|
X(LEFT, CMD_KEY_A, CMD_ACTIVE_PRESSED, CMD_MODULE_CHASSIS|CMD_MODULE_BALANCE_CHASSIS) \
|
||||||
X(RIGHT, CMD_KEY_D, CMD_ACTIVE_PRESSED, CMD_MODULE_CHASSIS) \
|
X(RIGHT, CMD_KEY_D, CMD_ACTIVE_PRESSED, CMD_MODULE_CHASSIS|CMD_MODULE_BALANCE_CHASSIS) \
|
||||||
X(ACCELERATE, CMD_KEY_SHIFT, CMD_ACTIVE_PRESSED, CMD_MODULE_CHASSIS) \
|
X(ACCELERATE, CMD_KEY_SHIFT, CMD_ACTIVE_PRESSED, CMD_MODULE_CHASSIS|CMD_MODULE_BALANCE_CHASSIS) \
|
||||||
X(DECELERATE, CMD_KEY_CTRL, CMD_ACTIVE_PRESSED, CMD_MODULE_CHASSIS) \
|
X(ROTOR, CMD_KEY_CTRL, CMD_ACTIVE_PRESSED, CMD_MODULE_CHASSIS|CMD_MODULE_BALANCE_CHASSIS) \
|
||||||
X(FIRE, CMD_KEY_L_CLICK, CMD_ACTIVE_PRESSED, CMD_MODULE_SHOOT) \
|
X(FIRE, CMD_KEY_L_CLICK, CMD_ACTIVE_PRESSED, CMD_MODULE_SHOOT) \
|
||||||
X(FIRE_MODE, CMD_KEY_B, CMD_ACTIVE_RISING_EDGE, CMD_MODULE_SHOOT) \
|
X(FIRE_MODE, CMD_KEY_B, CMD_ACTIVE_RISING_EDGE, CMD_MODULE_SHOOT) \
|
||||||
X(ROTOR, CMD_KEY_E, CMD_ACTIVE_PRESSED, CMD_MODULE_CHASSIS) \
|
X(CLIMB, CMD_KEY_R, CMD_ACTIVE_PRESSED, CMD_MODULE_BALANCE_CHASSIS) \
|
||||||
X(AUTOAIM, CMD_KEY_R_CLICK, CMD_ACTIVE_PRESSED, CMD_MODULE_NONE) \
|
X(AUTOAIM, CMD_KEY_R_CLICK, CMD_ACTIVE_PRESSED, CMD_MODULE_NONE) \
|
||||||
X(CHECKSOURCERCPC, CMD_KEY_CTRL|CMD_KEY_SHIFT|CMD_KEY_V, CMD_ACTIVE_RISING_EDGE, CMD_MODULE_NONE)
|
X(CHECKSOURCERCPC,CMD_KEY_CTRL|CMD_KEY_SHIFT|CMD_KEY_V, CMD_ACTIVE_RISING_EDGE, CMD_MODULE_NONE) \
|
||||||
|
X(RESET, CMD_KEY_G, CMD_ACTIVE_RISING_EDGE, CMD_MODULE_NONE)
|
||||||
/* 触发类型 */
|
/* 触发类型 */
|
||||||
typedef enum {
|
typedef enum {
|
||||||
CMD_ACTIVE_PRESSED, /* 按住时触发 */
|
CMD_ACTIVE_PRESSED, /* 按住时触发 */
|
||||||
|
|||||||
@ -113,8 +113,8 @@ Config_RobotParam_t robot_config = {
|
|||||||
.shoot_param = {
|
.shoot_param = {
|
||||||
.basic={
|
.basic={
|
||||||
.projectileType=SHOOT_PROJECTILE_17MM,
|
.projectileType=SHOOT_PROJECTILE_17MM,
|
||||||
.fric_num=2,
|
.fric_num=2,
|
||||||
.extra_deceleration_ratio=1.0f,
|
.extra_deceleration_ratio=1.0f,
|
||||||
.num_trig_tooth=8,
|
.num_trig_tooth=8,
|
||||||
.shot_freq=1.0f,
|
.shot_freq=1.0f,
|
||||||
.shot_burst_num=3,
|
.shot_burst_num=3,
|
||||||
|
|||||||
@ -971,10 +971,10 @@ int8_t Shoot_Control(Shoot_t *s, Shoot_CMD_t *cmd)
|
|||||||
s->timer.now = BSP_TIME_Get_us() / 1000000.0f;
|
s->timer.now = BSP_TIME_Get_us() / 1000000.0f;
|
||||||
s->timer.dt = (BSP_TIME_Get_us() - s->timer.lask_wakeup) / 1000000.0f;
|
s->timer.dt = (BSP_TIME_Get_us() - s->timer.lask_wakeup) / 1000000.0f;
|
||||||
s->timer.lask_wakeup = BSP_TIME_Get_us();
|
s->timer.lask_wakeup = BSP_TIME_Get_us();
|
||||||
// Shoot_CaluTargetRPM(s,233);
|
Shoot_CaluTargetRPM(s,233);
|
||||||
|
|
||||||
/* 运行热量检测状态机 */
|
/* 运行热量检测状态机 */
|
||||||
// Shoot_HeatDetectionFSM(s);
|
Shoot_HeatDetectionFSM(s);
|
||||||
|
|
||||||
/* 运行卡弹检测状态机 */
|
/* 运行卡弹检测状态机 */
|
||||||
Shoot_JamDetectionFSM(s, cmd);
|
Shoot_JamDetectionFSM(s, cmd);
|
||||||
|
|||||||
@ -17,6 +17,7 @@
|
|||||||
/* USER STRUCT BEGIN */
|
/* USER STRUCT BEGIN */
|
||||||
BUZZER_t buzzer;
|
BUZZER_t buzzer;
|
||||||
static uint16_t count;
|
static uint16_t count;
|
||||||
|
bool reset=0;
|
||||||
/* USER STRUCT END */
|
/* USER STRUCT END */
|
||||||
|
|
||||||
/* Private function --------------------------------------------------------- */
|
/* Private function --------------------------------------------------------- */
|
||||||
@ -54,6 +55,10 @@ void Task_blink(void *argument) {
|
|||||||
/* 播放100ms后停止 (50/500Hz = 0.1s) */
|
/* 播放100ms后停止 (50/500Hz = 0.1s) */
|
||||||
BUZZER_Stop(&buzzer);
|
BUZZER_Stop(&buzzer);
|
||||||
}
|
}
|
||||||
|
if (reset) {
|
||||||
|
__set_FAULTMASK(1); /* 关闭所有中断 */
|
||||||
|
NVIC_SystemReset(); /* 系统复位 */
|
||||||
|
}
|
||||||
/* USER CODE END */
|
/* USER CODE END */
|
||||||
osDelayUntil(tick); /* 运行结束,等待下一次唤醒 */
|
osDelayUntil(tick); /* 运行结束,等待下一次唤醒 */
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,6 +8,7 @@
|
|||||||
/* USER INCLUDE BEGIN */
|
/* USER INCLUDE BEGIN */
|
||||||
#include "device/dr16.h"
|
#include "device/dr16.h"
|
||||||
#include "device/mrobot.h"
|
#include "device/mrobot.h"
|
||||||
|
#include "stm32h7xx.h"
|
||||||
/* USER INCLUDE END */
|
/* USER INCLUDE END */
|
||||||
|
|
||||||
/* Private typedef ---------------------------------------------------------- */
|
/* Private typedef ---------------------------------------------------------- */
|
||||||
@ -16,6 +17,8 @@
|
|||||||
/* Private variables -------------------------------------------------------- */
|
/* Private variables -------------------------------------------------------- */
|
||||||
/* USER STRUCT BEGIN */
|
/* USER STRUCT BEGIN */
|
||||||
DR16_t dr16;
|
DR16_t dr16;
|
||||||
|
static DR16_SwitchPos_t last_sw_l = DR16_SW_ERR; /* 记录左拨杆上一次状态 */
|
||||||
|
extern bool reset;
|
||||||
/* USER STRUCT END */
|
/* USER STRUCT END */
|
||||||
|
|
||||||
/* Private function --------------------------------------------------------- */
|
/* Private function --------------------------------------------------------- */
|
||||||
@ -75,6 +78,18 @@ void Task_rc(void *argument) {
|
|||||||
osMessageQueueReset(task_runtime.msgq.cmd.rc);
|
osMessageQueueReset(task_runtime.msgq.cmd.rc);
|
||||||
osMessageQueuePut(task_runtime.msgq.cmd.rc, &dr16, 0, 0);
|
osMessageQueuePut(task_runtime.msgq.cmd.rc, &dr16, 0, 0);
|
||||||
|
|
||||||
|
/* 检测左拨杆切换到UP位置时触发软件复位 */
|
||||||
|
if (dr16.header.online) {
|
||||||
|
/* 拨杆从非UP状态切换到UP状态,且复位功能已使能,触发系统复位 */
|
||||||
|
if (
|
||||||
|
dr16.data.sw_l == DR16_SW_UP &&
|
||||||
|
last_sw_l != DR16_SW_UP) {
|
||||||
|
reset=!reset;
|
||||||
|
}
|
||||||
|
|
||||||
|
last_sw_l = dr16.data.sw_l; /* 更新拨杆状态 */
|
||||||
|
}
|
||||||
|
|
||||||
/* USER CODE END */
|
/* USER CODE END */
|
||||||
osDelayUntil(tick); /* 运行结束,等待下一次唤醒 */
|
osDelayUntil(tick); /* 运行结束,等待下一次唤醒 */
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user