Stm32f4 and st7789 using with LittleVgl

Is the SPI and the DMA configured for using IRQ?
I think it has to be properly set up.

Dma configure codes:

/* SPI1 DMA Init */
    /* SPI1_TX Init */
    hdma_spi1_tx.Instance = DMA2_Stream3;
    hdma_spi1_tx.Init.Channel = DMA_CHANNEL_3;
    hdma_spi1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
    hdma_spi1_tx.Init.PeriphInc = DMA_PINC_DISABLE;
    hdma_spi1_tx.Init.MemInc = DMA_MINC_ENABLE;
    hdma_spi1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
    hdma_spi1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
    hdma_spi1_tx.Init.Mode = DMA_CIRCULAR;
    hdma_spi1_tx.Init.Priority = DMA_PRIORITY_LOW;
    hdma_spi1_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
    if (HAL_DMA_Init(&hdma_spi1_tx) != HAL_OK)
    {
      Error_Handler();
    }

    __HAL_LINKDMA(hspi,hdmatx,hdma_spi1_tx);

I’m missing the calls to HAL_NVIC_SetPriority and HAL_NVIC_EnableIRQ after the __HAL_LINKDMA.
Maybe something like this (I have the #define in FreeRTOSConfig.h. Don’t know what your’s is):

  #define config_SPI_INTERRUPT_PRIORITY           (configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY + 0)

  HAL_NVIC_SetPriority (DMA2_Stream3_IRQn, config_SPI_INTERRUPT_PRIORITY, 1);
  HAL_NVIC_EnableIRQ (DMA2_Stream3_IRQn);

Cube ide created this codes in main static void MX_DMA_Init(void) function:

HAL_NVIC_SetPriority(DMA2_Stream3_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(DMA2_Stream3_IRQn);

other codes created void HAL_SPI_MspInit(SPI_HandleTypeDef* hspi) function in stm32f4xx_hal_msp.c by cubeide. I not changed dma codes.

/* SPI1 DMA Init */
    /* SPI1_TX Init */
    hdma_spi1_tx.Instance = DMA2_Stream3;
    hdma_spi1_tx.Init.Channel = DMA_CHANNEL_3;
    hdma_spi1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
    hdma_spi1_tx.Init.PeriphInc = DMA_PINC_DISABLE;
    hdma_spi1_tx.Init.MemInc = DMA_MINC_ENABLE;
    hdma_spi1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
    hdma_spi1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
    hdma_spi1_tx.Init.Mode = DMA_CIRCULAR;
    hdma_spi1_tx.Init.Priority = DMA_PRIORITY_LOW;
    hdma_spi1_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
    if (HAL_DMA_Init(&hdma_spi1_tx) != HAL_OK)
    {
      Error_Handler();
    }

    __HAL_LINKDMA(hspi,hdmatx,hdma_spi1_tx);

As far as I can see, it shouldwork.

Set a breakpoint to your HAL_SPI_TxCpltCallback and let it run.
Does the program break?

If not, check whether all interrupts are enabled (CPU registers primask and basepri should be 0).
Do you use any other interrupts? Are they working?