Description
hello,
I’m using stm32u5a as controller. in some cases when new frame gets to the LCD some of the partial buffers didn’t get updated values. what’s the main reason of this behavior?
What MCU/Processor/Board and compiler are you using?
stm32U5a
What LVGL version are you using?
V8.1
What do you want to achieve?
what’s the reason and how to solve it.
What have you tried so far?
different LTDC Peripheral Timing Values. Update commands sends on a specific LTDC Line Interrupt. timer1 sent interrupt every 5ms.
Code to reproduce
uint32_t LTDC_LINE_INTE = 854 ;
void TIM1_UP_IRQHandler(void)
{
/* USER CODE BEGIN TIM1_UP_IRQn 0 */
lv_task_handler();
/* USER CODE END TIM1_UP_IRQn 0 /
HAL_TIM_IRQHandler(&htim1);
/ USER CODE BEGIN TIM1_UP_IRQn 1 */
/* USER CODE END TIM1_UP_IRQn 1 */
}
void LTDC_IRQHandler(void)
{
/* USER CODE BEGIN LTDC_IRQn 0 */
if(__HAL_LTDC_GET_FLAG(&hltdc, LTDC_FLAG_LI)){
__HAL_LTDC_CLEAR_FLAG(&hltdc, LTDC_FLAG_LI);
}
LTDC->IER |= LTDC_IER_LIE;
LTDC->LIPCR = LTDC_LINE_INTE;
// HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
if(!F_Flag){
lv_task_handler();
F_Flag = true;
HAL_TIM_Base_Start_IT(&htim1);
}
if(LTD_counter++==10)
{
Graphics_Page_Update();
LTD_counter=0;
}
/* USER CODE END LTDC_IRQn 0 /
HAL_LTDC_IRQHandler(&hltdc);
/ USER CODE BEGIN LTDC_IRQn 1 */
/* USER CODE END LTDC_IRQn 1 */
}