From f9820dbfba56ecfc752c3bc8a8147fe1b299a2b9 Mon Sep 17 00:00:00 2001 From: YunHorn Technology Date: Mon, 29 Jul 2024 11:32:58 +0800 Subject: [PATCH] --- fixed unstable first LED color ISSUE --- Core/Inc/sts_lamp_bar.h | 4 ++-- Core/Src/sts_lamp_bar.c | 10 ++++----- Core/Src/yunhorn_sts_process.c | 2 +- LoRaWAN/App/lora_app.c | 37 +++++++--------------------------- 4 files changed, 15 insertions(+), 38 deletions(-) diff --git a/Core/Inc/sts_lamp_bar.h b/Core/Inc/sts_lamp_bar.h index 574639b..601ec88 100644 --- a/Core/Inc/sts_lamp_bar.h +++ b/Core/Inc/sts_lamp_bar.h @@ -48,8 +48,8 @@ enum sts_lamp_color { STS_GREEN_DARK=0x10, //0b0001 0000 GREEN DARK STS_RED_DARK=0x20, //0b0010 0000, - STS_BLUE_DARK=0x30, //0b0011 0000 BLUE DARK - STS_RED_BLUE=0x23 //0b0010 0011 RED BLUE FLASH + STS_RED_BLUE=0x23, //0b0010 0011 RED BLUE FLASH + STS_BLUE_DARK=0x30 //0b0011 0000 BLUE DARK }; enum sts_oo_work_mode { diff --git a/Core/Src/sts_lamp_bar.c b/Core/Src/sts_lamp_bar.c index f6c8328..37640af 100644 --- a/Core/Src/sts_lamp_bar.c +++ b/Core/Src/sts_lamp_bar.c @@ -102,9 +102,9 @@ void STS_Lamp_Bar_Set_Dark(void) void STS_WS2812B_Refresh(void) { //__disable_irq(); - HAL_TIM_PWM_Start_DMA(&STS_LAMP_BAR_HTIM, STS_LAMP_BAR_TIM_CHANNEL, (uint32_t *)&rgb_buf, (WS2812B_DATA_LEN+1)); + HAL_TIM_PWM_Start_DMA(&STS_LAMP_BAR_HTIM, STS_LAMP_BAR_TIM_CHANNEL, (uint32_t *)&rgb_buf, (WS2812B_DATA_LEN+24)); //__enable_irq(); - //HAL_TIM_PWM_Start_IT(&STS_LAMP_BAR_HTIM, STS_LAMP_BAR_TIM_CHANNEL); + HAL_TIM_PWM_Start_IT(&STS_LAMP_BAR_HTIM, STS_LAMP_BAR_TIM_CHANNEL); } void STS_Lamp_Bar_Init(void) @@ -159,8 +159,8 @@ void STS_Lamp_Bar_Set_RGB_Color(uint8_t red, uint8_t green, uint8_t blue ) uint8_t i =0; //HAL_Delay(1); - //__disable_irq(); - //UTIL_MEM_set_8((void*)rgb_buf.GRB,0x0,(WS2812B_DATA_LEN)); + __disable_irq(); + UTIL_MEM_set_8((void*)rgb_buf.GRB,0x0,(WS2812B_DATA_LEN+48)); //__enable_irq(); for(i = 0; i < STS_LAMP_BAR_LED_NUM; i++) @@ -178,7 +178,7 @@ void STS_Lamp_Bar_Set_RGB_Color(uint8_t red, uint8_t green, uint8_t blue ) //if (sts_service_mask == STS_SERVICE_MASK_L0) { STS_WS2812B_Refresh(); //} - + __enable_irq(); } void STS_Lamp_Bar_Refresh(void) diff --git a/Core/Src/yunhorn_sts_process.c b/Core/Src/yunhorn_sts_process.c index 9f8abd1..98af6cd 100644 --- a/Core/Src/yunhorn_sts_process.c +++ b/Core/Src/yunhorn_sts_process.c @@ -605,7 +605,7 @@ void STS_Combined_Status_Processing(void) { sts_lamp_bar_color = sts_status_color; - STS_Lamp_Bar_Set_STS_RGB_Color(sts_lamp_bar_color, luminance_level); + //STS_Lamp_Bar_Set_STS_RGB_Color(sts_lamp_bar_color, luminance_level); last_lamp_bar_color = sts_lamp_bar_color; } diff --git a/LoRaWAN/App/lora_app.c b/LoRaWAN/App/lora_app.c index 01a7be2..1c0e1a0 100644 --- a/LoRaWAN/App/lora_app.c +++ b/LoRaWAN/App/lora_app.c @@ -612,7 +612,7 @@ void LoRaWAN_Init(void) UTIL_TIMER_Create(&TxLedTimer, LED_PERIOD_TIME, UTIL_TIMER_ONESHOT, OnTxTimerLedEvent, NULL); UTIL_TIMER_Create(&RxLedTimer, LED_PERIOD_TIME, UTIL_TIMER_ONESHOT, OnRxTimerLedEvent, NULL); - UTIL_TIMER_Create(&JoinLedTimer, LED_PERIOD_TIME, UTIL_TIMER_PERIODIC, OnJoinTimerLedEvent, NULL); + UTIL_TIMER_Create(&JoinLedTimer, LED_PERIOD_TIME, UTIL_TIMER_ONESHOT, OnJoinTimerLedEvent, NULL); UTIL_TIMER_Create(&STSLampBarColorTimer, LED_PERIOD_TIME, UTIL_TIMER_PERIODIC, OnYunhornSTSLampBarColorTimerEvent, NULL); UTIL_TIMER_Create(&STSDurationCheckTimer, 20*LED_PERIOD_TIME, UTIL_TIMER_PERIODIC, OnYunhornSTSDurationCheckTimerEvent, NULL); @@ -1156,6 +1156,7 @@ static void OnYunhornSTSLampBarColorTimerEvent(void *context) //HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin); /* STS GREEN */ //if ((sts_work_mode != STS_WIRED_MODE)) uint8_t high4=(sts_lamp_bar_color>>4)&0x0f, low4=sts_lamp_bar_color&0x0f; + HAL_Delay(10); if (high4==0) { if (last_sts_lamp_bar_color != sts_lamp_bar_color) @@ -1170,48 +1171,24 @@ static void OnYunhornSTSLampBarColorTimerEvent(void *context) } else { if (r_b) { - __disable_irq(); + //__disable_irq(); STS_Lamp_Bar_Set_STS_RGB_Color(high4, DEFAULT_LUMINANCE_LEVEL); - __enable_irq(); + //__enable_irq(); last_sts_lamp_bar_color = high4; //STS_WS2812B_Refresh(); } else { - __disable_irq(); + //__disable_irq(); STS_Lamp_Bar_Set_STS_RGB_Color(low4, DEFAULT_LUMINANCE_LEVEL); - __enable_irq(); + //__enable_irq(); last_sts_lamp_bar_color = low4; //STS_WS2812B_Refresh(); } r_b = !r_b; } -#if 0 - if (sts_lamp_bar_color == STS_RED_BLUE) { - if (r_b) - STS_Lamp_Bar_Set_STS_RGB_Color(STS_RED, DEFAULT_LUMINANCE_LEVEL); - else - STS_Lamp_Bar_Set_STS_RGB_Color(STS_BLUE, DEFAULT_LUMINANCE_LEVEL); - r_b = !r_b; - } else if (sts_lamp_bar_color == STS_RED_DARK) { - if (r_b) - STS_Lamp_Bar_Set_STS_RGB_Color(STS_RED, DEFAULT_LUMINANCE_LEVEL); - else - STS_Lamp_Bar_Set_STS_RGB_Color(STS_DARK, DEFAULT_LUMINANCE_LEVEL); - - r_b = !r_b; - } - else { - if (last_sts_lamp_bar_color != sts_lamp_bar_color) - { - STS_Lamp_Bar_Set_STS_RGB_Color(sts_lamp_bar_color, DEFAULT_LUMINANCE_LEVEL); - last_sts_lamp_bar_color = sts_lamp_bar_color; - } - } - - } -#endif +UTIL_TIMER_Start(&STSLampBarColorTimer); }