STemWin5.22移植记录一

    开始打算用RTGUI这个是国人开发的,是RT-Thread的一个组件,看过官方的Demo做的很是漂亮,于是就打算用它了,开始找各种资料。通过了解得之RealTouch4088是学习RTT的一把“钥匙”,但是本人有点菜,这把“钥匙”没有帮助我打开RTGUI的大门。于是就有个今天这篇博客,STemWin还是梅姐给我推荐,她这个资料比较多,适合我这样比较菜的人。

    好多人只知道ucGUIi,但却不知道emWIn(我也不例外)。其实这两个gui是同一个公司开发的,ucGUI是XP的,而emWin是win7的,也就是低版本的叫ucGUI,高版本的叫emWIn。了解的emWin,接下来就往自己的硬件平台上移植了。

   1、获取库文件。

     首先,在ST的官网获取源码,目前最新版本是5.22。http://www.st.com/web/en/catalog/tools/PF259225 打开这个页面,点击最下面的Download就可下载了。

下载完里面的东西很多,我们只需找到Libraries-->STemWinLibrary522这个文件夹就可以了。

    2、在工程中添加库文件。

如图:

STemWin5.22移植记录一_第1张图片

要想了解各个文件的作用可以看看它的使用手册,上面有详细的介绍。

3、修改程序,配置emWin

    首先了解emWin初始化程序,如图:

STemWin5.22移植记录一_第2张图片

    如图可知要初始化emWin,则只需调用GUI_Init()即可,下面我就需要配置下面就个函数了。

GUI_X_Config()

     在初始化过程开始时即调用,以确保将存储器分配给emWin。这个函数调用了GUI_ALLOC_AssignMemory()和GUI_ALLOC_SetAvBlockSize(),以将一个存储块分配给emWin,并设置存储块的平均尺寸。

LCD_X_Config()

     此函数在GUI_X_Config()之后立即调用。该程序的主要目的是创建一个显示驱动器件,并选择颜色转换程序。另外,它还负责设置显示尺寸。如果使用触摸屏,则也需要在此进行配置。配置如下:

void LCD_X_Config(void) {
  GUI_DEVICE * pDevice;
  CONFIG_FLEXCOLOR Config = {0};
  GUI_PORT_API PortAPI = {0};
  //
  // Set display driver and color conversion
  //
  pDevice = GUI_DEVICE_CreateAndLink(GUIDRV_FLEXCOLOR, GUICC_M565, 0, 0);
  //
  // Display driver configuration, required for Lin-driver
  //
  LCD_SetSizeEx (0, XSIZE_PHYS , YSIZE_PHYS);
  LCD_SetVSizeEx(0, VXSIZE_PHYS, VYSIZE_PHYS);

	// 这是配置触摸屏的参数
//	GUI_TOUCH_Calibrate(GUI_COORD_X, 0, 240, TOUCH_AD_TOP, TOUCH_AD_BOTTOM);
//  GUI_TOUCH_Calibrate(GUI_COORD_Y, 0, 320, TOUCH_AD_LEFT, TOUCH_AD_RIGHT);
	//
  // Orientation
  //配置显示屏的方向
  Config.Orientation = GUI_SWAP_XY;
//	Config.Orientation = GUI_MIRROR_X;
  GUIDRV_FlexColor_Config(pDevice, &Config);
  //
  // Set controller and operation mode
  //
  PortAPI.pfWrite16_A0  = LcdWriteReg;
  PortAPI.pfWrite16_A1  = LcdWriteData;
  PortAPI.pfWriteM16_A1 = LcdWriteDataMultiple;
  PortAPI.pfReadM16_A1  = LcdReadDataMultiple;
  GUIDRV_FlexColor_SetFunc(pDevice, &PortAPI, GUIDRV_FLEXCOLOR_F66702, GUIDRV_FLEXCOLOR_M16C0B16);
}

      这里面的GUIDRV_F;ECVOLOR_F66702参数很重要,这个得根据自己的控制芯片具体配置,可以参考数据手册,如下:

              STemWin5.22移植记录一_第3张图片               

     我用的ssd1289的控制芯片所以就GUIDRV_FLEXCOLOR_F66702这个参数,大家可以根据具体情况填写。

接下来就编写主函数了,但是必须加上RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_CRC, ENABLE);使能RCC时钟,具体因为不知。接下就可以运行官方的Demo了。直接上图,这里有个问题,就是白颜色的字体模糊,也不知道什么原因。希望有人能告知原因!!

STemWin5.22移植记录一_第4张图片

   总结:这对于底层和应用层,感觉驱动层是最难的。既要满足底层硬件的初始化和相应资源的配置,所以在移植之前,必须保证自己的驱动是正确的,我是在rtt下移植的,所以可以用finsh这个组件单个测试驱动,比较方便。

   本来还用触摸屏来着,但是由于驱动没有弄好再加上代码没有整理太乱(估计你看完就不该喷了),等我移植好把代码规范化之后,会上传一个基于RTT+emWin的Demo。


你可能感兴趣的:(橙子软件)