It does not seem current LVGL architecture allows for using DMA2D interrupts, which probably would be much more efficient than while((DMA2D->CR & DMA2D_CR_START) != 0U) waiting loops burning all the CPU cycles gained by hardware acceleration. DMA2D is fast, but a lot performance is lost ...
voidDMA2D_IRQHandler(void){if((DMA2D->ISR&DMA2D_ISR_TCIF)!=0U){DMA2D->CR&=~DMA2D_CR_TCIE;DMA2D->IFCR|=1<<1;//清除传输完成标志if(g_gpu_state==1){g_gpu_state=0;lv_disp_flush_ready(disp_drv_p);}}}
voidDMA2D_IRQHandler(void){if((DMA2D->ISR&DMA2D_ISR_TCIF)!=0U){DMA2D->CR&=~DMA2D_CR_TCIE;DMA2D->IFCR|=1<<1;//清除传输完成标志 if(g_gpu_state==1){ g_gpu_state=0; lv_disp_flush_ready(disp_drv_p); } } }...
voidDMA2D_IRQHandler(void){if((DMA2D->ISR&DMA2D_ISR_TCIF)!=0U){DMA2D->CR&=~DMA2D_CR_TCIE;DMA2D->IFCR|=1<<1;//清除传输完成标志if(g_gpu_state==1){g_gpu_state=0;lv_disp_flush_ready(disp_drv_p);}}}