В LED добавлен режим помежуточной яркости диода
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user