《stm32之UCGUI移植》.doc
文本预览下载声明
STM32之UCGUI移植
2012年7月6日 author:wzt
在移植之前当然要明白ucgui是什么,它就是一种嵌入式图形软件,用它可以制作操作界面,图像……等等,用于在显示设备上显示。要在自己的嵌入式设备中应用必须要进行移植……摸索了近一个星期今天终于移植完美,并成功绘制出一幅图像。
在移植前看过很多资料和例程。可能每个人的编程风格各具特色,从而大相径庭,让自己也甚是苦恼。看到有的完全不同风格的代码我还是宁愿自己重头开始自己一点点移植,当然遇到问题也只能靠自己。过程中遇到的个个令人抓狂但网上有搜不到解决办法的问题我会进行详细说明,希望对初次进行移植的同学能有所帮助。下面是我的吐血总结:
做好准备工作:下载UCGUI的源代码(我用的是3.90版的);建立好自己的stm32的工程并且编译无误;
打开源代码文件夹,
复制START\GUI粘贴到工程文件夹中,复制START\CONFIG粘贴到工程目录下的GUI文件夹下,复制SAMPLE\GUI_X文件夹到工程目录下的GUI\CONFIG文件夹中。这样ucgui中的文件已经够了,接下来就是修改了。
打开之前建好的mdk工程,把拷贝入工程中的ucgui文件加入工程中。整个工程的结构如下:
可以看到前面的GUI的都是ucgui的文件。细心地人可能会发现和gui文件夹里面的相比我们这里没有包含JPEG, MemDev , MultiLayer , Widget , Wm这5个文件夹的内容。因为这些文件起到的是扩展功能,在我们移植阶段可以先不添加,等到以后用到其中的功能时再选择添加。当然前提是在配置时要把相应的功能开关关掉,在下面的步骤中会提到。在上面的工程文件中ConverMono , ConverColor ,Core ,Font 这四个目录下的文件是不用修改的。而我们要修改的文件在LCDDriver ,Config这两个目录下。
LCDDriver目录下的结构如图所示,其中我们用到的也仅仅只有LCDDummy.c(也可以用其他两个,这三个文件实际上就是三个不同的模板,但功能一样,只是移植时修改的细节不一样。我选择修改LCDDummy.c这个文件)。前几天我看别人的例程,很多人用的是官方给出的对应型号的配置文件……比如ili9320.c,ili9320_api.c,ili9320_gui.c,用这个的话就不用LCDDmmy.c了。那到底该用哪种呢?实际上官方给出了一些型号lcd控制器的配置文件,假如你的lcd有对应的配置文件,那么你两种方法都可以用。要是找不到你对应的型号,就必须用我使用的这种方法。我也更赞同用修改LCDDummy.c文件这种方法,应为它的通用性更强,它可以配置任何型号的lcd前提是你要编写好该lcd最底层的驱动。
这个是Config目录下的文件结构,别忘了把GUI_X.C添加进来,要不然编译的时候会有错误。
整个移植修改的文件都在这里了,其实也没几个,我修改的LCDDummy.c GUIConf.h LCDConf.h也就这三个文件。下面讲解如何修改。
上层配置:也就是GUI一些功能的开关,打开GUIConf.h文件:
按照如下代码配置:(注:0是关,1是开)
#ifndef GUICONF_H
#define GUICONF_H
#define GUI_OS (0) //操作系统的支持,当用到ucos时需要打开
#define GUI_SUPPORT_TOUCH (0) /* 触摸屏的支持,这里关闭*/
#define GUI_SUPPORT_UNICODE (1) /* 建议初始关闭,以后用汉字库时再打开*/
#define GUI_DEFAULT_FONT GUI_Font6x8 //定义字体大小
#define GUI_ALLOC_SIZE 5000 /*分配的动态内存空间 */
/*********************************************************************
#define GUI_WINSUPPORT 0 /* 窗口功能支持*/
#define GUI_SUPPORT_MEMDEV 0 /* 内存管理,建议先关闭*/
#define GUI_SUPPORT_AA 0 /* 抗锯齿功能,打开后可以提高显示效果,建议先关闭*/
#endif
上层配置完当然还有下层,就是LCDConf.h文件,这个也很简单,它原来的看起来比较复杂,我这里把它简化了,大家用的时候
显示全部