fix(core): fix backlight reinitialization with maximum value

[no changelog]
pull/3584/head
tychovrahe 4 months ago committed by TychoVrahe
parent 8ccd2cb048
commit e736d389f2

@ -17,7 +17,7 @@ static int pwm_period = 0;
int backlight_pwm_set(int val) {
if (BACKLIGHT != val && val >= 0 && val <= 255) {
BACKLIGHT = val;
BACKLIGHT_PWM_TIM->CCR1 = pwm_period * val / 255;
BACKLIGHT_PWM_TIM->CCR1 = (pwm_period * val) / 255;
}
return BACKLIGHT;
}
@ -152,13 +152,14 @@ void backlight_pwm_reinit(void) {
uint32_t prev_arr = BACKLIGHT_PWM_TIM->ARR;
uint32_t prev_ccr1 = BACKLIGHT_PWM_TIM->BACKLIGHT_PWM_TIM_CCR;
uint8_t prev_val = (prev_ccr1 * 255) / prev_arr;
uint32_t prev_val = (prev_ccr1 * 255) / (prev_arr + 1);
prev_val = prev_val > 255 ? 255 : prev_val;
BACKLIGHT = prev_val;
pwm_period = LED_PWM_TIM_PERIOD;
BACKLIGHT_PWM_TIM->CR1 |= TIM_CR1_ARPE;
BACKLIGHT_PWM_TIM->CR2 |= TIM_CR2_CCPC;
BACKLIGHT_PWM_TIM->BACKLIGHT_PWM_TIM_CCR = pwm_period * prev_val / 255;
BACKLIGHT_PWM_TIM->BACKLIGHT_PWM_TIM_CCR = (pwm_period * prev_val) / 255;
BACKLIGHT_PWM_TIM->ARR = LED_PWM_TIM_PERIOD - 1;
}
@ -171,7 +172,8 @@ void backlight_pwm_set_slow(void) {
uint32_t prev_arr = BACKLIGHT_PWM_TIM->ARR;
uint32_t prev_ccr1 = BACKLIGHT_PWM_TIM->CCR1;
uint8_t prev_val = (prev_ccr1 * 255) / prev_arr;
uint32_t prev_val = (prev_ccr1 * 255) / (prev_arr + 1);
prev_val = prev_val > 255 ? 255 : prev_val;
pwm_period = LED_PWM_SLOW_TIM_PERIOD;
BACKLIGHT_PWM_TIM->CR1 |= TIM_CR1_ARPE;

Loading…
Cancel
Save