From ee6dba67d767e9c03e8b4ae60f4978b551ed37fc Mon Sep 17 00:00:00 2001 From: penglei <1624952103@qq.com> Date: Fri, 29 Aug 2025 14:01:54 +0800 Subject: [PATCH] =?utf8?q?n9=E8=A1=A8=E5=86=A0=E5=8A=A0=E5=85=A5=E4=B8=AD?= =?utf8?q?=E6=96=AD=E6=9C=BA=E5=88=B6=EF=BC=8C=E4=BC=98=E5=8C=96=E8=BD=AC?= =?utf8?q?=E5=8A=A8=E6=95=88=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../boards/brandy_evb/board_config/board_w9.h | 4 ++-- .../drivers/rotary_encoder/mixo/mixo_hal.c | 22 ++++++++++------- .../rotary_encoder/mixo/mixo_ots_driver.c | 24 +++++++++---------- .../rotary_encoder/mixo/mixo_service.c | 4 ++-- 4 files changed, 30 insertions(+), 24 deletions(-) diff --git a/code/sdk/drivers/boards/brandy_evb/board_config/board_w9.h b/code/sdk/drivers/boards/brandy_evb/board_config/board_w9.h index 04ed713f5..4eb9579ba 100644 --- a/code/sdk/drivers/boards/brandy_evb/board_config/board_w9.h +++ b/code/sdk/drivers/boards/brandy_evb/board_config/board_w9.h @@ -24,7 +24,7 @@ extern void gyro_int_callback(pin_t pin, uintptr_t param); #endif #ifdef ROTARYENCODER_MIXO -// extern void mixo_int_callback(pin_t pin, uintptr_t param); +extern void mixo_int_callback(pin_t pin, uintptr_t param); #endif #ifdef SUPPORT_CYWEE_SERVICE @@ -343,7 +343,7 @@ const hal_gpio_config_t g_gpio_function_config[PIN_MAX_NUMBER] = { #endif #endif #ifdef ROTARYENCODER_MIXO - // { S_AGPIO_L0, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_FALLING_EDGE, mixo_int_callback}, + { S_AGPIO_L0, HAL_GPIO_DIRECTION_INPUT, NULL, GPIO_INTERRUPT_FALLING_EDGE, mixo_int_callback}, #endif }; /** diff --git a/code/sdk/zhihui/drivers/rotary_encoder/mixo/mixo_hal.c b/code/sdk/zhihui/drivers/rotary_encoder/mixo/mixo_hal.c index e4d7dcebb..f7459169a 100644 --- a/code/sdk/zhihui/drivers/rotary_encoder/mixo/mixo_hal.c +++ b/code/sdk/zhihui/drivers/rotary_encoder/mixo/mixo_hal.c @@ -16,21 +16,25 @@ encoder_callback g_encoder_callback = NULL; void mixo_int_callback(pin_t pin, uintptr_t param) { - PRINT("mixo_int_callback %d 0x%X\n",pin,param); + // PRINT("mixo_int_callback %d 0x%X\n",pin,param); uapi_gpio_clear_interrupt(pin); - // uapi_pin_set_ie(MIXO_INT_PIN,HAL_PIO_IE_DISABLE); + uapi_pin_set_ie(MIXO_INT_PIN,HAL_PIO_IE_DISABLE); mixo_start(); // 启动定时器 } void mixo_check(void) { + // printf("mixo_check : %d\n",mixo_get_check_mode()); // if(mixo_get_check_mode() == TIMER_MODE) - mixo_ots_timer_callback(); - // else if(mixo_get_check_mode() == INT_MODE) // { - // mixo_stop(); // 关闭定时器 - // // uapi_pin_set_ie(MIXO_INT_PIN,HAL_PIO_IE_ENBALE); + mixo_ots_timer_callback(); // } + + if(mixo_get_check_mode() == INT_MODE) + { + mixo_stop(); // 关闭定时器 + uapi_pin_set_ie(MIXO_INT_PIN,HAL_PIO_IE_ENBALE); + } } @@ -95,13 +99,15 @@ static ext_errno mixo_encoder_suspend(void) static ext_errno mixo_encoder_resume(void) { re_print("mixo_encoder_resume\r\n"); - mixo_start(); + // mixo_start(); + mixo_resume(); return EXT_ERR_SUCCESS; } static ext_errno mixo_encoder_sleep(void) { re_print("mixo_encoder_sleep\r\n"); - mixo_stop(); + // mixo_stop(); + mixo_suspend(); return EXT_ERR_SUCCESS; } static ext_errno mixo_encoder_reset(void) diff --git a/code/sdk/zhihui/drivers/rotary_encoder/mixo/mixo_ots_driver.c b/code/sdk/zhihui/drivers/rotary_encoder/mixo/mixo_ots_driver.c index 518d9639f..232765588 100644 --- a/code/sdk/zhihui/drivers/rotary_encoder/mixo/mixo_ots_driver.c +++ b/code/sdk/zhihui/drivers/rotary_encoder/mixo/mixo_ots_driver.c @@ -95,18 +95,18 @@ void mixo_ots_timer_callback(void) } else { - // timer_cnt++; - // if (timer_cnt == 20) // 20*10 = // 200ms:200ms内sensor没有检测到表冠转动就会关闭定时器重新开启中断响应 - // { - // printf("mixo enter int mode\n"); - // /** - // * 此处注意 mixo_ots_forced_clear_int - // * 必须放在 external_int_init 之前去做 - // * 否则可能造成功耗异常的问题 - // */ - // mixo_ots_forced_clear_int(); // 强制拉高MOT脚 - // int_mode = 1; - // } + timer_cnt++; + if (timer_cnt == 100) // 20*10 = // 200ms:200ms内sensor没有检测到表冠转动就会关闭定时器重新开启中断响应 + { + // printf("mixo enter int mode\n"); + /** + * 此处注意 mixo_ots_forced_clear_int + * 必须放在 external_int_init 之前去做 + * 否则可能造成功耗异常的问题 + */ + mixo_ots_forced_clear_int(); // 强制拉高MOT脚 + int_mode = 1; + } if (stand_still == 0) { //上次是转动,上报状态改变 diff --git a/code/sdk/zhihui/drivers/rotary_encoder/mixo/mixo_service.c b/code/sdk/zhihui/drivers/rotary_encoder/mixo/mixo_service.c index ad62a5b46..6359eba5a 100644 --- a/code/sdk/zhihui/drivers/rotary_encoder/mixo/mixo_service.c +++ b/code/sdk/zhihui/drivers/rotary_encoder/mixo/mixo_service.c @@ -42,7 +42,7 @@ void mixo_service_timer_start(void) { if(mixo_service_timer_running == false && g_mixo_service_timer) { - mixo_resume(); + // mixo_resume(); osTimerStart(g_mixo_service_timer,MIXO_SERVICE_TIMER_CHECK_MS); mixo_service_timer_running = true; } @@ -52,7 +52,7 @@ void mixo_service_timer_stop(void) { if(mixo_service_timer_running == true && g_mixo_service_timer) { - mixo_suspend(); + // mixo_suspend(); // mixo_clean_result(); osTimerStop(g_mixo_service_timer); mixo_service_timer_running = false; -- 2.17.1