Lv_tick_inc cause freertos vTaskDelay Inaccurate

My board is stm32F746G-DSICO
If i just run lvgl demo, it work and has 33fps.

next, I add freertos to my project, and comment out the lvgl.
i create two task for control two led with 500ms. it work.

but if i cancel comment lvgl, and create task to run lvgl.

void vApplicationTickHook()
{
	lv_tick_inc(1);
}
static void vTaskLED(void *parameter)
{
	while(1)
	{
		LED_On(0);
		vTaskDelay(500);
		LED_Off(0);
		vTaskDelay(500);
	}
}
static void vTaskLVGL(void *parameter)
{
	TickType_t xLastWakeTime;
	const TickType_t xPeriod = pdMS_TO_TICKS( 5 );
	xLastWakeTime = xTaskGetTickCount();
	for(;;)
	{
		vTaskDelayUntil( &xLastWakeTime,xPeriod );
		lv_task_handler();
	}
	vTaskDelete(NULL);
}
xTaskCreate(vTaskLED, "vTaskLED", 512, NULL, 1, &xHandleTaskLED);
xTaskCreate(vTaskLVGL, "vTaskLVGL", 512, NULL, 2, &xHandleTaskLVGL);
vTaskStartScheduler();

if vApplicationTickHook add ‘lv_tick_inc’, the ‘vTaskDelay’ will very quick do it.
but if i comment out ‘lv_tick_inc’,the ‘vTaskDelay’ will on time.

does anyone has this problem?

my project is use STM32CubeIDE to dev,
If need, I can upload project.