本帖最后由 TI_MCU 于 2011-11-2 11:32 编辑
3.StellarisWare图形库基本使用 3.1.开发环境及StellarisWare安装
本文以IAR Embedded Workbench v6.2 (ARM)为开发环境,以TI Stellaris LMS9B96开发板为基础,介绍StellarisWare图形库的用法。
要使用StellarisWare图形库,StellarisWare软件包当然必不可少。在TI官网免费可以下载到这个软件包。 安装StellarisWare后,进入安装路径,在grlib目录下可以找到StellarisWare图形库相关内容。Grlib根目录下包含了图形库的源代码,而诸如ccs、ewarm这些目录包含了针对不同IDE的库文件。
3.2.图形库添加与编译 (显示部分) 为了比较详细地说明用法,我们完全手动建立项目,实际项目时可以从StellarisWare/boards/dk-lm3s9b96/hello示例开始以节约时间。首先介绍的是显示部分的设置,触摸功能将放在下一章。
3.2.1.建立新项目
在IAR中新建项目Stellaris_Demo,设置项目Device为TexasInstruments LM3SxBxx。在项目中加入Stellaris_Demo.c,写一个空的main函数。同时也别忘记加入启动代码startup_ewarm.c (该文件可以在StellarisWare/boards/dk-lm3s9b96/hello中的应用中找到,_ewarm表示该启动代码为针对IAR的)。
新项目中只有默认的中断函数处理程序(定义在startup_ewarm.c中),尝试编译通过,进入下一步。
3.2.2.添加图形库
首先在项目中添加StellarisWare驱动库和图形库。分别在StellarisWare/driverlib和StellarisWare/grlib下面,找属于ewarm的已编译好的库。因为是在M3平台上的,所以用-cm3版本。-cm4f是为LM4F系列准备的,如果是在LM4F平台使用,只需要使用LM4F的库而代码没有变化。
打开程序设置,在C/C++ Compiler中Preprocessor选项卡下Additional include directories添加C:\StellarisWare (StellarisWare的安装路径)。如果使用了LM3S9B96开发板,需要再添加C:\StellarisWare\dk-lm3s9b96。
由于使用IAR作为开发环境,需要在Defined symbols中加入ewarm (小写)定义。TARGET_IS_TEMPEST_RB1是set_pinout需要的,用以区别器件版本。
在Stellaris_Demo.c中加入驱动库和图形库的引用,如下所示:
#include "inc/hw_types.h"
#include "driverlib/sysctl.h"
#include "grlib/grlib.h"
int main(void)
{
SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_XTAL_16MHZ | SYSCTL_OSC_MAIN);
while(1);
}
除了图形库和驱动库,还需要有相应硬件的驱动程序。LM3S9B96开发板的驱动程序可以在StellarisWare/boards/drivers找到源代码。将set_pinout.c以及kitronix320x240x16_ssd2119_8bit.c两个驱动加入项目。要说明的是,这里的set_pinout.c只是用于初始化LM3S9B96开发板的外围功能,可以理解为只是显示驱动程序的一部分。
在Stellaris_Demo.c中再加入驱动的引用。
#include "drivers/kitronix320x240x16_ssd2119_8bit.h"
#include "drivers/set_pinout.h"
至此,StellarisWare图形库以及相应驱动已经引入项目。接下来都是代码工作,需要对硬件、图形库进行初始化。
3.2.3.驱动程序初始化
使用以下代码进行显示驱动的初始化:
// 初始化显示驱动
PinoutSet();
Kitronix320x240x16_SSD2119Init();
3.3.图形库添加与编译 (触摸部分)
如果需要触摸功能,则需添加触摸驱动程序及触摸事件处理。否则该节可以跳过。
在3.2节的基础上,在项目中添加触摸屏的驱动程序,若使用了LM3S9B96开发板,就是touch.c 文件(在StellarisWarae/boards/dk-lm3s9b96/drivers目录下)。LM3S9B96的触摸屏驱动使用了ADC Sequence 3中断,所以还需要在startup_ewarm.c的中断向量中添加TouchScreenIntHandler作为中断处理函数。
由于Touch功能往往和控件功能相关,若需要图形库来处理控件事件,还需要在触摸事件发生时调用StellarisWare图形库的事件处理函数。这部分将在后文控件使用章节中介绍。
|