收藏 分销(赏)

[M3-SN]LM3Sxxx的图形驱动库介绍.doc

上传人:仙人****88 文档编号:7002393 上传时间:2024-12-24 格式:DOC 页数:3 大小:33KB 下载积分:10 金币
下载 相关 举报
[M3-SN]LM3Sxxx的图形驱动库介绍.doc_第1页
第1页 / 共3页
[M3-SN]LM3Sxxx的图形驱动库介绍.doc_第2页
第2页 / 共3页


点击查看更多>>
资源描述
M3芯片学习集锦-如何使用Stellarisware图形库 LM3Sxxx的图形驱动库介绍 LM3Sxxx系列MCU的图形库自下向上分为三层display driver layer,graphics primitives layer(图形基元层),widget layer(小工具层),我们要做的就是写The displaydriverlayer。也就是底层驱动层,写好了这一层,当你调用上面的graphics primitives layer画一些基本的图形的时候(如画圆),那么中间的那一个graphics primitives layer(图形基元层)就会自己去调用display driver layer(显示驱动层)里的我们自己编写的函数(画点)来完成当前的绘制工作。同理,最上面的widget layer(小工具层)也是通过调用graphics primitives layer(图形基元层)来实现更加复杂的图形,如边栏,滑调,画线。所以就是为什么我说这个图是自下向上的原因。那我们要怎么来使用这个库呢? 首先,大家把LCD连上的M3,可以用IO,也可以用总线,当然我是用的IO,然后跟据LCD驱动IC来配置里面的各种寄存器,让LCD做好显示的准备工作,我传的那份LCDDisplay那个工程里大家可以进LCDFunc.c那个源文件去看一下,其中的LCD_Init()这个函数就完成了这个工作。所以,在LCD显示部分,他总是最先被调用的。LCD显示的准备工作做好了,大家可以编写一些最底层的图形函数。大家看下我传上来的TI图形驱动库的文档,StellarisWar的库提供了一个结构体tDisplay。这个结构是需要我们去补充的,只要你补充好了这个结构,基本上就万事大吉了。在这个结构里基本上都是函数指针。指向了我们要补充的基本图形函数,如画点,画平水线,画竖直线,画填充矩形。大家在编写这些函数的时候要注意,一定要按照他的要求去编写,如要编写一个画水平线的函数,那么这个函数的形参和返回值都要和这个库的要求匹配起来,顺序不要搞反了,如形参传递的顺序。但是函数名称大家可以随便写,只要你在这个结构里的位置放对就好。因为他传递的只是一个函数指针,只要让库正确的找到那个函数就OK。大家把这个结构搞定后,基本就比交顺利了。那么,我们现在来看一个实际的例子。 #include <SystemInit.h> #include <grlib.h> tRectangle MyRect; const tDisplay MyDisplay= { sizeof(tDisplay), 0, 320, // LCD width 240, // LCD height LCDPixelDraw, (void*)0, LCDlineDrawH, // horizontal line LCDlineDrawV, // vertical line LCDRectFill, // RectFill LCDColorTranslate, LCDFlush, }; tContext MyContext; void main() { CLOCK_Init(); // 时钟初始化 GPIO_Init();//GPIO初始化 LCD_Init();//LCD初始化 LCDClearScreen(BLACK);//清屏 GrContextInit(&MyContext, &MyDisplay);//初始化图形描绘上下文 TiLogDraw(); //画LOG //********************************************************************** //显示菜单 //********************************************************************** // // 为LCD底部填充一个的紫罗兰红的矩形 // MyRect.sXMin = 0; MyRect.sYMin = 217; MyRect.sXMax = GrContextDpyWidthGet(&MyContext) - 1; MyRect.sYMax = 240; GrContextForegroundSet(&MyContext, ClrMediumVioletRed); GrRectFill(&MyContext, &MyRect); // // 为这个矩形放一个白色的边框 // GrContextForegroundSet(&MyContext, ClrWhite); GrRectDraw(&MyContext, &MyRect); // // 放置这个应用程序的名字在矩形之中,Cm20字体,白色 // GrContextFontSet(&MyContext, &g_sFontCm20); GrStringDrawCentered(&MyContext, "Grlib test demo", -1, GrContextDpyWidthGet(&MyContext) / 2, 227, 0); //写LCD中用cm48i字体,绿黄色写上“Hello,eeworld !” GrContextForegroundSet(&MyContext, ClrLime); GrContextFontSet(&MyContext, &g_sFontCm48i); GrStringDrawCentered(&MyContext, "Hello eeworld !", -1, GrContextDpyWidthGet(&MyContext) / 2, 120, 0); while(true); } 首先我定义了一个tDisplay形的结构 Mydisplay,传入了LCD的大小和各种底层函数。我用的时候就用Mydisplay这个结构。当然,你必须还要定义一个tContext形的结构。我的为 MyContext,大家可以去看文档,这个结构中包含了绘制的上下文,如你要用什么字体,什么背景,什么前景,在这个结构中都有定义,到时我们在绘制过程之中,如需要改变我们绘制的条件,只需要改变这个结构中的成员的值即可。如我们在写字的时候,我们想用大点儿的字体,那么,只需要改变其中ulForeground这个参数就可以了,当然,这些事情不用我们手工去一个一个的改,StellarisWar的图形驱动库提供了具体的函数,你只需要调用函数即可,如我们想要改字体,那么只需要调用GrContextFontSet这个函数,传入你正在使用的描绘上下文(我的为MyContext),和你要设置的字体即可。那么你在下次绘制的时候,只要你用MyContext这个上下文去绘制,那么那些字体正是你上次写入的字体,是不是很在意思?改颜色也是一个道理。其中字体和颜色大字可以去TI的文档的最后几页看,有样板在,你喜欢那个就写那个,非常简单。 在这个程序中,我们先初始化LCD,然后把整屏刷黑。就可以开始图形库操作了,首先你必须调用GrContextInit这个函数,对图形库进行初使化,你就可以开始绘制工作了。具体绘制过程大家可以对照ti图形驱动库的说明文档,一个一个的看这些函数实现什么功能,需要传入那些参数,我相信大家很快就可以搞明白。最后附上这个程序的最终显示结果,自己还是一个生学,买不起相机,这次比赛用的同学的,但是同学回家了,所以用自己手机拍的,大家将就一下吧。 3
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服