|

楼主 |
发表于 2014-7-27 14:30:04
|
显示全部楼层
按照论坛的方法移植后显示正常,就是刷屏很慢,优化后测速度有600多万,但其他演示反应很慢,尤其是Drawing a graph这个演示,里面波形移动的非常缓慢,
同前面emWin自带驱动移植差别很大,优化了 _FillRect和_DrawHLine函数,还需要优化那些函数才能提高速度?
优化过程中发现一个奇怪的问题,请看下面两个函数:
/*********************************************************************
*
* _DrawHLine
*/
static void _DrawHLine(GUI_DEVICE * pDevice, int x0, int y, int x1) {
LCD_PIXELINDEX PixelIndex;
PixelIndex = LCD__GetColorIndex();
// _FillRect(pDevice, x0, y, x1, y);
LCD_SetCursor(x0,y);
LCDx->LCD_REG=0x002C;
for (; x0 <= x1; x0++) LCDx->LCD_RAM=PixelIndex;
}
/*********************************************************************
*
* _FillRect
*/
static void _FillRect(GUI_DEVICE * pDevice, int x0, int y0, int x1, int y1) {
LCD_PIXELINDEX PixelIndex;
int x;
// PixelIndex = LCD__GetColorIndex();
if (GUI_pContext->DrawMode & LCD_DRAWMODE_XOR) {
for (; y0 <= y1; y0++) {
for (x = x0; x <= x1; x++) {
_XorPixel(pDevice, x, y0);
}
}
} else {
for (; y0 <= y1; y0++)
{
_DrawHLine(pDevice, x0, y0, x1);
}
}
}
这样使用画面正常,如果用_DrawHLine函数内的语句直接替代 _FillRect中调用的 _DrawHLine中部分,画面花屏,搞不懂为什么?
还有ILI9486支持开窗填充,不进emWin使用开窗填充功能正常,想用这个功能优化 _FillRect这个函数,一样花屏,在不用emWin时各项功能测试正常,扫描方向也正确。 |
|