M4/M3 StellarisWare图形库(Grlib)入门系列(一)——基础知识

2019-08-08 22:59发布

本帖最后由 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颜 {MOD},精心设计过的界面将非常有吸引力。

image1_1.PNG


2.基础知识
虽然
Stellaris图形库应用起来比较简单,但理论知识还是要掌握一些的。下面谈谈Stellaris图形库的基本结构。

Stellaris图形库分成了三层,分别是:
    (1) 显示驱动层 (Display Driver Layer)
    (2) 基本图形层 (Graphics Primitives Layer)
    (3) 控件层 (Widget Layer)



image2_1.PNG



其实结构非常简单,下面分别介绍下各层的大概作用。

2.1.显示驱动层 (Display Driver Layer)
2.1.1 基本功能
显示驱动层提供了和硬件通信的基本功能,这层直接和硬件直接通信。提供了两类驱动,分别是图形输出驱动、用户输入驱动。用户输入不是必须的。

辛苦的分层带来了巨大好处,当需要把程序从一个硬件平台移植到另一个新的时候,如果显示内容不变,开发者们只需要重新实现驱动层,而上层的代码可以保持不变。

2.1.2 图形输出驱动
图形输出驱动和显示屏控制器打交道,实现诸如在屏幕上画个点之类的基本作用(毕竟再复杂的图像也是一个点一个点画出来的),参考TI LM3S9B96开发板的驱动,有如下的显示驱动程序:
    kitronix320x240x16_ssd2119_8bit.c
    kitronix320x240x16_ssd2119_8bit.h

它们就是开发板上320x240彩 {MOD}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函数,并提供动作的信息(如动作的xy坐标,动作方式等)。WidgetPointerMessage则负责进行画面更新,响应用户的动作。

2.2.基本图形层 (Graphics Primitives Layer)
只能画点线面显然是不够用的。Stellaris图形库的基本图形层,调用了底层函数,实现了形状、文字以及图片的绘制功能。如果只需要基本的图形显示功能,仅使用该层也是可以的。

2.3. 控件层 (Widget Layer)
PC上的按钮、点选框等控件,想必各位应该相当熟悉了。控件层的作用就是实现这些类似的功能。Stellaris图形库可以实现的控件有:
    画布 (Canvas)
    控件容器 (Container)
    按钮(Push Button)
    选择/多选框 (Checkbox)
    单选框 (Radio Button)
    列表框(ListBox)
    拖滑/进度条 (Slider)

StellarisWare图形库中,实现了这些控件的绘制、事件响应两部分,为应用带来方便。后文会具体介绍如何使用这些控件。

image2_2.PNG







友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
中国无芯
1楼-- · 2019-08-08 23:42
做的太漂亮了:victory:
永远的不知
2楼-- · 2019-08-08 23:46
写的太好了,期待下文,TI M3用户的福音啊。
xinyuhjj
3楼-- · 2019-08-09 04:09
:)不错。虽然这个图形库用了好久,但一直没有仔细分析过。
要是能把这个图形库的结构,特别是图形库的数据结构,要是能够搞清楚,相信对自己的软件水平会有一个很大的提高。
luohua001
4楼-- · 2019-08-09 09:14
兄台,写的太好了!能否将这三个文档转化成PDF格式?便于下载和分享呀!!!
TI_MCU
5楼-- · 2019-08-09 13:52
 精彩回答 2  元偷偷看……
guozhiyang
6楼-- · 2019-08-09 17:43
很不错啊!

一周热门 更多>