现在的位置: 首页 > 综合 > 正文

ucgui移植到stm32

2012年07月06日 ⁄ 综合 ⁄ 共 1497字 ⁄ 字号 评论关闭

这段时间移植了一下ucgui的,在ourdev上收益匪浅,这次移植也从中得到了很大的帮助,尤其是sunyouyuan 苹果写的这篇文章介绍的也很详细,但我在此补充一下,他的工程只能适合特定分辨率的屏,原因就在ucgui.lib这个文件上,这因为这个它的存在,如果你的屏超过了320*240的话,只修改配置LCDConf.h文件是不行的。在此我把最新的ucgui3.9版本的源码整合了进去,从此甩开了ucgui.lib的限制,下面我详细说一下:
   硬件:stm32开发版(stm32f103zet6)、fpga+sdram驱动板(接口8080总线)、7寸TFT屏(AT070TN83)。
   软件:开发环境—KEIL3.4;代码——依附于sunyouyuan 苹果提供的程序,以及ucgui3.9源码。
   目的:7寸tft显示ucgui界面。
   解决思路:因为sunyouyuan 苹果前辈以及把整个工程提供好了,并且编译无误,我的主要目地是去掉ucgui.lib,加上ucgui3.9版本的源码,改变参数以及底层驱动即可。
   解决方法:
  (1)把sunyouyuan 苹果前辈的代码下载下来,删掉Source->uCGUI->uCGUI.lib文件,然后把下载好的ucgui3.9版本的文件:WM、MultiLayer、Widget、MemDev、GUI_X、Font、Core、ConvertMono、ConvertColor、AntiAlias,复制粘贴到Source->uCGUI文件夹当中,在KEIL工程中去掉ucgui.lib,并把刚才复制好的文件加载到工程里面,到此整个工程就算是甩掉了库文件的限制,此时只要修改LCDConf.h当中的LCD_XSIZE 、LCD_YSIZE就能起作用了。
  (2)修改LCDConf.h 头文件的设置,因为此tft为800*480,所以修改LCD_XSIZE 、LCD_YSIZE为800、480。tft初始化函数改为:#define LCD_INIT_CONTROLLER() LCD_Init0();   
  (3)修改tft底层驱动:修改LCDDriver文件夹中的ili9320.c文件,因为咱们已经换了TFT,所以底层驱动得换掉,把之前已经点亮过的tft的底层驱动粘贴到此。自然最重要的是点写入函数void Write_Dot_LCD(int x,int y,u16 Color)。
  (4)修改ucgui与底层驱动函数的连接文件ili9320_ucgui.c,也就是把此函数中凡是用到的写点函数都改为void Write_Dot_LCD(int x,int y,u16 Color)即可。
  (5)修改Source->BSP中的bsp.c文件,其中有个void  BSP_Init(void)函数,在初始化时会用到,加入LCD_Init0()函数与其中,在启动初始化时初始化tft驱动卡,这点很重要。
   到此ucgui就能全部移植到7寸屏上,并且是无库demo版,很多人都习惯把ucgui编译成库,这样的好处是节省了编译时间,但移植性就不是很好,在同类型的tft上是行的,现在把demo版公布出来了,也是为了方便初学者上手方便,少走弯路。如果要修改屏幕显示尺寸的话,只要修改LCD_XSIZE 、LCD_YSIZE,绝对没有问题,一定要记住改底层驱动,就拿我这个板子来说,可以改变界面任意尺寸的显示效果,只要保证底层驱动LCD_CONFIG.h中的LCD_X_MAX、LCD_Y_MAX 和系统配置文件LCDConf.h中的LCD_XSIZE 、LCD_YSIZE相一致即可。

抱歉!评论已关闭.