Screen shows only one frame and then turns white

Hello,

Obviously Marian is a bit rude but he is actually correct.
In your main loop you call both lv_timer_handler() and lv_task_handler() AND lv_tick_inc().
lv_timer_handler and lv_task_handler are the same. So call only one: lv_task_handler() just calls
lv_timer_handler(). See the source code below:

static inline LV_ATTRIBUTE_TIMER_HANDLER uint32_t lv_task_handler(void)
{
    return lv_timer_handler();
}

Just use lv_timer_handler()!

Next, lv_tick_inc() should be called at a certain set interval (i.e. a timer interrupt). See the documenation:

https://docs.lvgl.io/master/porting/tick.html

Very recently discussed this in another thread: WT32-SC01 lv_label_set_text not changing on screen

Hope this clears things up, this might not fix that white screen issue but should still be in order.