From 5439b30366dc0c188b7368a0419457aabcebc08d Mon Sep 17 00:00:00 2001 From: tianjialong Date: Thu, 16 Mar 2023 15:27:20 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BC=96=E7=A0=81=E5=99=A8=E7=81=AF=E7=AE=A1?= =?UTF-8?q?=E8=B0=83=E5=BA=A6=E5=87=BD=E6=95=B0=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MDK-ARM/LWIP.uvguix.29643 | 6 +++--- usersrc/encoder.c | 50 +++++++++++++++++++++++++++++++++++++++++------ usersrc/encoder.h | 1 + usersrc/usermain.c | 5 +---- 4 files changed, 49 insertions(+), 13 deletions(-) diff --git a/MDK-ARM/LWIP.uvguix.29643 b/MDK-ARM/LWIP.uvguix.29643 index 058fae5..f7fc782 100644 --- a/MDK-ARM/LWIP.uvguix.29643 +++ b/MDK-ARM/LWIP.uvguix.29643 @@ -3633,9 +3633,9 @@ ..\usersrc\encoder.c - 0 - 172 - 173 + 13 + 9 + 12 1 0 diff --git a/usersrc/encoder.c b/usersrc/encoder.c index c0975da..2c5dd74 100644 --- a/usersrc/encoder.c +++ b/usersrc/encoder.c @@ -7,7 +7,7 @@ static encoder_light_state_t camera_encoder_state = STANDBY; static encoder_light_state_t driven_encoder_gear_state = STANDBY; static uint32_t camera_encoder_lastprocess = 0; -// static uint32_t driven_encoder_gear_lastprocess = 0; +static uint32_t driven_encoder_gear_lastprocess = 0; static encoder_t m_uarts[] = { {&camera_encoder, TIM_CHANNEL_1 | TIM_CHANNEL_2}, // 相机编码器 @@ -76,21 +76,39 @@ bool encoder_read_with_encoder(encoder_usage_t encoder, uint32_t *encoder_value) void encoder_light_schedule(void) { + static bool camera_encoder_light_state; + static bool driven_encoder_light_state; if (camera_encoder_state == STANDBY) { if (sys_haspassedms(camera_encoder_lastprocess) > 500) { camera_encoder_lastprocess = HAL_GetTick(); - // HAL_GPIO_TogglePin(ENCODER_LIGHT_GPIO_Port, ENCODER_LIGHT_Pin); + if (camera_encoder_light_state) + { + encoder_light_switch_set_color_and_brightness(CAMERA_ENCODER, ENCODER_LIGHT_COLOR_BLUE, encoder_light_max_brightness); + } + else + { + encoder_switch_close_light(CAMERA_ENCODER); + } + camera_encoder_light_state = !camera_encoder_light_state; } } if (driven_encoder_gear_state == STANDBY) { - if (sys_haspassedms(camera_encoder_lastprocess) > 500) + if (sys_haspassedms(driven_encoder_gear_lastprocess) > 500) { - // driven_encoder_gear_lastprocess = HAL_GetTick(); - // HAL_GPIO_TogglePin(ENCODER_LIGHT_GPIO_Port, ENCODER_LIGHT_Pin); + driven_encoder_gear_lastprocess = HAL_GetTick(); + if (driven_encoder_light_state) + { + encoder_light_switch_set_color_and_brightness(DRIVEN_ENCODER_GEAR, ENCODER_LIGHT_COLOR_BLUE, encoder_light_max_brightness); + } + else + { + encoder_switch_close_light(DRIVEN_ENCODER_GEAR); + } + driven_encoder_light_state = !driven_encoder_light_state; } } } @@ -117,7 +135,7 @@ void encoder_set_state(encoder_usage_t encoder, encoder_light_state_t state) driven_encoder_gear_state = state; if (state == STANDBY) { - // driven_encoder_gear_lastprocess = HAL_GetTick(); + driven_encoder_gear_lastprocess = HAL_GetTick(); // HAL_GPIO_TogglePin(ENCODER_LIGHT_GPIO_Port, ENCODER_LIGHT_Pin); } else if (state == WORKING) @@ -245,3 +263,23 @@ void encoder_light_switch_set_color_and_brightness(encoder_usage_t encoder, enco // error } } + +void encoder_switch_close_light(encoder_usage_t encoder) +{ + if (encoder == CAMERA_ENCODER) + { + HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_4); + HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_1); + HAL_TIM_PWM_Stop(&htim3, TIM_CHANNEL_1); + } + else if (encoder == DRIVEN_ENCODER_GEAR) + { + HAL_TIM_PWM_Stop(&htim2, TIM_CHANNEL_3); + HAL_TIM_PWM_Stop(&htim4, TIM_CHANNEL_3); + HAL_TIM_PWM_Stop(&htim4, TIM_CHANNEL_4); + } + else + { + // error + } +} diff --git a/usersrc/encoder.h b/usersrc/encoder.h index 16d7b30..a8801f9 100644 --- a/usersrc/encoder.h +++ b/usersrc/encoder.h @@ -42,3 +42,4 @@ encoder_light_state_t encoder_get_state(encoder_usage_t encoder); void encoder_all_encoder_clear_counter_and_structer_count(void); void encoder_switch_encoder_clear_count_and_structer_count(encoder_usage_t encoder); void encoder_light_switch_set_color_and_brightness(encoder_usage_t encoder, encoder_light_color_table_t color, uint16_t brightness); +void encoder_switch_close_light(encoder_usage_t encoder); diff --git a/usersrc/usermain.c b/usersrc/usermain.c index 2805770..dd01123 100644 --- a/usersrc/usermain.c +++ b/usersrc/usermain.c @@ -108,9 +108,6 @@ void user_main() zkey_init(&s_key_module); port_uart_start_all_uart_receive(); - encoder_light_switch_set_color_and_brightness(CAMERA_ENCODER, ENCODER_LIGHT_COLOR_RED, encoder_light_max_brightness); - encoder_light_switch_set_color_and_brightness(DRIVEN_ENCODER_GEAR, ENCODER_LIGHT_COLOR_GREEN, encoder_light_max_brightness); - while (1) { udp_client_genlock_and_esync_active(); @@ -118,7 +115,7 @@ void user_main() zkey_schedule(); udp_client_recv(); at_cmd_processer_try_process_data(); - // encoder_light_schedule(); + encoder_light_schedule(); port_do_debug_light_state(); osDelay(1);