前一段进行了ucgui的移植,但是移植后续还是存在很多问题,比如液晶刷新速率慢,横竖屏切换不支持等,所以针对这些问题进行了一次彻底的优化,现在刷新能够达到20帧的速度对于50mhz的io口来说已经相当可以了。下面就进行一次彻底的剖析,看究竟是那些问题占用了宝贵的百万分之一秒:
一、速度优化篇:
1.
我用的是stm32的处理器,stm32公司为了让使用者加快项目开发速度和便于日后对整个软件部分的维护管理编写了一套标准库。这个库用起来确实很方便也另学习简化了很多,但是它也有缺点所在:就是效率问题。我之前用的液晶屏驱动就是基于库函数编写的,所以第一步就是液晶驱动全部换为直接对寄存器操作,经实践确实刷新率成好几倍的增长。这个代码比较长,这里就不贴出来的,这里仅仅指点下思路,具体请看源代码。
2.
深入液晶驱动内部:液晶屏刷新可不是像我们眼睛看到的一样瞬间整个屏幕同时更新。实际上一个一个像素更新的:也就是说我的屏幕分辨率是320*240就要更新320*240=76800个点。每一个点更新时都要调用一个写数据函数。所以接下来要做的就是提高调用这个函数的速度。有两种解决办法:使用宏定义函数或者内敛函数。我使用的是内敛函数:如下定义: ………………………………………………具体内容看pdf文档
ucgui液晶显示深度优化篇.pdf
(332.39 KB)
具体
下面是源代码:
UCGUI优化源代码.zip
(3.23 MB)
|