emwin的WM_SetCreateFlags(WM_CF_MEMDEV)

本来移植到正点原子的板子上(战舰V2, NTN35310),什么问题都没有,但是移植到自己的板子上之后,各种问题接踵而至,搞的焦头烂额,

就这个WM_SetCreateFlags(WM_CF_MEMDEV)搞了我一个星期,开始的时候,使用这个的时候直接黑屏,不使用的时候,正常显示,

开始在各种论坛网站寻找答案,有的说是内存不足,有的说是移植的模板不对等等。我全都尝试着修改,然并卵!

最后,没有办法了,只能自己搞一个就只显示背景色和显示按钮的工程,一步一步调试,调着调着发现,使用WM_SetCreateFlags和不使用走的不一样,

使用WM_SetCreateFlags会走_DrawBitLine16BPP,不使用是不会走这个函数的,这样就找到问题点在这了,然后慢慢的修改,

发现有时候背景能够显示一些线条,很高兴有没有,也很庆幸,为了好看设置了一个背景色,不然搞死都不知道正确的路径在那,最后的最后,终于搞定了

/*********************************************************************
*
*       Draw Bitmap 16 BPP, not optimized
*
* Purpose:
*   Drawing of 16bpp high color bitmaps.
*   Only required for 16bpp color depth of target. Should be removed otherwise.
*/
static void _DrawBitLine16BPP(GUI_DEVICE * pDevice, int x, int y, U16 const GUI_UNI_PTR * p, int xsize) {
//     for (;xsize > 0; xsize--, x++, p++) {
//        _SetPixelIndex(pDevice, x, y, *p);
//     }

    LCD_PIXELINDEX pixel;
    LCD_SetCursor(x,y);

    LCD_RS_CLR;
     LCD_CS_CLR;
    DATAOUT(lcddev.wramcmd);//写指令  
    LCD_WR_CLR;
    LCD_WR_SET;
     LCD_CS_SET;
    for (;xsize > 0; xsize--, x++, p++)
    {
//      LCD_Fast_DrawPoint(x,y,*p);

     _SetPixelIndex(pDevice, x, y, *p);
} }

看起来很简单,但是没找到就是难搞,以此为记!

01-17 01:59
查看更多