发 帖  
原厂入驻New
uCGUI怎么优化至看不到刷屏?
80 UCGUI移植
分享
[C] 纯文本查看 复制代码
UCOSIII+UCGUI+战舰+原子4.3电容屏[C] 纯文本查看 复制代码
自己参考网上的方法做了画点,画线,填充矩形,16bpp的优化,但我的刷屏速度只有这样:[C] 纯文本查看 复制代码
[C] 纯文本查看 复制代码
看到别人的刷屏都是900万像素每秒,甚至3000万,牛人帮我看看程序[C] 纯文本查看 复制代码
画线:[C] 纯文本查看 复制代码
/***********************************************************************       LCD_L0_DrawHLine*/void LCD_L0_DrawHLine  (int x0, int y,  int x1) {u16 f;  IF (GUI_Context.DrawMode & LCD_DRAWMODE_XOR) {    for (; x0 <= x1; x0++) {      LCD_L0_XorPixel(x0, y);    }  } else {f = x1 - x0 + 1;LCD_SetCursor(x0, y);//设置光标LCDX->LCD_REG=lcddev.wramcmd;//写入GRAM    for (; f > 0;f --) {LCDX->LCD_RAM=LCD_COLORINDEX;      //LCD_L0_SetPixelIndex(x0, y, LCD_COLORINDEX);    }  }}[C] 纯文本查看 复制代码
/***********************************************************************       LCD_L0_DrawVLine*/void LCD_L0_DrawVLine  (int x, int y0,  int y1) {  if (GUI_Context.DrawMode & LCD_DRAWMODE_XOR) {    for (; y0 <= y1; y0++) {      LCD_L0_XorPixel(x, y0);    }  } else {    for (; y0 <= y1; y0++) {      LCD_L0_SetPixelIndex(x, y0, LCD_COLORINDEX);    }  }}
填充矩形:
[C] 纯文本查看 复制代码
/***********************************************************************       LCD_L0_FillRect*/void LCD_L0_FillRect(int x0, int y0, int x1, int y1) {u16 i , j;u16 xlen;xlen = x1 - x0 + 1;   for(i = y0; i <= y1; i++){    LCD_SetCursor(x0, i);LCDX->LCD_REG=lcddev.wramcmd; for(j = 0; j < xlen; j++)LCDX->LCD_RAM = LCD_COLORINDEX;  }//   for (; y0 <= y1; y0++) {//     LCD_L0_DrawHLine(x0, y0, x1);//   }}16bpp:
(这里优化后刷控件速度快多了)[C] 纯文本查看 复制代码
/***********************************************************************       Draw Bitmap 16 BPP*/#if (LCD_BITSPERPIXEL > 8)static void  DrawBitLine16BPP(int x, int y, U16 const GUI_UNI_PTR * p, int xsize, const LCD_PIXELINDEX * pTrans) {  LCD_PIXELINDEX pixel;  if ((GUI_Context.DrawMode & LCD_DRAWMODE_TRANS) == 0) {    if (pTrans) {LCD_SetCursor(x, y);LCDX->LCD_REG=lcddev.wramcmd;      for (; xsize > 0; xsize--, x++, p++) {        pixel = *p;LCDX->LCD_RAM = *(pTrans + pixel);//         LCD_L0_SetPixelIndex(x, y, *(pTrans + pixel));      }    } else {LCD_SetCursor(x, y);LCDX->LCD_REG=lcddev.wramcmd;      for (;xsize > 0; xsize--, x++, p++) {LCDX->LCD_RAM =  *p;//         LCD_L0_SetPixelIndex(x, y, *p);      }    }  } else {    if (pTrans) {LCD_SetCursor(x, y);LCDX->LCD_REG=lcddev.wramcmd;      for (; xsize > 0; xsize--, x++, p++) {        pixel = *p;        if (pixel) {LCDX->LCD_RAM =  *(pTrans + pixel);//           LCD_L0_SetPixelIndex(x, y, *(pTrans + pixel));        }      }    } else {LCD_SetCursor(x, y);LCDX->LCD_REG=lcddev.wramcmd;      for (; xsize > 0; xsize--, x++, p++) {        pixel = *p;        if (pixel) {LCDX->LCD_RAM =  pixel;//           LCD_L0_SetPixelIndex(x, y, pixel);        }      }    }  }}希望优化到看不见刷屏,现在还是能看见从上到下的刷屏
0
2020-5-21 18:03:47   评论 分享淘帖 邀请回答
44个回答
首先你是什么型号的STM32?900万 甚至3000万那是拿RA8875的LCD控制器刷出来的,RA8875可以开挂的,具有硬件2D绘图。如果你使用的是ILI9341等LCD控制器,就别想有这么高的分数了,103基本刷出来的就是250W左右。还有网上有的还甚至是否用的NXP的单片机,带有LCD控制器,那个分数也很高的。STM32F429我见过最高刷到5500W的!内部使用LTDC。
2020-5-22 00:45:47 评论

举报

你好,我用的是原子哥的战舰开发板,STM32F103  72M主频
LCD是原子哥的4.3寸电容屏分辨率800*480  nt35510LCD控制器
我刚才优化了画垂直线,现在能跑223W,是不是已经到头了?
如果使用MemDev先放到内存上,然后copytoLCD会好很多?
2020-5-22 01:03:26 评论

举报

不会的,high Speed是用来测试打点速度的,你用MemDev最终还是要在屏幕上打点的。而且使用MemDev只是为了防止屏幕闪烁,对于打点没有任何提升。
2020-5-22 01:12:44 评论

举报

谢谢你的讲解,那么在不换硬件的前提下,我是不是已经没有优化的空间了?
如果换硬件的话换什么呢?只换成stm32f407效果好吗?还是要换LCD驱动器
2020-5-22 01:27:23 评论

举报

407原子4.3寸屏的可以有1千2百
2020-5-22 01:39:03 评论

举报

换407就能这么快啊!!!看来又要打板子了。。。。
2020-5-22 01:55:09 评论

举报

只是407就可以吗?有没有特殊的速度优化之类的?我2楼贴过程序,帮我看看我的优化有哪里不合适
2020-5-22 02:01:33 评论

举报

103  我弄过  只有两百多。我做YT时刷得很慢,就改用407了。
2020-5-22 02:11:51 评论

举报

看来200W是极限了,前两天刚画好了407的板子,液晶屏和原子哥的不兼容,后悔死了,还得做一次
2020-5-22 02:23:49 评论

举报

回复【8楼】蘑菇:
------------------------------
画点 画线 填充矩形 都是用原子的的程序 ? ?我是菜鸟16pp的优化不是自己写的 ?是由原子的填充矩形该来的
2020-5-22 02:31:48 评论

举报

原来论坛里有个叫Eric2013的GUI大牛,说“要充分利用LCD的坐标点自增”确实好用,你试试,还有“减少函数调用,可以减少入栈出栈”,说不定可以跑出更NB的速度
2020-5-22 02:38:57 评论

举报

不知道原子哥的f4板子的能有多快。好期待!!
2020-5-22 02:54:09 评论

举报

2020-5-22 03:07:49 评论

举报

11月几号出来着?一出来我就买一块。很早以前问过原子哥,后来买了一块红龙,不好用
2020-5-22 03:22:21 评论

举报

?
不知道价格怎样,如果太贵,作为学生就买不起了
2020-5-22 03:29:21 评论

举报

2020-5-22 03:45:54 评论

举报

你刷1千两百多万的时候有没有带操作系统,如果没有操作系统的话定时器定的多长时间,还有就是读点有没有问题。
2020-5-22 03:52:59 评论

举报

 没带 ?读点函数没问题 ? ?第二个问题就不清楚了,是什么意思,我不怎么理解(菜鸟,望理解)
2020-5-22 04:08:50 评论

举报

带操作系统是不是跑不了这么高?ucosiii
2020-5-22 04:17:11 评论

举报

只有小组成员才能发言,加入小组>>

123下一页

260个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表