В LED добавлен режим помежуточной яркости диода

This commit is contained in:
2026-02-05 17:30:27 +03:00
parent c0733a1d31
commit 5ad51f0d61
2 changed files with 39 additions and 2 deletions

View File

@@ -136,6 +136,23 @@ HAL_StatusTypeDef GPIO_LED_Set(GPIO_LEDTypeDef *led, uint8_t led_state)
return GPIO_LED_Off(led);
}
}
/**
* @brief Выставить яркость светодиод
* @param led Указатель на структуру светодиода
* @param led_duty Яркость светодиода
* @return HAL Status
*/
HAL_StatusTypeDef GPIO_LED_Duty_Set(GPIO_LEDTypeDef *led, uint8_t led_duty)
{
if(check_null_ptr_3(led, led->LED_Port, led->LED_Pin))
return HAL_ERROR;
led_duty = (led_duty*LED_PWM_TICKS)/100;
led->state = LED_IS_DUTY;
led->LED_Duty = led_duty;
return HAL_OK;
}
/**
* @brief Активировать моргание светодиодом
* @param led Указатель на структуру светодиода
@@ -199,6 +216,21 @@ void GPIO_LED_Dynamic_Handle(GPIO_LEDTypeDef *led)
led->tickprev = tickcurrent;
}
}
/* Режим промежуточной яркости светодиода */
else if(led->state == LED_IS_DUTY)
{
uint32_t tickcurrent = local_time();
/* Формирование ШИМ для яркости */
int duty_crt = (led->LED_Duty*led->LED_Duty/LED_PWM_TICKS);
if(tickcurrent%LED_PWM_TICKS < duty_crt)
{
HAL_GPIO_WritePin(led->LED_Port, led->LED_Pin, led->LED_ActiveLvl);
}
else
{
HAL_GPIO_WritePin(led->LED_Port, led->LED_Pin, !led->LED_ActiveLvl);
}
}
/* Режим плавного моргания светодиода */
else if(led->state == LED_IS_FADING)
{
@@ -229,6 +261,7 @@ void GPIO_LED_Dynamic_Handle(GPIO_LEDTypeDef *led)
}
led->tickprev = tickcurrent;
}
led->LED_Duty = duty;
/* Формирование ШИМ для изменения яркости */
int duty_crt = (duty*duty/LED_PWM_TICKS);
if(tickcurrent%LED_PWM_TICKS < duty_crt)