From cd36f6f0536166f8ee6adbc1b0b7f74d26d24e9a Mon Sep 17 00:00:00 2001 From: penglei <1624952103@qq.com> Date: Fri, 21 Nov 2025 15:16:22 +0800 Subject: [PATCH] =?utf8?q?=E4=BC=98=E5=8C=96=E9=9B=B7=E9=B8=9F=E8=83=8C?= =?utf8?q?=E5=85=89=E6=8E=A7=E5=88=B6(=E8=A1=A5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- code/sdk/zhihui/utils/custom_utils.c | 40 +++++++++++++++++++++------- 1 file changed, 31 insertions(+), 9 deletions(-) diff --git a/code/sdk/zhihui/utils/custom_utils.c b/code/sdk/zhihui/utils/custom_utils.c index ada64f275..5ac0fcf2f 100644 --- a/code/sdk/zhihui/utils/custom_utils.c +++ b/code/sdk/zhihui/utils/custom_utils.c @@ -4634,18 +4634,31 @@ void uapi_get_lcd_id(uint32_t *id) } static uint8_t backlight_status = 0; +static uint8_t last_brightness = 5; #define LCD_BACKLIGHT_PWM_PIN S_AGPIO_L16 /* 背光PWM引脚 */ -void uapi_lcd_backlight_off(void) + +static void backlight_ic_reset(void) { + uapi_pin_set_mode(LCD_BACKLIGHT_PWM_PIN, HAL_PIO_FUNC_GPIO); + uapi_gpio_set_dir(LCD_BACKLIGHT_PWM_PIN, GPIO_DIRECTION_OUTPUT); + uapi_gpio_set_val(LCD_BACKLIGHT_PWM_PIN, GPIO_LEVEL_LOW); + uapi_tcxo_delay_us(180); // 等待IC就绪 + // 输出0个下降沿(仅初始化GPIO,不发送脉冲,触发IC关闭当前驱动) + uapi_gpio_set_val(LCD_BACKLIGHT_PWM_PIN, GPIO_LEVEL_HIGH); + uapi_tcxo_delay_us(30); +} + +void uapi_lcd_backlight_off(void) +{ if(backlight_status == 0) return; backlight_status = 0; - uapi_pin_set_mode(LCD_BACKLIGHT_PWM_PIN, HAL_PIO_FUNC_GPIO); - uapi_gpio_set_dir(LCD_BACKLIGHT_PWM_PIN, GPIO_DIRECTION_OUTPUT); + backlight_ic_reset(); + uapi_gpio_set_val(LCD_BACKLIGHT_PWM_PIN, GPIO_LEVEL_LOW); PRINT("uapi_lcd_backlight_off\r\n"); @@ -4654,17 +4667,26 @@ void uapi_lcd_backlight_off(void) void uapi_lcd_backlight_on(void) { - if(backlight_status == 1) - return; - - backlight_status = 1; + uint8_t brightness = cm_getScreenBrightness(); + if(last_brightness != brightness) + { + last_brightness = brightness; + if(backlight_status == 1) + { + backlight_ic_reset(); + backlight_status = 0; + } - uint8_t brightness = 5; + } - brightness = cm_getScreenBrightness(); printf("brightness:%d\n",brightness); + if(backlight_status == 1) + return; + + backlight_status = 1; + uint8_t fall_edge_cnt = 0; if (brightness <= 11) fall_edge_cnt = 7; else if (brightness <= 24) fall_edge_cnt = 6; -- 2.17.1