本帖最后由 TI_MCU 于 2011-11-2 11:33 编辑
1.前言
TI Stellaris系列M3/M4之所以强大,StellarisWare软件库提供的快速软件开发解决方案功不可没。作为TI StellarisWare库的一部分,StellarisWare图形库提供了一套比较完整的MCU图形显示方案,即可以进行图形、文字的绘制,也可以轻松实现在PC机上常见的基于事件响应的控件。伴随着Stellaris LM4F系列的推出,StellarisWare图形库也将进一步升级,内置汉字字库(期待)。
不过由于Stellaris图形库没有相关的中文文档,有时候会让大家觉得入门非常困难,所以Richard决定写这篇文档,抛砖引玉,让对Stellaris感兴趣的朋友都能够通过阅读这篇文档,快速上手StellarisWare图形库,为我们的MCU世界增加更多美丽的应用。本文所介绍的StellarisWare可以在M3/M4系列上运行。
下面图中就是用Stellaris图形库进行控件绘制的演示,Stellaris最高可支持24bit颜色,精心设计过的界面将非常有吸引力。
2.基础知识
虽然Stellaris图形库应用起来比较简单,但理论知识还是要掌握一些的。下面谈谈Stellaris图形库的基本结构。
Stellaris图形库分成了三层,分别是:
(1) 显示驱动层 (Display Driver Layer)
(2) 基本图形层 (Graphics Primitives Layer)
(3) 控件层 (Widget Layer)
其实结构非常简单,下面分别介绍下各层的大概作用。
2.1.显示驱动层 (Display Driver Layer)
2.1.1 基本功能
显示驱动层提供了和硬件通信的基本功能,这层直接和硬件直接通信。提供了两类驱动,分别是图形输出驱动、用户输入驱动。用户输入不是必须的。
辛苦的分层带来了巨大好处,当需要把程序从一个硬件平台移植到另一个新的时候,如果显示内容不变,开发者们只需要重新实现驱动层,而上层的代码可以保持不变。
2.1.2 图形输出驱动
图形输出驱动和显示屏控制器打交道,实现诸如在屏幕上画个点之类的基本作用(毕竟再复杂的图像也是一个点一个点画出来的),参考TI LM3S9B96开发板的驱动,有如下的显示驱动程序:
kitronix320x240x16_ssd2119_8bit.c
kitronix320x240x16_ssd2119_8bit.h
它们就是开发板上320x240彩色LCD显示屏的驱动。打开驱动程序,能找到如下对象:
tDisplayg_sKitronix320x240x16_SSD2119
其中定义了显示相关的参数(如尺寸,屏幕的横竖等),并实现了下面的函数:
Kitronix320x240x16_SSD2119PixelDraw
Kitronix320x240x16_SSD2119PixelDrawMultiple
Kitronix320x240x16_SSD2119LineDrawH
Kitronix320x240x16_SSD2119LineDrawV
Kitronix320x240x16_SSD2119RectFill
Kitronix320x240x16_SSD2119ColorTranslate
Kitronix320x240x16_SSD2119Flush
没错,它们实现了基本的绘图功能,在更上层的(2)基本图形层中,这些函数将会被调用,直接控制LCD,在屏幕上显示相应的点(Pixel)、线(Line)以及面(Rect)等。所以在移植的时候,这些函数需要调试,保证它们能正确画出所需图形。
2.1.3. 用户输入驱动
响应用户输入事件用的硬件驱动(如触摸屏幕),也算作显示的驱动的一部分,归在这一层。在9B96开发板上,提供了触摸屏的驱动:
touch.c
touch.h
里面的函数与Stellaris图形库直接相关,用户需要用到的主要是:
TouchScreenCallbackSet
在触摸功能初始化的时候,这个函数通过回调,将用户动作事件和Stellaris图形库的事件响应函数连接在一起。
当用户动作时,输入驱动应调用Stellaris图形库的WidgetPointerMessage函数,并提供动作的信息(如动作的x、y坐标,动作方式等)。WidgetPointerMessage则负责进行画面更新,响应用户的动作。
2.2.基本图形层 (Graphics Primitives Layer)
只能画点线面显然是不够用的。Stellaris图形库的基本图形层,调用了底层函数,实现了形状、文字以及图片的绘制功能。如果只需要基本的图形显示功能,仅使用该层也是可以的。
2.3. 控件层 (Widget Layer)
对PC上的按钮、点选框等控件,想必各位应该相当熟悉了。控件层的作用就是实现这些类似的功能。Stellaris图形库可以实现的控件有:
画布 (Canvas)
控件容器 (Container)
按钮(Push Button)
选择/多选框 (Checkbox)
单选框 (Radio Button)
列表框(ListBox)
拖滑/进度条 (Slider)
StellarisWare图形库中,实现了这些控件的绘制、事件响应两部分,为应用带来方便。后文会具体介绍如何使用这些控件。
|