STM32平台的μC/GUI移植与图形界面设计

上传人:hao****an 文档编号:103211349 上传时间:2022-06-08 格式:DOC 页数:7 大小:232.01KB
返回 下载 相关 举报
STM32平台的μC/GUI移植与图形界面设计_第1页
第1页 / 共7页
STM32平台的μC/GUI移植与图形界面设计_第2页
第2页 / 共7页
STM32平台的μC/GUI移植与图形界面设计_第3页
第3页 / 共7页
点击查看更多>>
资源描述
STM32平台的CGUI移植与图形界面设计摘要:CGUI是一种专为嵌入式应用设计的通用图形接口软件。本文详细介绍了CGUI的结构框架和基于STM32平台的COS-II上的CGUI移植过程,并在此基础上进行图形界面设计;阐述了CGUI的窗口管理机制,提出了实现CGUI中文小型字库的两种方法并采用存储设备解决了图形显示的闪烁问题。关键词:CGUI移植;STM32平台;图形界面;中文小型字库;存储设备引言 嵌入式系统的图形用户界面,要求具有占用资源少、性能高、可靠性高、可移植、可配置等特点,CGUI就是这样一种专门为嵌入式应用设计的图形用户界面软件。CGUI可应用于多任务环境中,同时使用实时操作系统与CGUI,既可以发挥优先级的实时性,又能实现良好的人机界面。本文使用Cortex-M3内核的STM32平台,介绍了基于STM32平台的COS-II上的CGUI移植过程,并在此基础上开发了基于CGUI的图形用户界面。1 CGUI结构框架11 CGUI的文件组织 CGUI软件采用模块化组织架构,其中较为重要的文件目录是配置文件目录Config和GUI库文件目录。考虑到未来升级方便,建议保持CGUI原有的目录结构,这样升级到新版本时只要覆盖原文件目录即可,而不会改变整个工程的文件路径。 CGUI是一个源代码开放的图形系统,它提供了丰富的资源,包括二维绘图库,多字体、可扩充的字符集,Unicode,位图显示,多级RGB颜色管理及灰度处理调整机制,动画优化显示,具有Windows风格的对话框和预定义控件(按钮、编辑框、列表框、进度条、单选复选框、滑动条等);同时,支持键盘、鼠标、触摸屏等输入设备和双LCD的输出,提供占用极少RAM的窗口管理体系。各个子目录的路径及功能支持如表1所列。12 CGUI的层次结构 CGUI内核提供多种图形显示功能,用户程序通过API函数接口调用CGUI函数库中的各个功能函数,然后各个功能函数通过调用硬件驱动实现图形界面显示。 一个典型的包含有CGUI的软件系统可以理解为一个层次结构,详细的CGUI软件体系的层次结构如图1所示。2 基于STM32平台的CGUI移植21 STM32F103系列单片机和移植平台简介 硬件开发平台的核心是ST公司的STM32F103系列单片机,实时操作系统选择移植性较强的COS-II。STM32F103系列单片机最高主频为72 MHz;片内多达51 2 KB的Flash并可以直接运行程序,片内还有64 KB的RAM;拥有众多的定时器、中断源和外设,内部集成了一个高速外部存储器接口FSMC总线,可以很方便地控制液晶显示模块。目标平台的液晶模块采用320240分辨率,通过FSMC总线接口连接STM32F103单片机,并在系统的内存区开辟一块内存作为液晶显示的后台缓存。22 COS-II上的CGUI移植 CGUI的移植内容主要分成4部分:CGUI配置文件的参数修改,LCD驱动程序的编写,LCD触摸屏驱动程序编写,以及与COS-II操作系统相关接口部分的修改。221 CGUI配置文件的参数修改 主要是根据系统的实际情况对GUIConfig目录下3个配置文件的参数进行修改,设计采用的LCD选用320240的液晶显示模块,LCD控制器采用ili9320。 LCDConfh文件主要定义LCD控制器和显示屏尺寸及可选择的功能。修改如下: 222 LCD驱动程序的编写 LCD的驱动程序在GUILCDDriver目录下,在本次移植中编写的ili9320c驱动文件主要定义了GUI与LCD的硬件接口函数,包括画点、线、矩形、多边形、位图等二维图形的函数等等。CGUI所有的系统函数都是通过调用这些硬件接口来实现其功能的,而这些接口函数又可以通过调用画点函数来实现,可以认为几乎所有的CGUI显示功能都是通过最终调用画点函数来实现的。所以笔者的LCD驱动程序重点在画点函数的编写。代码如下: 223 LCD触摸屏驱动程序的编写 STM32F103通过SPI总线与触摸屏芯片相连,通常的方法是采用轮询的方法获取触摸屏的触点动作,这种方法不仅实时性差而且浪费单片机的执行周期。采用触摸屏的触点动作通过外部中断进行检测,在中断服务程序中获取触点的位置坐标,并通过调用函数GUI TOUCHStoreSta te(xScreen,yScreen),将触点坐标保存并通知CGUI。由于触摸屏和LCD的大小不一定完全相等,坐标原点的位置也可能不同,为了实现对应,需要进行AD转换,实现数值到逻辑坐标的转换。224 操作系统相关接口部分的修改 COS-II操作系统下使用CGUI需要提供一些内核接口函数来实现任务间同步。有了这些内核接口函数,就可以使CGUI运行于C OS-II系统上,通过任务调度来实现各个任务之间的协调工作,接口函数实现如下: 至此,CGUI的移植就基本上完成了,需要编写测试用例,如果显示效果不理想,再对移植的GUI进行底层配置优化和改进。3 CGUI的图形界面设计 CGUI是具有类似Windows窗口风格的图形系统,以其窗口作为内存管理的基本单元,采用消息传递机制和回调函数机制。CGUI提供给窗口和窗口控件回调机制的背后,是一个事件驱动标志(即消息)。回调函数的过程也是消息传递的过程。3. 1 CGUI的窗口管理机制 CGUI的窗口管理器用于管理LCD屏幕上图形显示的区域(即窗口),使其重叠、嵌套和并列。使用CGUI窗口管理时,任何能显示在显示终端上的内容都包含在一个窗口中,这个窗口是LCD屏幕上的一个给用户画图或者显示目标的区域。窗口的创建、显示以及删除都离不开消息传递和回调函数机制。 在CGUI中定义了数十种用于各类基本操作的消息宏,对每个窗口的操作都是通过向其对应的回调函数传送消息参数来完成的。回调函数是由用户定义的,当特定事件发生时,指示图形系统调用特定的函数。当窗口的内容发生改变时,它们用来自动重绘窗口。具体操作是通过一个指向函数的指针从窗口结构体数据项中得到回调函数的首地址,并将消息作为参数调用该函数来完成的,回调函数在接收到消息后进行相应处理。 回调函数的基本作用是实现窗口刷新。一个简单的自动更新窗口的回调函数如下: 32 CGUI实现中文小型字库的两种解决方法 CGUI带有多种常用的ASCII字体,也支持UNICODE字符显示,考虑到嵌入式系统内存资源有限,没有装入汉字库,可以根据系统的实际需要建立一个小型汉字库,以解决汉字的显示问题。在CGUI下笔者提出两种实现中文小型字库的解决方法。 (1)在CGUI的字库结构体中建立一种新的字体 CGUI的文字显示是通过查找字模的方式实现的。字库中的每个文字都有其对应的字模,所有的字模都是由GUI FONT和GUI FONT PORT这两个结构体来管理的。从汉字库中选取必需的汉字组成字库,并将汉字对应的不连续汉字机内码映射到一个连续区域。此时需要建立一个GUI_FONT_PROP结构来管理所有的汉字。例如,要实现“设置”这2个字,具体的伪代码如下: (2)直接建立汉字库,通过LCD驱动直接显示汉字 该方法通过将汉字的机内码和汉字点阵组合成一个汉字字模结构体,然后选取所必需的汉字,按照汉字字模结构体的方式存放在汉字库数组中,然后通过调用一个“汉字搜索函数”来搜索这个汉字库数组的机内码即可确定相应的汉字,并把汉字对应的点阵通过LCD驱动直接进行显示。 上述的两种方法都能在嵌入式的图形界面中实现中文显示,方法二为通过LCD驱动直接显示汉字,适合在窗体中显示汉字,而不能在控件上直接显示汉字。虽然可以用叠加的方法(即先画一个控件,然后再在上面显示汉字),但是这样处理很不方便。方法一是在CGUI的字库中建立了一种新的字体,因此在控件上显示汉字时直接调用CGUI函数即可,不会出现上述问题,因此笔者推荐使用方法一实现CGUI的中文小型字库。33 采用存储设备解决图形显示的闪烁问题 采用存储设备可以有效地防止显示屏在对有对象重叠的绘图操作时的闪烁现象。没有使用存储设备时,绘图操作直接写屏,屏幕在绘图操作执行时更新,当不同的更新在执行时会产生闪烁。如果这样的操作使用一个存储设备的话,那么所有的操作在存储设备内执行,具有无闪烁的优点。CGUI的存储设备是一个可选的软件项目,为了优化软件的性能,提高图形的显示效果,需要采用存储设备技术。CGUI中存储设备的使用一般流程为建立存储设备、激活、执行绘图操作将结果拷贝到显示屏显示,最后将创建的存储设备删除。4 结论 为了验证移植丁作成功与否,需要建立一个多任务测试用例,这个用例由3个任务构成:Main Task、GUITask、APP_Task。其中:Main_ Task任务用于设置背景窗口的回调函数和建立另外两个任务;APP_Task任务用于建立一个窗口并设置其相关的属性;GUI_Task任务用于视窗管理和多级图形画面的切换。将测试用例烧写进目标板,目标板采用神舟III号STM32开发板,液晶屏为320240像素的TFT型液晶屏幕。图2为测试用例在目标板上的运行结果。 结果表明,能显示中文小型字库,对有对象重叠的绘图操作时无闪烁现象,基本达到预期的目标。
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 建筑环境 > 建筑工程


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!