搜索
bottom↓
回复: 236

【不断更新】emWin5.xx移植手册、规范代码,传说中emWin破解版

  [复制链接]

出0入0汤圆

发表于 2013-1-9 15:12:26 | 显示全部楼层 |阅读模式
本帖最后由 fire 于 2013-1-10 14:23 编辑

                                                                                    emWin5.xx移植手册
                                                          STM32F4+emWin5.16 自适应3.0寸 4.3寸 7寸屏,让大家都玩上emWin  
                                                                   此移植重点解决触摸的飞点问题和emWin5.XX不支持的屏    
                                   
                                                                                                                                                                                             ------------by Eric2013
重要说明:
(0)移植手册pdf格式,程序下载,emWin视频演示和图片见楼下
         7寸演示视频和图片见5楼,屏有点大,有些效果跑不出来。
         4.3寸演示视频和图片见6楼,基本能跑的效果都跑出来了,效果非常不错,触摸和很好用。
         3寸演示视频和图片见7楼,触摸芯片是2046。

(1)emWin手册里面有这样一句话:“驱动接口的改变始于emWin V5。不再支持针对emWin V4 或更早版本开发的老显示驱动”。
(2)如果不使用V5以后版本的新特性,基本和以前的版本使用是一样的,也就是说,大家用V5以前版本实现的功能,直接升级
          到现有的版本,基本可以正常运行。
(3)本打算为M3也提供一个移植说明,但是用STM32F103ZET6+ra8875跑了一下,效果不好,速度慢是一方面,关键是SRAM
         太小了,官方的VC6.0 DEMO开辟了400K动态内存。现在用F4开辟了130K动态内存,仍然有几个例子不能跑。
(4)尽管emWin提供了大部分屏的驱动,但是不能包含所有,这篇移植文档就因此而生。不管是emWin已经支持的,还是没有
        提供支持的,均可采用这种方法。

(5)提供了一个非常好的触摸滤波方法,此方法可以有效的滤除飞点。

一.移植前的准备工作
(1)MDK4.54版本里面的有emWin5.16的库,大家注意一下这个文件夹里面的emWin库。
      
         可以看到支持M4的GUI库,所有就用这个库,大家都知道M4相对于M3,主要是增加了浮点运算,但是emWin手册里面有这样一个说明。
      
         手册里面明确的说明了emWin的库,绝对无浮点使用。所有如果使用M3的emWin库也是没有问题的。
(2)MDK要添加下面的LICENSE, 如果不添加是不能用emWin的库。
      
        添加方法也很简单,用大家注册MDK时的-注-册-机就可以的,不贴全图了。
      
(3)要添加MDK对M4的浮点支持,添加方法也很简单,提供的例程里面就有,看一下就会了,这里不再做说明了。
二.现在就可以开始移植工作了。
      主要添加下图所示的几个文件
     
      
     下面就对这些文件进行详细的说明
(1)        bsp_touch.c这个文件主要提供触摸的驱动函数,以便emWin中
GUI_TOUCH_X_MeasureX
GUI_TOUCH_X_MeasureY
两个函数的调用。
特别注意,这里改变触摸的滤波方法,以前用去点前几个点和后几个点,然后中间数值取平均的方法,效果并不理想,不用有效的滤除飞点,这里使用一个新的方法。
a、        在emWin里面使用使用触摸的中断方式,效果并不好,所以这里使用查询,查询此引脚的电平,这样可以避免不必要的调用
        GUI_TOUCH_X_MeasureX
        GUI_TOUCH_X_MeasureY
        两个函数。
b、        触摸滤波,主要是滤的是飞点,就应为这些飞点的存在,才使得触摸很不稳定。
下面的这个函数,大家应该很熟悉,就是滤除前几个点和后面几个点,然后中间几个点取平均
/* 读取次数  根据实际情况修改 */
#define XPT2046_READ_TIMES    5
/* 丢弃值  */       
#define XPT2046_LOST_VAL      1                 
uint16_t TOUCH_DataFilter(uint8_t _ucCh)
{
        uint16_t i, j;
        uint16_t buf[XPT2046_READ_TIMES];
        uint16_t usSum;
        uint16_t usTemp;

        /* 读取READ_TIMES次数据 */
        for(i=0; i < XPT2046_READ_TIMES; i++)
        {
                if (g_ChipID == IC_8875)
            {
                        if(_ucCh == ADC_CH_X)
                        {
                                buf = RA8875_TouchReadX();
                        }
                        else
                        {
                                buf = RA8875_TouchReadY();       
                        }
                }
                else
                {
                        buf = TSC2046_ReadAdc(_ucCh);       
                }       
        }
       
        /* 升序排列 */                                     
        for(i = 0; i < XPT2046_READ_TIMES - 1; i++)
        {
                for(j = i + 1; j < XPT2046_READ_TIMES; j++)
                {
                        if(buf > buf[j])
                        {
                                usTemp = buf;
                                buf = buf[j];
                                buf[j] = usTemp;
                        }
                }
        }
                  
        usSum = 0;

        /*求和 */
        for(i = XPT2046_LOST_VAL; i < XPT2046_READ_TIMES - XPT2046_LOST_VAL; i++)
        {
                usSum += buf;
        }
        /*求平均 */
        usTemp = usSum / (XPT2046_READ_TIMES - 2 * XPT2046_LOST_VAL);

        return usTemp;
}

下面的这个函数就很重要了,要滤除飞点,就全靠它了。
/* 误差范围 根据实际情况调节误差范围 */  
uint8_t ADC_ERR_RANGE = 5;
uint8_t TOUCH_ReadAdcXY(int16_t *_usX, int16_t *_usY)
{
        uint16_t iX1, iY1;
        uint16_t iX2, iY2;
        uint16_t iX, iY;

        iX1 = TOUCH_DataFilter(ADC_CH_X);
        iY1 = TOUCH_DataFilter(ADC_CH_Y);
        iX2 = TOUCH_DataFilter(ADC_CH_X);
        iY2 = TOUCH_DataFilter(ADC_CH_Y);
       
        iX = TOUCH_Abs(iX1 - iX2);
        iY = TOUCH_Abs(iY1 - iY2);
       
        /* 前后两次采样在+-ERR_RANGE内 */  
    if ((iX <= ADC_ERR_RANGE) && (iY <= ADC_ERR_RANGE))
    {      
               
                if(g_ucGPIX == 1)
                {
                        *_usY = (iX1 + iX2) / 2;
                *_usX = (iY1 + iY2) / 2;               
                }
                else
                {
                        *_usX = (iX1 + iX2) / 2;
                *_usY = (iY1 + iY2) / 2;       
                }
       

        return 1;
    }
        else
        {
                return 0;
        }          
}
触摸的驱动就这些东西,详细的使用看例程级可以,然后在文件GUI_X_Touch_Analog.c里面调用就可以了。
int  GUI_TOUCH_X_MeasureX(void)
{
        TOUCH_SCAN();
        return(g_tTP.usAdcNowX);               
}


int  GUI_TOUCH_X_MeasureY(void)
{       
        return(g_tTP.usAdcNowY);
}

(2) 下面的说明就很重要了,这个是实现emWin移植成功的关键。
在文件夹DisplayDriver有这三个文件,这里我们使用第一个。

打开这个文件,会发现里面的函数很面熟,是的,基本和UCGUI3.98里面的差不多,但是这个里面的功能更加全面。
a、        如果不使用优化,直接提供一个打点和读点的函数就可以了,如果想优化一下,就继续往下看。
优化需要修改的函数有下面几个。
/*
********************************************************************
*
*       _DrawHLine
*
*******************************************************************
*/
static void _DrawHLine  (GUI_DEVICE * pDevice, int x0, int y,  int x1) {
  if (GUI_Context.DrawMode & LCD_DRAWMODE_XOR) {
    for (; x0 <= x1; x0++) {
      _XorPixel(pDevice, x0, y);
    }
  } else {
  #if emWin_Optimize   //这里使用了一个宏定义,是否使用优化
          //LCD8875_DrawHLine(x0, y, x1, LCD_COLORINDEX);
        s_ucRA8875BusyNow = 1;
        LCD_DrawLineH(x0, y, x1, LCD_COLORINDEX);
        s_ucRA8875BusyNow = 0;
  #else
    LCD_PIXELINDEX ColorIndex;
    ColorIndex = LCD__GetColorIndex();
    for (; x0 <= x1; x0++) {
      _SetPixelIndex(pDevice, x0, y, ColorIndex);
    }
  #endif       
  }       
}

/*
*************************************************************************
*
*       _DrawVLine, not optimized
*
*************************************************************************
*/
static void _DrawVLine  (GUI_DEVICE * pDevice, int x, int y0,  int y1) {
  if (GUI_Context.DrawMode & LCD_DRAWMODE_XOR) {
    for (; y0 <= y1; y0++) {
      _XorPixel(pDevice, x, y0);
    }
  } else {

        #if emWin_Optimize
//                LCD8875_DrawVLine(x, y0, y1, LCD_COLORINDEX);
                s_ucRA8875BusyNow = 1;
                LCD_DrawLineV(x, y0, y1, LCD_COLORINDEX);
                s_ucRA8875BusyNow = 0;
        #else
                LCD_PIXELINDEX ColorIndex;
                ColorIndex = LCD__GetColorIndex();
            for (; y0 <= y1; y0++) {
              _SetPixelIndex(pDevice, x, y0, ColorIndex);
            }
        #endif
  }
}

/*
**************************************************************************
*
*       _FillRect
*
**************************************************************************
*/
static void _FillRect(GUI_DEVICE * pDevice, int x0, int y0, int x1, int y1)
{
#if emWin_Optimize
       
    if (g_ChipID == IC_8875)
        {
                s_ucRA8875BusyNow = 1;
                BTE_SetTarBlock(x0, y0, y1-y0+1, x1-x0+1, 0);  /* 设置BTE位置和宽度高度 */
BTE_SetOperateCode(0x0C);         /* 设定BTE 操作码和光栅运算码  REG[51h] Bit[3:0] = 0Ch */
                RA8875_SetFrontColor(LCD_COLORINDEX);          /* 设置BTE前景色   */
                BTE_Start();                                                  /* 开启BTE 功能     */
                BTE_Wait();                                                  /* 等待操作结束     */
                s_ucRA8875BusyNow = 0;               
        }
        else
        {
                for (; y0 <= y1; y0++)
                {
                        _DrawHLine(pDevice, x0, y0, x1);
                }               
        }
       
#else
        for (; y0 <= y1; y0++)
        {
                _DrawHLine(pDevice, x0, y0, x1);
        }
#endif
}

下面的这个函数优化很重要,要想窗口打开的快点,下面的必须优化!!!!!!!
/*
**************************************************************************
*
*       Draw Bitmap 16 BPP, not optimized
*
**************************************************************************
*/
static void _DrawBitLine16BPP(GUI_DEVICE * pDevice, int x, int y, U16 const GUI_UNI_PTR * p, int xsize)
{
#if emWin_Optimize
       
//                RA8875_SetCursor(x,y);
//                RA8875_REG = 0x02;
//                for (;xsize > 0; xsize--,p++)
//                {
//                        RA8875_RAM = *p;
//                }
        s_ucRA8875BusyNow = 1;
        LCD_DrawHColorLine(x, y, xsize, (uint16_t *)p);
        s_ucRA8875BusyNow = 0;       
#else
        for (;xsize > 0; xsize--, x++, p++)
        {
                _SetPixelIndex(pDevice, x, y, *p);
        }
#endif
}
(3)驱动函数写好以后,就是配置函数了,配置函数写好了,emWin就可以跑起来了。
     写贴一个官方的配置流程。
     
     下面就按照这个流程进行配置,如果没有说到的,看例程就可以。
     /* Define the available number of bytes available for the GUI */
#define GUI_NUMBYTES  130000
/* Define the average block size */
#define GUI_BLOCKSIZE 0x80
为emWin分配动态内存
/*********************************************************************
*
*       GUI_X_Config
*
* Purpose:
*   Called during the initialization process in order to set up the
*   available memory for the GUI.
**********************************************************************
*/
void GUI_X_Config(void)
{
        /* 32 bit aligned memory area */
        static U32 aMemory[GUI_NUMBYTES / 4];
       
        /*  Assign memory to emWin */
        GUI_ALLOC_AssignMemory(aMemory, GUI_NUMBYTES);
        GUI_ALLOC_SetAvBlockSize(GUI_BLOCKSIZE);
}

然后就是最关键的LCD_X_Config,这里对7寸4.3寸 3.0寸都做了支持。  
/*
****************************************************************************
*
*       LCD_X_Config
*
* Purpose:
*   Called during the initialization process in order to set up the
*   display driver configuration.
*
****************************************************************************   
*/
void LCD_X_Config(void)
{               
        /* Set display driver and color conversion for 1st layer */
        GUI_DEVICE_CreateAndLink(DISPLAY_DRIVER, COLOR_CONVERSION, 0, 0);

    if (g_ChipID == IC_8875)
        {
                if (g_ucGPIX == 1)        /*         GPIX = 1  4.3  480x272 */
                {
                        /* Display driver configuration */
                        LCD_SetSizeEx    (0, 480, 272);
                        LCD_SetVSizeEx   (0, 480, 272);
                       
                        /* Touch calibration */
                        GUI_TOUCH_Calibrate(GUI_COORD_X, 0, 479, 985,  50);
                        GUI_TOUCH_Calibrate(GUI_COORD_Y, 0, 271, 920,  100);
                }
                else         /*         GPIX = 0  7  800*480 */
                {
                        /* Display driver configuration */
                        LCD_SetSizeEx    (0, XSIZE_PHYS, YSIZE_PHYS);
                        LCD_SetVSizeEx   (0, VXSIZE_PHYS, VYSIZE_PHYS);
                //        LCD_SetVRAMAddrEx(0, (void *)VRAM_ADDR);
                       
                        /* Touch calibration */
                //        GUI_TOUCH_SetOrientation(0);  
                        GUI_TOUCH_Calibrate(GUI_COORD_X, 0, XSIZE_PHYS - 1, GUI_TOUCH_AD_LEFT,  GUI_TOUCH_AD_RIGHT);
                        GUI_TOUCH_Calibrate(GUI_COORD_Y, 0, YSIZE_PHYS - 1, GUI_TOUCH_AD_TOP,  GUI_TOUCH_AD_BOTTOM);               
                }
        }
        else
        {
                LCD_SetSizeEx    (0, 400, 240);
                LCD_SetVSizeEx   (0, 400, 240);
               
                /* Touch calibration */
                GUI_TOUCH_Calibrate(GUI_COORD_X, 0, 399, 300, 3600);
                GUI_TOUCH_Calibrate(GUI_COORD_Y, 0, 239, 273,  3671);       
        }

}

大家根据自己的屏,配置屏的大小和触摸校准就可以了。到这里移植就算结束了。
                                                                                              

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2013-1-9 15:15:31 | 显示全部楼层
此程序没有使用系统,方便不会系统的同学移植

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2013-1-9 15:15:52 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出20入70汤圆

发表于 2013-1-9 15:19:05 | 显示全部楼层
狂顶!

LZ好人啊!

出0入0汤圆

 楼主| 发表于 2013-1-9 15:19:10 | 显示全部楼层
STM32F4+emWin5.16+ra8875的7寸屏
http://player.youku.com/player.php/sid/XNDkzOTE1NTk2/v.swf














本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2013-1-9 15:21:13 | 显示全部楼层
本帖最后由 Eric2013 于 2013-1-9 15:27 编辑

STM32F4+emWin5.16+ra8875的4.3寸屏
http://player.youku.com/player.php/sid/XNDkzOTE3MjEy/v.swf


















本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2013-1-9 15:24:17 | 显示全部楼层
STM32F4+emWin5.16+SPFD5420的3.0寸屏
http://player.youku.com/player.php/sid/XNDkzOTE4OTY0/v.swf













本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2013-1-9 15:37:09 | 显示全部楼层
本帖最后由 Eric2013 于 2013-1-9 15:38 编辑

上传一张实际效果图,用emWin跑了一下F4的伪随机信号发生器。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-1-9 15:55:47 | 显示全部楼层
不错的东西

出0入0汤圆

发表于 2013-1-9 16:05:01 | 显示全部楼层
狂顶,楼主言之有信

出0入0汤圆

发表于 2013-1-9 16:08:13 | 显示全部楼层
卧槽,赶紧来顶顶

出0入0汤圆

发表于 2013-1-9 16:09:20 | 显示全部楼层
emWin5.xx  不开源的吧?

出0入0汤圆

发表于 2013-1-9 16:11:57 | 显示全部楼层
先占个位子

出0入0汤圆

 楼主| 发表于 2013-1-9 16:13:39 | 显示全部楼层
coolhorse 发表于 2013-1-9 16:05
狂顶,楼主言之有信

以前的“超级示波器”和7寸的GUIDEMO一直没舍得开源,后面把示波器升级一下,也开出来,自己留着一直吃灰了。

出0入0汤圆

 楼主| 发表于 2013-1-9 16:17:21 | 显示全部楼层
fire 发表于 2013-1-9 16:08
卧槽,赶紧来顶顶

终于把火哥等来了。

出0入0汤圆

 楼主| 发表于 2013-1-9 16:19:00 | 显示全部楼层
ljt80158015 发表于 2013-1-9 16:09
emWin5.xx  不开源的吧?

不开源的,此贴只为解决解决触摸的飞点问题和emWin5.XX不支持的屏 ,这样大家都可以玩上emWin了

出0入0汤圆

发表于 2013-1-9 16:28:20 | 显示全部楼层
好东西,多谢楼主分享!
新手问一下emWin5.xx和ucGUI有什么联系、区别吗?

出0入0汤圆

发表于 2013-1-9 16:37:09 | 显示全部楼层
楼主好人啊,从ucgui到现在的emWin。都看过你的帖子,真正的高手,不在于你多牛逼,而是在于你的奉献。希望自己能有一天也能为大家贡献的力量。
共勉

出0入0汤圆

 楼主| 发表于 2013-1-9 16:39:39 | 显示全部楼层
tanjinc 发表于 2013-1-9 16:37
楼主好人啊,从ucgui到现在的emWin。都看过你的帖子,真正的高手,不在于你多牛逼,而是在于你的奉献。希望 ...

晕   这评论。。。。。。。。

出0入0汤圆

 楼主| 发表于 2013-1-9 16:40:21 | 显示全部楼层
stmlt 发表于 2013-1-9 16:28
好东西,多谢楼主分享!
新手问一下emWin5.xx和ucGUI有什么联系、区别吗?

同一个产品,不同的公司叫的名字不一样。

出0入0汤圆

发表于 2013-1-9 17:32:04 | 显示全部楼层
顶起,太佩服楼主了

出0入0汤圆

发表于 2013-1-9 17:35:42 | 显示全部楼层
顶起顶起

出0入0汤圆

发表于 2013-1-9 17:39:08 | 显示全部楼层
楼主牛人啊,佩服楼主的水平和奉献精神!

出0入0汤圆

 楼主| 发表于 2013-1-9 17:42:22 | 显示全部楼层
wu40480764 发表于 2013-1-9 17:32
顶起,太佩服楼主了

谢谢群里的兄弟顶贴。

出0入0汤圆

 楼主| 发表于 2013-1-9 17:42:44 | 显示全部楼层
youmuchenhuai 发表于 2013-1-9 17:35
顶起顶起

谢谢群里的兄弟顶贴。

出0入0汤圆

发表于 2013-1-9 19:23:47 | 显示全部楼层
楼主尝试过“加载XBF(外部FLASH字库)” 吗?

出0入0汤圆

 楼主| 发表于 2013-1-9 19:29:59 | 显示全部楼层
kinsno 发表于 2013-1-9 19:23
楼主尝试过“加载XBF(外部FLASH字库)” 吗?

不用这么搞,以前论坛里面不是有一个外置到SD里面的吗,自己修改一下弄到内部FLASH或外置FLASH都可以的,
最好还是用JLINK将字库下载到内部FLASH,用起来很流畅,要是搞到外置SD卡,拖动窗口的时候,很卡机。

出0入0汤圆

发表于 2013-1-9 20:12:03 | 显示全部楼层
赶紧搜藏

出0入0汤圆

发表于 2013-1-9 20:16:14 | 显示全部楼层
本帖最后由 kinsno 于 2013-1-9 20:17 编辑
Eric2013 发表于 2013-1-9 19:29
不用这么搞,以前论坛里面不是有一个外置到SD里面的吗,自己修改一下弄到内部FLASH或外置FLASH都可以的, ...

。。。。。

出0入0汤圆

 楼主| 发表于 2013-1-9 20:19:28 | 显示全部楼层
kinsno 发表于 2013-1-9 20:16
。。。。。

明白兄弟的意思,后面我也花点时间搞搞。

出0入0汤圆

发表于 2013-1-9 20:35:47 | 显示全部楼层
Eric2013 发表于 2013-1-9 20:19
明白兄弟的意思,后面我也花点时间搞搞。

一想到STM32F4系列,我就想到内存。。。。。

出0入0汤圆

发表于 2013-1-9 20:43:01 | 显示全部楼层
Eric2013 发表于 2013-1-9 20:19
明白兄弟的意思,后面我也花点时间搞搞。

楼主,我想知道,如果F4外接了FLASH,FLASH中存有BMP图片,那么从FLASH读取数据刷7寸屏幕
,可以到多少帧
F4对比,NXP的1788不知道如何

最近正为这二个方案选型头痛.....

出0入0汤圆

发表于 2013-1-9 20:46:32 | 显示全部楼层
我是来看界面效果的,比ucgui好看多了

出0入0汤圆

发表于 2013-1-9 20:48:25 | 显示全部楼层
本人夜观天象,此帖必火啊!
希望阿莫早点给条裤子!

出0入0汤圆

发表于 2013-1-9 20:57:57 | 显示全部楼层
字体能中文吗

出0入0汤圆

 楼主| 发表于 2013-1-9 21:12:14 | 显示全部楼层
badboy.tao 发表于 2013-1-9 20:57
字体能中文吗

后面我把UCGUI3.98时支持的中文显示方法,在这个上面都尝试一下,能用正确显示中文的都贴出来。

出0入0汤圆

 楼主| 发表于 2013-1-9 21:14:00 | 显示全部楼层
kinsno 发表于 2013-1-9 20:35
一想到STM32F4系列,我就想到内存。。。。。

对,内存永远是使用emWin的通,如果内存再大点,搞一些更加花哨的界面 还是没问题的。

出0入0汤圆

发表于 2013-1-9 21:14:58 | 显示全部楼层
Eric2013 发表于 2013-1-9 21:12
后面我把UCGUI3.98时支持的中文显示方法,在这个上面都尝试一下,能用正确显示中文的都贴出来。 ...

好啊,太谢谢了,这样用处就大了

出0入0汤圆

 楼主| 发表于 2013-1-9 21:26:03 | 显示全部楼层
本帖最后由 Eric2013 于 2013-1-9 21:27 编辑
Lavion 发表于 2013-1-9 20:43
楼主,我想知道,如果F4外接了FLASH,FLASH中存有BMP图片,那么从FLASH读取数据刷7寸屏幕
,可以到多少帧 ...


外置FLASH,我不知道怎么样,要是外置SD卡,边读取边显示,有点慢,跟F1显示图片效果差不多。
(1)如果外接SRAM的话,读到SRAM里面,然后显示,效果还是很不错的.
        可以看这个帖子
       http://www.amobbs.com/thread-5500309-1-1.html
(2)如果用RA8875外部串行Flash的图片直接刷屏,刷 800*480 的图,还是有刷屏感 105ms 刷完。
        用串行Flash的双线模式,MOSI和MISO都做数据,每个CLK两个bit,刷屏时间 61ms。不过还是看到一闪, 这个是armfly测试的


   如果在意刷图片的效果,那就果断LPC1788,刷控件什么的 基本没问题,一瞬间的事(条件是底层驱动要优化)

出0入0汤圆

 楼主| 发表于 2013-1-9 21:29:17 | 显示全部楼层
ksws0482846 发表于 2013-1-9 20:46
我是来看界面效果的,比ucgui好看多了

F4的内存还是有点小,要是再大点,效果更花哨

出0入0汤圆

 楼主| 发表于 2013-1-9 21:29:43 | 显示全部楼层
LZW520 发表于 2013-1-9 20:48
本人夜观天象,此帖必火啊!
希望阿莫早点给条裤子!

谢谢顶贴

出0入0汤圆

发表于 2013-1-9 21:31:48 | 显示全部楼层
Eric2013 发表于 2013-1-9 21:26
外置FLASH,我不知道怎么样,要是外置SD卡,边读取边显示,有点慢,跟F1显示图片效果差不多。
(1)如果 ...

谢谢,看来还是得上1788.

出0入0汤圆

 楼主| 发表于 2013-1-9 21:36:03 | 显示全部楼层
Lavion 发表于 2013-1-9 21:31
谢谢,看来还是得上1788.

还有一个测试数据,F1和F4涮色块,底层都经过优化,没有使用RA8875的BTE功能
F1 大概700万左右, F4 大概1800万左右。

如果使用BTE功能,F1和F4涮色块 速度是一样的。

出0入0汤圆

发表于 2013-1-9 21:38:51 | 显示全部楼层
好东西,这个一定要顶,都没时间研究这个呢

出0入0汤圆

发表于 2013-1-9 21:51:49 | 显示全部楼层
楼主辛苦,三个论坛跑着发帖子。
买了1788,准备上emWIN.

出0入0汤圆

发表于 2013-1-9 21:54:28 | 显示全部楼层
不错!好贴!

出0入0汤圆

 楼主| 发表于 2013-1-9 21:57:48 | 显示全部楼层
tiger5 发表于 2013-1-9 21:51
楼主辛苦,三个论坛跑着发帖子。
买了1788,准备上emWIN.

这都被兄弟发现了    O(∩_∩)O~

出0入0汤圆

 楼主| 发表于 2013-1-9 21:58:31 | 显示全部楼层
tiger5 发表于 2013-1-9 21:51
楼主辛苦,三个论坛跑着发帖子。
买了1788,准备上emWIN.

请教一下 买的板子多少钱,我也打算搞一块。

出0入0汤圆

发表于 2013-1-9 22:02:55 | 显示全部楼层
Eric2013 发表于 2013-1-9 21:12
后面我把UCGUI3.98时支持的中文显示方法,在这个上面都尝试一下,能用正确显示中文的都贴出来。 ...

3.98是要修改源码来支持全方位的中文显示,现在的版本是库,修改不了源码的。

出0入0汤圆

发表于 2013-1-9 22:19:24 | 显示全部楼层
Eric2013 发表于 2013-1-9 21:36
还有一个测试数据,F1和F4涮色块,底层都经过优化,没有使用RA8875的BTE功能
F1 大概700万左右, F4 大概 ...

这个速度只是FSMC的总线速度。只是单方面的总线写到液晶吧。
而实际应用中,还有FSMC的从FLASH读取,或者从片内读取,然后在写入。
这样的话,起码要降低一半,甚至更低,所以刷7寸屏幕,会卡

出0入0汤圆

发表于 2013-1-9 22:33:56 | 显示全部楼层
这个必须支持

出0入0汤圆

发表于 2013-1-9 22:42:40 | 显示全部楼层
还没用过,要顶

出0入0汤圆

发表于 2013-1-9 22:57:11 | 显示全部楼层
Eric2013 发表于 2013-1-9 21:29
谢谢顶贴

只是GUILib文件夹下的GUI_CM4F我打不开看不了啊(加到工程里也打不开)。希望能看到emWin5源码。

出0入85汤圆

发表于 2013-1-9 23:08:48 | 显示全部楼层
出7寸屏套件不?

出0入0汤圆

 楼主| 发表于 2013-1-9 23:33:08 来自手机 | 显示全部楼层
LZW520 发表于 2013-1-9 22:57
只是GUILib文件夹下的GUI_CM4F我打不开看不了啊(加到工程里也打不开)。希望能看到emWin5源码。 ...

官方没有提供源码,只有库

出0入0汤圆

 楼主| 发表于 2013-1-9 23:35:25 来自手机 | 显示全部楼层
LZW520 发表于 2013-1-9 22:57
只是GUILib文件夹下的GUI_CM4F我打不开看不了啊(加到工程里也打不开)。希望能看到emWin5源码。 ...

官方没有提供源码,只有库

出0入0汤圆

 楼主| 发表于 2013-1-9 23:35:43 来自手机 | 显示全部楼层
LZW520 发表于 2013-1-9 22:57
只是GUILib文件夹下的GUI_CM4F我打不开看不了啊(加到工程里也打不开)。希望能看到emWin5源码。 ...

官方没有提供源码,只有库

出0入0汤圆

 楼主| 发表于 2013-1-9 23:36:00 来自手机 | 显示全部楼层
LZW520 发表于 2013-1-9 22:57
只是GUILib文件夹下的GUI_CM4F我打不开看不了啊(加到工程里也打不开)。希望能看到emWin5源码。 ...

官方没有提供源码,只有库

出0入0汤圆

 楼主| 发表于 2013-1-9 23:40:36 来自手机 | 显示全部楼层
用手机回复了一次,以为没回复成功,再次回复居然回复了这么多

出0入0汤圆

 楼主| 发表于 2013-1-9 23:46:53 来自手机 | 显示全部楼层
marshallemon 发表于 2013-1-9 23:08
出7寸屏套件不?

核心板和屏是以前买的armfly的,上淘宝搜索店铺armfly就可以了

出0入0汤圆

发表于 2013-1-9 23:48:27 | 显示全部楼层
好贴子啊,收藏之前果断顶一下

出0入0汤圆

发表于 2013-1-9 23:55:46 | 显示全部楼层
顶硬汉兄

出0入0汤圆

 楼主| 发表于 2013-1-10 00:04:07 来自手机 | 显示全部楼层
chengpiaopiao 发表于 2013-1-9 23:55
顶硬汉兄

谢谢兄弟

出0入0汤圆

发表于 2013-1-10 00:08:15 | 显示全部楼层
支持的这个,要顶上

出0入0汤圆

发表于 2013-1-10 00:22:47 | 显示全部楼层
LZW520 发表于 2013-1-9 20:48
本人夜观天象,此帖必火啊!
希望阿莫早点给条裤子!

已经置酷

出0入0汤圆

 楼主| 发表于 2013-1-10 00:33:56 来自手机 | 显示全部楼层
fire 发表于 2013-1-10 00:22
已经置酷

感谢火哥

出0入0汤圆

发表于 2013-1-10 07:52:24 来自手机 | 显示全部楼层
好东西
收下

出0入4汤圆

发表于 2013-1-10 08:30:35 | 显示全部楼层
好帖子。学习一下。

出0入0汤圆

发表于 2013-1-10 12:53:21 | 显示全部楼层
fire 发表于 2013-1-10 00:22
已经置酷

要是有emWin5源码就更酷了,配上这个使用就爽了,可惜emWin不开源,哎!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-1-11 09:19:41 | 显示全部楼层
Eric2013 发表于 2013-1-9 21:58
请教一下 买的板子多少钱,我也打算搞一块。

论坛一位网友的。共170多元,板子+4.3触摸屏散件,自己焊的。

出0入0汤圆

发表于 2013-1-11 09:21:39 | 显示全部楼层
Eric2013 发表于 2013-1-9 21:58
请教一下 买的板子多少钱,我也打算搞一块。

http://www.amobbs.com/forum.php? ... p;highlight=LPC1788

出0入0汤圆

发表于 2013-1-11 09:43:19 | 显示全部楼层
高手,好好看

出0入0汤圆

发表于 2013-1-11 10:06:47 | 显示全部楼层
好贴顶起
佩服一下楼主

出0入0汤圆

发表于 2013-1-11 10:24:02 | 显示全部楼层
LZW520 发表于 2013-1-10 12:53
要是有emWin5源码就更酷了,配上这个使用就爽了,可惜emWin不开源,哎!

好东西啊,对初学者非常有用。谢谢,

出0入0汤圆

发表于 2013-1-11 11:48:56 | 显示全部楼层
流浪人 发表于 2013-1-11 10:24
好东西啊,对初学者非常有用。谢谢,

不谢,需要的话随便下载!

出0入0汤圆

发表于 2013-1-11 13:23:43 | 显示全部楼层
意思是不是也可以用在ucos系统上作为界面库的?

出0入0汤圆

发表于 2013-1-11 13:44:30 | 显示全部楼层
这么好的贴
果断顶了
……

出0入0汤圆

 楼主| 发表于 2013-1-11 14:01:04 | 显示全部楼层
farmerzhangdl 发表于 2013-1-11 13:23
意思是不是也可以用在ucos系统上作为界面库的?

可以,提供裸机的形式,主要是方便使用。

出0入0汤圆

发表于 2013-1-11 14:16:15 | 显示全部楼层
不管了,先顶再看,等有空闲移植到我的板子上玩玩,正好最近在做产品的界面设计,也用得上,十分感谢。

出0入0汤圆

 楼主| 发表于 2013-1-11 14:16:35 | 显示全部楼层
tiger5 发表于 2013-1-11 09:21
http://www.amobbs.com/forum.php?mod=viewthread&tid=5511587&highlight=LPC1788

好的 谢谢

出0入0汤圆

 楼主| 发表于 2013-1-11 14:18:09 | 显示全部楼层
chishangpiao 发表于 2013-1-11 14:16
不管了,先顶再看,等有空闲移植到我的板子上玩玩,正好最近在做产品的界面设计,也用得上,十分感谢。 ...

您好, 还有LPC1788的板子没, 我想买一套,旺旺联系你不在线。

出0入0汤圆

发表于 2013-1-11 14:41:29 | 显示全部楼层
感谢lz,真是神了

出0入0汤圆

发表于 2013-1-11 15:01:20 | 显示全部楼层
牛人啊,谢谢分享资料!

出0入0汤圆

发表于 2013-1-11 15:09:37 | 显示全部楼层
不错不错,也来顶一下,呵呵~

出0入0汤圆

发表于 2013-1-11 17:28:44 | 显示全部楼层
好东西,谢谢!

出0入0汤圆

 楼主| 发表于 2013-1-11 19:44:39 | 显示全部楼层
nongxiaoming 发表于 2013-1-11 15:09
不错不错,也来顶一下,呵呵~

谢谢顶贴    O(∩_∩)O~

出0入0汤圆

发表于 2013-1-11 20:20:39 | 显示全部楼层
Eric2013 发表于 2013-1-11 19:44
谢谢顶贴    O(∩_∩)O~

楼主您好呐,试了你的历程,用的也是RA8875,但是触摸的鼠标移动后,背景图片就被擦了,变成黑色了。。请教楼主遇到过这种情况吗??

出0入0汤圆

 楼主| 发表于 2013-1-11 20:37:38 | 显示全部楼层
wangzheyu 发表于 2013-1-11 20:20
楼主您好呐,试了你的历程,用的也是RA8875,但是触摸的鼠标移动后,背景图片就被擦了,变成黑色了。。请 ...


              s_ucRA8875BusyNow

(1)此标志是资源共享标志,用于解决FSMC共享的问题,因为触摸和
    TFT屏的操作都是使用的FSMC.
(2)将标志放在emWin的接口函数里面处理比较方便,要是放到相应的
    函数里面,容易出现遗漏。
(3)此标志在RA8875的使用过程中,不是必须的,如果采用
      GUI_Delay(1) //或其它的延时刷新函数。
      GUI_TOUCH_Exec();
      这里需要使用此标志,应为需要延时官方的DEMO。
(4)如果有系统支持的话,直接使用信号量来解决就可以。

我提供的例程里面,在emWin的接口函数里面都有这个标志,例如打点函数
s_ucRA8875BusyNow = 1;      //置1 就标志打点函数使用FSMC
LCD_PutPixel(x,y,PixelIndex);
s_ucRA8875BusyNow = 0;      //没有使用FSMC.

在嘀嗒定时器里面每10ms调用一次触摸函数
void bsp_RunPer10ms(void)
{
        BEEP_Poll();
        bsp_KeyPro();
        IWDG_Feed();
   
        /* RA8875 触摸*/
        if (g_ChipID == IC_8875)
        {
               /*  资源共享标志   在这里读一下是否是 0,是0就表示绘图没有使用FSMC*/
                if(s_ucRA8875BusyNow == 0)
                {
                        GUI_TOUCH_Exec();       
                }
        }
        /* XPT2046 */
        else
        {
                GUI_TOUCH_Exec();       
        }
       
}




出0入0汤圆

发表于 2013-1-11 21:41:52 来自手机 | 显示全部楼层
不顶不行啊

出0入0汤圆

发表于 2013-1-12 08:20:05 来自手机 | 显示全部楼层
好东西啊,支持一个

出0入0汤圆

发表于 2013-1-12 12:38:53 | 显示全部楼层
必须得顶啊

出0入0汤圆

发表于 2013-1-15 10:31:51 | 显示全部楼层
好东西,准备搞到1788上试试

出0入0汤圆

发表于 2013-1-19 15:47:35 | 显示全部楼层
uC/GUI(emWin)的应用与移植,mark

出0入0汤圆

发表于 2013-1-25 12:22:27 | 显示全部楼层
楼主哦 我是用你的工程移植到我的板子上 发现systick 出问题呢? 总是会进入hardfaut。 只要不初始化 //        bsp_InitTimer();          /* 初始化系统滴答定时器 */ 问题地点  主要问题
就能显示 ,但是就不能动了,只有开始ewin的画面。 不知道怎么修复者个问题呢?先,谢谢。我继续去调试了。

出0入0汤圆

发表于 2013-2-1 12:16:43 | 显示全部楼层
不错,确实挺好看的

出0入4汤圆

发表于 2013-2-1 12:20:08 | 显示全部楼层
lz有没有办法样emWin使用外部的中文字库

出0入0汤圆

发表于 2013-2-4 04:08:01 | 显示全部楼层
非常棒。过阵子移植去

出0入0汤圆

发表于 2013-2-6 11:29:29 | 显示全部楼层
MARK,好东东。

出0入0汤圆

发表于 2013-2-16 21:39:04 | 显示全部楼层
请教这个在IAR上能移植嘛。

出0入0汤圆

发表于 2013-2-16 22:38:43 来自手机 | 显示全部楼层
好东西,谢谢
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-9 02:58

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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