--- fixed unstable first LED color ISSUE

This commit is contained in:
Yunhorn 2024-07-29 11:32:58 +08:00
parent 6dd59ad942
commit f9820dbfba
4 changed files with 15 additions and 38 deletions

View File

@ -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 {

View File

@ -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)

View File

@ -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;
}

View File

@ -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);
}