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);}}}
4、DMA2D配置 在disp_flush函数下,配置DMA2D,采用的是中断的形式。根据切换编制位,改变目标地址 其中断处理函数:
lvgl的显示接口初始化函数没什么好说的,照着配置就行了。重点是disp_flush() 1/*Flush the content of the internal buffer the specific area on the display2* You can use DMA or any hardware acceleration to do this operation in the background but3* 'lv_disp_flush_ready()' has to be called ...
5、找到disp_init()函数,并在其中添加LCD的初始化代码。 该函数会被lv_port_disp_init()调用。 6、找到disp_flush()函数,并根据你的硬件实际情况,将其改写。比如这是使用GLCD_DrawBitmap进行实现的参考代码: 代码语言:javascript 代码运行次数:0 运行 ...
disp_drv.ver_res =320;/*Used to copy the buffer's content to the display*/disp_drv.flush_cb = disp_flush;/*Set a display buffer*/disp_drv.draw_buf = &draw_buf_dsc_1;/*Required for Example 3)*///disp_drv.full_refresh = 1/* Fill a memory array with a color if you have GP...
6、找到disp_init()函数,并在其中添加LCD的初始化代码。 该函数会被lv_port_disp_init()调用。 7、找到disp_flush()函数,并根据你的硬件实际情况,将其改写。比如这是使用GLCD_DrawBitmap进行实现的参考代码: 代码语言:javascript 代码运行次数:0 运行 ...
static void lcd_fb_flush(lv_disp_drv_t *disp_drv, const lv_area_tarea, lv_color_tcolor_p...
修改lv_port_disp_init 函数,分配 内存,有三种分配方式,本例用了模板 的 Example 1 , 目前我的理解是 LVGL 将渲染后的像素信息输出到这个内存空间,然后 STM32 从这个空间获取像素信息赋值给 屏幕显示。 比如LVGL渲染输出的像素数据——》该内存空间——》DMA2D外设自动复制该空间的(像素)数据到——》STM32另一...
采用轮询方式的,则一直等待DMA2D传输结束,然后通过函数lv_disp_flush_ready()函数通过LVGL已经完成刷屏。采用中断方式的,则是在中断处理函数中调用函数lv_disp_flush_ready()函数通过LVGL已经完成刷屏。 通过上述优化之后,刷屏速度大大提高。个人已经比较满意了,可以达到项目应用的要求了。当然还有更好的方法,比如自己...
反正用其他模式没改也会报错,不会漏掉 最后是把画笔交给 LVGL —— 为它实现画区域的函数,就是往下翻可以翻到一个disp_flush 函数。它注释里就写了个例子,用画点的方式填充,这是很慢的。我们把前面用的大量数据 DMA 搬过来就好了。 //这里有个问题就是,disp_flush 参数提供的颜色值是结构化的,它每个位置...