爱问 爱问共享资料 爱问分类
首页 > > > STM32学uCGUI入门手册.pdf

STM32学uCGUI入门手册.pdf

STM32学uCGUI入门手册.pdf

上传者: 阿璞588
639次下载 0人收藏 暂无简介 简介 2012-05-08 举报

简介:C#入门经典,STM32学uCGUI入门手册

第1章µC/GUI的介绍µC/GUIµC/GUI是一种用于嵌入式应用的图形支持软件。它被设计用于为任何使用一个图形LCD的应用提供一个有效的不依赖于处理器和LCD控制器的图形用户接口。它能工作于单任务或多任务的系统环境下。µC/GUI适用于使用任何LCD控制和CPU的任何尺寸的物理和虚拟显示。它的设计是模块化的,由在不同的模块中的不同的层组成。一个层,称作LCD驱动程序,包含了对LCD的全部访问。µC/GUI适用于所有的CPU,因为它100%由的ANSI的C语言编写的。µC/GUI很适合大多数的使用黑色/白色和彩色LCD的应用程序。它有一个很好的颜色管理器,允许它处理灰阶。µC/GUI也提供一个可扩展的2D图形库和一个视窗管理器,在使用一个最小的RAM时能支持显示窗口。本文档的目的本指南描述如何安装,配置和在嵌入式应用中使用µC/GUI图形用户界面。它也说明了软件的内部结构。假设本指南假定你对C编程语言已经具有一个扎实的认识。如果你觉得你对C语言的认识不是很充分的话,我们推荐该由Kernighan和Richie编写的“C语言编程语言”给你,它描述了程序设计标准,而在新版中,也包含了ANSI的C语言标准。汇编语言编程的知识不需要。第1页µC/GUI中文手册jk线条jk线条第1章µC/GUI的介绍1.1需求在你使用µC/GUI进行软件开发时,并不需要一个目标系统;只需要使用模拟器,大多数软件就能够进行开发。然而,最后的目的通常是能够在一个目标系统上运行该软件。目标系统(硬件)你的目标系统必须:•有一个CPU(8/16/32/64位)•有最少的RAM和ROM•有一个完全的图形LCD(任何类型和任何分辩率)内存需求的变化取决于软件的哪些部分被使用以及你的目标编译程序的效率有多高。所以指定精确值是不可能的,但是下面的数值适合典型系统。小的系统(没有视窗管理器)•RAM:100字节•堆栈:500字节•ROM:10~25KB(取决于使用的功能)大的系统(包括视窗管理器和控件)•RAM:2~6KB(取决于所需窗口的数量)•堆栈:1200字节•ROM:30~60KB(取决于使用的功能)注意,如果你的应用程序使用许多字体的话,ROM的需求将增加。以上所有的数值都是粗略的估计,不能得到保证。开发环境(编译程序)使用什么样的CPU并不重要;仅仅需要一个与ANSI兼容的C编译器。如果你的编辑器有一些限制,请告知我们,我们将通知你在编译软件时是否会带来问题。我们所知道的任何用于16/32/64位CPU或者DSP的编译器都可以使用;大多数的8位编译器也可以使用。一个C++编译器并不需要,不过可以使用。因此,如果想要的话,应用程序也可以用C++第2页µC/GUI中文手册第1章µC/GUI的介绍语言来编制。1.2µC/GUI的特点µC/GUI被设计用于给使用一个图形LCD的任何应用程序提供一个高效率的,与处理器和LCD控制器无关的图形用户界面。它适合于单一任务和多任务环境,专用的操作系统或者任何商业的实时操作系统(RTOS)。µC/GUI以C源代码形式提供。它可以适用于任何尺寸的物理和虚拟显示,任何LCD控制器和CPU。其特点包括下列这些:一般特点•任何8/16/32位CPU;只需要一个与ANSI兼容的C编译器。•任何控制器支持(如果有合适的驱动程序)的任何(单色的,灰度级或者彩色)LCD。•在较小显示屏上,可以不要LCD控制器工作。•使用配置宏可以支持任何接口。•显示屏大小可配置。•字符和位图可能是写在LCD上的任一点,而不仅仅局限于偶数的字节的地址。•程序对大小和速度都进行了最优化。•允许编译时的切换以获得不同的优化。•对于较慢的LCD控制器,LCD能够被存储到内存当中,减少访问的次数使其最小,从而得到非常高的速度。•清晰的结构。•支持虚拟显示;虚拟显示能够比实际的显示表现更大尺寸的内容。图库•支持不同颜色深度的位图。•有效的位图转换器。•绝对没有使用浮点运算。•快速线/点绘制(没有使用浮点运算)。•非常快的圆/多边形的绘制。•不同的绘画模式。字体•为基本软件提供了不同种类的字体:4*6,6*8,6*9,8*8,8*9,8*16,8*17,8*18,24*32,以及8,10,13,16等几种高度(以象素为单位)的均衡字体。更多的信息,参见第25章:“标准字体”。第3页µC/GUI中文手册jk线条jk线条jk线条jk线条jk线条jk线条第1章µC/GUI的介绍•可以定义和简便地链接新的字体。•只有用于应用程序的字体才实际上与执行结果链接,这样保证了最低的ROM占用。•字体可以分别在X轴和Y轴方向上充分地缩放。•提供有效的字体转换器,任何在你的主系统(即MicrosoftWindows)上的有效字体都可以转换。字符串/数值输出程序•程序支持任何字体的十进制,二进制,十六进制的数值显示。•程序支持任何字体的十进制,二进制,十六进制的数值编辑。视窗管理器(WM)•完全的窗口管理器包括剪切在内。一个窗口的外部区域的改写是不可能的。•窗口能够移动和缩放。•支持回调函数(可选择用法)。•WM使用极小的RAM(大约每个窗口20字节)。可选择用于PC外观的控件•控件(窗口对象)有效。它们一般自动运行,并且易于使用。触摸屏和鼠标支持•对于比如按钮控件之类的窗口对象,µC/GUI提供触摸屏和鼠标支持。PC工具•模拟器及观察器。•位图转换器。•字体转换器。范例和演示关于µC/GUI能做什么,为了给你一个更好的概念,我们准备有不同的演示作为可运行的仿真程序,在目录sample\EXE下。范例程序的源代码位于Sample目录。文件夹Sample\GUIDemo包括一个展示大部分µC/GUI特点的应用程序。第4页µC/GUI中文手册jk线条jk线条jk线条第1章µC/GUI的介绍1.3估价板一个完全的评估板包括一个带有LCD的演示板,一个C语言编译器和一个有效的范例工程。它已经设计好,主要测试和验证µC/GUI,并且它可用于熟悉这个软件。评估板评估板包括MitsubishiM30803CPU和SED13705LCD控制器(包括原理图和技术资料)。LCD(320240像素)或者单色的LCD,1/4VGA彩色显示LCD或者TFT。更详细的资料,请访问我们的网站:www.micrium.com。1.4如何使用本手册该手册说明了如何安装,配置和使用µC/GUI。它描述了软件的内部结构和µC/GUI提供的所有的功能(应用程序接口,或者API)。在实际上使用µC/GUI之前,你应该阅读或者至少浏览本手册,对该软件做到耳濡目染。推荐下列步骤:•拷贝µC/GUI文件到你的电脑。•仔细研究第2章:“入门指南”。•使用模拟器多熟悉一理这个软件能作什么(参考第3章:“仿真器”)。•使用本手册其余部分的参考资料扩展你的程序。第5页µC/GUI中文手册jk线条jk线条第1章µC/GUI的介绍排版上的语法约定本手册使用下列印刷惯例:类型用于Body正文文字。Keyword那些你在命令-提示中输入的文字,或者那些能在显示屏上看得见的文字(即系统函数,文件或者路径名)。ParameterAPI函数中的参数。Sample在程序范例中的范例代码。NewSample那些已经被加到一个已存在有程序范例中的范例代码。1.5屏幕和坐标屏幕由能够被单独控制的许多点组成。这些被称作像素。大部分µC/GUI在它的API中向用户程序提供的文本和绘图函数能够在任何指定像素上写或绘制。水平刻度被称作X轴,而垂直刻度被称作Y轴。一个二维坐标用X轴和Y轴坐标表示,即值(X,Y)。在程序中需要用到X和Y坐标时,X坐标总在前面。显示屏(或者一个窗口)的左上角为一默认的坐标(0,0)。正的X值方向被总是向右;正的Y值方向总是向下。上图说明该坐标系和X轴和Y轴的方向。所有传递到一个API函数的坐标总是以像素为单位所指定。1.6如何连接LCD到微控制器µC/GUI处理所有的LCD访问。事实上任何LCD控制器都能够被支持,不取决于它是如何访问的。至于细节,请参阅第20章:“低层配置”。此外,如果你的LCD控制器不被支持的话,请与我们保持联系。我们目前为全部有销售LCD控制器编写驱动程序,对于你打算使用第6页µC/GUI中文手册jk线条jk线条jk线条jk线条第1章µC/GUI的介绍的LCD控制器已经有一个经过验证的驱动程序提供。在你的应用程序中写这样的用于访问LCD的程序(或者宏)通常非常简单。如果你的目标硬件有需要的话,Micrium公司可以提供定制的服务。LCD如何与系统连接并不真的重要,只要它通过软件以某种方式达到,可能是按多种方式完成的。大多数这些接口通过一个提供源代码方式的驱动程序来支持。这些驱动程序通常不需要修改,但是用于你的硬件,要通过修改文件LCDConf.h进行配置。有关根据需要如何定制一个驱动程序到你的硬件在第22章:“LCD驱动程序”中说明。最通用的访问LCD的方式如下所描述。如果你只是想领会如何使用µC/GUI,你可以跳过本节。带有存储映像LCD控制器的LCDLCD控制器直接连接到系统的数据总线,意思是能够如同访问一个RAM一样访问控制器。这是一个很有效的访问LCD控制器方法,最值得推荐。LCD地址被定义为段LCDSEG,为了能访问该LCD,连接程序/定位器只需要告知这些段位于什么地方。该位置必须与物理地址空间中访问地址相吻合。驱动程序对于这类接口是有效的,并且能用于不同的LCD控制器。带有LCD控制器的LCD连接到端口/缓冲区对于在快速处理器上使用的较慢的LCD控制器,端口-连线的使用可能是唯一的方案。这个访问LCD的方法有稍微比直接总线接口慢一些的缺点,但是,特别是使用一个减少LCD访问次数的高速缓存的情况,LCD刷新并不会有大的延迟。所有那些需要处理的是定义程序或者宏,设置或者读取与LCD连接的硬件端口/缓冲区。这类接口也被用于不同的LCD控制器的不同的驱动程序所支持。特殊方案:没有LCD控制器的LCDLCD可以不需要LCD控制器而进行连接。在这种情况下,LCD数据通常通过控制器经由一个4或8位移位寄存器直接提供。这些特殊的硬件方案有价格便宜的优点,但是使用上的缺点是占用了大部分有效的计算时间。根据不同的CPU,这会占到CPU的开销的20%到几乎100%之间;对于较慢的CPU,它根本是极不合理的。这类接口不需要一个特殊的LCD驱动器,因为µC/GUI简单地将所有显示数据放入LCD高速缓存中。你自己必须写硬件相关部分软件,周期性地将数据从高速缓存的内存传递到你的LCD。对于M16C和M16C/80,传递图像到显示屏中的范例代码可以用“C”和优化的汇编程序实现。第7页µC/GUI中文手册jk线条jk高亮jk线条jk线条jk线条jk线条jk线条jk线条第1章µC/GUI的介绍1.7数据类型因为C语言并不提供与所有平台相吻合的固定长度的数据类型,大多数情况下,µC/GUI使用它自己的数据类型,如下表所示:数据类型定义说明I8signedchar8位有符号值U8unsignedchar16位无符号值I16signedshort16位有符号值U16unsignedshort16位无符号值I32signedlong32位有符号值U32unsignedlong32位无符号值I16Psignedshort16位(或更多)有符号值U16Punsignedshort16位(或更多)无符号值对于大多数16/32位控制器来说,该设置将工作正常。然而,如果你在你的程序的其它部分中有相似的定义,你可能想对它们进行修改或者重新配置。一个推荐的位置是置于配置文件LCDConf.h中。第8页µC/GUI中文手册jk线条jk矩形jk矩形第2章入门指南这一章提供一个在你的目标系统上设置和配置µC/GUI的基本处理过程的概述。同时也包括了一个简单的范例程序。请注意,大多数主题在后面的章节会有更详细的描述。在你开始更复杂的编程之前,你很有必要参阅本手册的其它部分。第1页µC/GUI中文手册jk线条jk线条第2章入门指南2.1推荐的结构使µC/GUI和你的应用文件分离,这是我们推荐的。在工程文件的“root”目录的GUI子目录下保留所有的程序文件(包括头文件),这是一个好的习惯。目录结构应该和下图相似。这种习惯有一个好处,就是很容易升级更新版本的µC/GUI,只需要替换GUI目录就可以。子目录下表显示了GUI所有子目录的内容目录内容Config配置文件GUI/AntiAlias抗锯齿支持*GUI/ConvertMono用于B/W(黑白两色)及灰度显示的色彩转换程序GUI/ConvertColor用于彩色显示的色彩转换的程序GUI/CoreµC/GUI内核文件GUI/Font字体文件GUI/LCDDriverLCD驱动GUI/Mendev存储器件支持*GUI/Touch触摸屏支持*GUI/Widget视窗控件库*GUI/WM视窗管理器*(带“*”标志的为可选项)第2页µC/GUI中文手册jk线条jk线条jk线条jk矩形jk线条jk线条第2章入门指南“Include”目录确认你的Include路径包括有以下目录(包括的先后顺序并不重要):•Config•GUI/Core•GUI/Widget(如果使用视窗控件库)•GUI/WM(如果使用视窗管理器)警告:你必须确认你在每个文件中只使用了一个版本的µC/GUI2.2向目标程序加入µC/GUI你主要是在这两者之间做一个选择,一是将你要在你的工程中使用的源文件包括进来,然后进行编译和连接;或者建立一个库并连接这个库文件。如果你的链接工具支持“智能化”连接(仅仅连接那些使用到的模块而不是那些没有使用到的模块),那么就完全没有必要建立建立一个库,因为只是要求将函数和数据结构进行连接。如果你的工具链接不支持“智能化”连接,建立一个库就很有意义了,否则如果将每样东西都要进行连接的话,程序会变得非常大。对于一些CPU来说,我们能提供有效的范例工程帮助你开始使用。2.3建立一个库从源程序建立一个库是一个简单的流程。第一步是拷贝批处理文件(位于“Sample\Makelib”目录下面)到根目录下。然后,做一些必要的修改。总共有四个批处理文件需要拷贝,如下表描述的那样。主文件“Makelib.bat”在所有的系统中都是一样的,所以无需修改。在你的目标系统上建立一个库,正常情况下你需要对其它三个比较小的文件做一些微小的改动。最后执行“Makelib.bat”文件建立库。批处理文件假定你的GUI和配置子目录已经如前面所推荐的那样建立起来了。文件说明Makelib.bat主批处理文件,不需要修改Prep.bat由Makelib.bat调用,建立用于链接工具的工作环境CC.bat由Makelib.bat调用,对库所用到的文件进行处理,为这些目标文件建立一个列表,该列表在下一步中由lib.bat中的lib.bat由Makelib.bat调用,将列表中的目标文件置入一个库当中建立库的流程如下图所示。Makelib.bat文件首先调用Prep.bat准备用于链接工具的环境。然后调用CC.bat处理库当中所包括的每一个文件,做完这些工作需要一些时间。CC.bat第3页µC/GUI中文手册第2章入门指南将这些目录文件加入一个列表,这个列表是lib.bat要使用的。当所有加入到库当中的文件已经写入列表后,Makelib.bat6调用lib.bat,使用一个库管理工具将列表中的目标文件置入一个活动的库当中。Makelib.batPrep.batCC.bat所有文件已加入库中?Lib.bat否是我们假设一个微软编译器已经安装到它的默认位置。如果所有的批处理文件都拷贝到根目录(GUI的上一级目录),并且不作任何修改,将会产生一个用于µC/GUI仿真的仿真库。无论如何,要建立一个目标库的话,必须要对Prep.bat、CC.bat和lib.bat三个文件进行修改。2.4将µC/GUI的“C”文件加入工程中通常说法,你需要加入µC/GUI的核心“C”文件,LCD驱动,你显示屏所使用的字体文件及其它你定制可选择的模块:•目录GUI\Core、GUI\ConvertColor及GUI\ConvertMono下的所有“C”文件•你的显示屏用到的字体(位于目录GUI\Font下)附加的软件包如果你的显示屏使用附加的可选的模块,你必须也要包括相关的“C”文件第4页µC/GUI中文手册jk线条jk线条第2章入门指南2.5配置µC/GUI配置目录应该包含与你的要求相匹配的配置文件。文件LCDConf.h通常包含所有的需要的定义,使你能够为你的LCD使用µC/GUI,这是开始配置µC/GUI的主要任务。了解更多的细节,请参阅第20章“底层配置”。如果因为你没有选择正确的显示方案或选择了错误的LCD控制器而导致µC/GUI没有正确配置,LCD可能不会显示任何东西,或者显示些不是你所期望的内容。因此,要注意修改你所需要的LCDConf.h。配置宏的类型下面是一些配置宏的类型:二进制开关“B”这个开关的数值是“0”或“1”,“0”表示不激活,而“1”表示激活(除了“0”以外的数值都可以激活,但是使用“1”使配置文件更易于阅读)。这些开关能够启用或禁止某一个功能或行为。开关是配置宏中最简单的格式。数值“N”数值有代码中某些地方使用,以替代数值常量。在LCD配置方案中有一个典型的例子。选择开关“S”选择开关用于从多个选项中选择一项(只能选中一项)。典型的例子是用于所使用的LCD控制器的选择,选择的数值指示调用相应源代码(相应的LCD驱动)产生目标代码。别名“A”一个类似于简单的文本替代这样操作的宏。一个典型例子是定义U8,预处理程序会用“unsignedchar”代替“U8”。函数替换“F”该宏基本被视为一个正常的函数,尽管有某些应用上的限制,宏依旧被放入代码当中,就象文本代换的例子一样。函数替换主要用于给一个高度依赖硬件的模块增加一些特殊的函第5页µC/GUI中文手册jk线条jk线条jk线条jk线条jk线条jk线条第2章入门指南数(例如LCD的访问),这类宏通常使用括弧(与可选择参数一起)来声明。2.6初始化µC/GUI程序GUI_Init()初始化LCD和µC/GUI的内部数据结构,在其它µC/GUI函数运行之前必须被调用。这通过将下面一行放入你的程序序列的开始来做到:GUI_Init();如果忽略了这个调用,整个图形系统将不会得到初始化,从而无法准备下一步的动作。2.7在目标硬件上使用µC/GUI下面所陈述是只是我们使用µC/GUI进行编程的一些基本的步骤要点。这些步骤更详细的解释在以后的章节介绍。第一步:定制µC/GUI通常第一步是通过修改头文件LcdConf.h来定制µC/GUI。你必须定义一些基本数据类型(U8,U16等),及有关显示方案和所使用的LCD控制器的开关配置。第二步:定义访问地址和访问规则对于使用存储器映象的LCD,仅仅需要在LcdConf.h中定义访问地址。对于端口/缓冲的LCD,必须定义接口程序,在Samples\Lcd_x目录下,或是在我们Web站点的下载区的中,有一些所需的接口程序的范例代码可供参考。第三步:编译、连接和测试范例程序µC/GUI带有一些单任务和多任务环境下的范例程序,编译、连接和测试这些范例程序,直到你感觉已经熟悉它们了。第四步:修改范例程序对范例程序进行简单的修改,增加些额外的命令,诸如在显示时显示不同尺寸的文字,显示一条线等等。第6页µC/GUI中文手册jk线条jk线条jk线条jk线条jk线条jk线条jk线条第2章入门指南第五步:多任务应用:适应你的操作系统(如果需要的话)如果多任务允许同时访问显示器,则宏GUI_MAXTASK和GUI_OS与文件GUITask.cg一道开始运行。更详细的内容及范例程序的修改请参考第21章:高层次配置。第六步:使用µC/GUI编写你的应用程序到现在,你应该对如何使用µC/GUI应该有一个清楚的了解。考虑如何去构建你的应用要求的程序,通过调用适当的程序来使用µC/GUI。参考本手册后面相关的章节,这些章节讨论特殊的µC/GUI函数和配置有效的宏。2.8“HelloWorld”范例程序在早些时候,一个“HelloWorld”程序被做为C语言编程的入门程序,因为它本质上是一个能写出的最简单的程序。µC/GUI的“HelloWorld”程序的名称是Hello.c,如下所示。在µC/GUI所带的范例中的它的名称为Basic_HelloWorld.c。该程序的目的是在显示器的左上角写“HelloWorld”,为了能实现这个功能,应用硬件,LCD和GUI必须首先要初始化。µC/GUI的初始化通过在程序开始调用GUI_Init()来实现,就象先前所描述的那样。在本程序中,我们假设应用硬件的初始化已经完成。/*--------------------------------------------------------------------------文件:BASIC_HelloWorld.c目的:绘制“Helloworld”的简单范例--------------------------------------------------------------------------*/#include"GUI.H"/****************************************************************************主函数****************************************************************************/voidmain(void){/*要做的事:确认硬件首先初始化了!*/GUI_Init();GUI_DispString("Helloworld!");while(1);第7页µC/GUI中文手册第2章入门指南}给“HelloWord”程序增加功能我们的小程序能做的工作实在太少,现在我们对它扩展一点功能:在显示“HelloWorld”后,我们希望程序开始计数以估计能够获得多快的输出速度(至LCD)。我们在主程序末尾的仅仅增加一点点代码进行循环,本质上是调用一个显示十进制形态数值的函数。/*--------------------------------------------------------------------------文件:BASIC_HelloWorld1.c目的:绘制“Helloworld”的简单范例--------------------------------------------------------------------------*/#include"GUI.H"/****************************************************************************主函数****************************************************************************/voidmain(void){inti=0;/*要做的事:确认硬件首先初始化了!*/GUI_Init();GUI_DispString("Helloworld!");while(1){GUI_DispDecAt(i++,20,20,4);if(i>9999)i=0;}}第8页µC/GUI中文手册jk线条jk线条jk线条jk线条第3章仿真器µC/GUI的PC仿真器允许你在Windows下编译相同的“C”源程序。PC使用一个本地编译器(一般是微软所提供的)并建立一个用于你自己应用的可执行文件。这样做可能完成:•在你的PC上进行用户接口设计(不需要硬件支持)•调试你的用户接口程序•建立你的应用的演示,可以用于描述用户接口最终的可执行文件能够很容易通过E-Mail传送。第1页µC/GUI中文手册第3章仿真器3.1理解仿真器µC/GUI仿真器使用微软VisualC++(6.0或更高版本)及其所带的集成开发环境(IDE)。你能够在PC屏幕上看到你的LCD仿真效果,一旦正确配置你的LCD后仿真效果能提供与你的LCD在X轴和Y轴上相同的分辨率及同样精确的颜色。仿真的整个图形库API和视窗管理API与你的目标系统是一样的;所有函数运行与在目标硬件上运行高度一致,因为仿真时使用了与目标系统同样的“C”源代码。唯一不同是在软件的底层:LCD驱动。PC仿真使用一个仿真的驱动写入一个位图,以代替实际的LCD驱动。在你的屏幕上显示的位图使用第二个仿真线程。第二个线程在实际应用并不存在,它只是在LCD程序被直接写屏时运行。3.2在评估版µC/GUI中使用仿真器版本µC/GUI评估版包括一个完全的库,允许你评估µC/GUI的所有效特性。同时也包括µC/GUI观察器(用于调试应用程序)及字体转换器和位图转换器的演示版。请记住这些,做为一个评估版本,你不能改变任何配置或者察看源代码,但是你仍然能够熟悉µC/GUI的使用。目录结构评估版仿真器的目录结构如下图所示。第2页µC/GUI中文手册jk线条jk线条jk线条jk线条第3章仿真器目录“Application”包括演示程序的源代码。目录“Exe”包括一个“ready-to-use”演示程序。目录“GUI”包括库文件和库使用的包含文件。目录“Sample”包括仿真范例及其源代码。目录“Simulation”包括仿真所需的文件。目录“Tool”包括µC/GUI观察器,一个演示版的位图转换器和一个演示版的字体转换器。VisualC++工作区上面所示的根目录包括微软VisualC++工作区(Simulation-Trial.dsw)及项目文件(Simulation-Trial.dsp)。双击工作区文件可以打开微软IDE。VisualC++工作区的目录结构如下图所示。编译演示程序位于应用目录下的演示程序源文件是一个“ready-to-go”仿真,意思是你仅仅需要建立和启动它。请注意,如果需要建立可执行文件,你必须先安装微软VisualC++(6.0或以上的版本)。•第一步:双击Simulation-Trial.dsw文件打开VisualC++工作区。•第二步:在菜单中选择“Build/RebuildAll”(或按“F7”键)重建项目。第3页µC/GUI中文手册jk线条jk线条jk线条jk线条jk线条jk线条jk线条jk线条jk线条jk线条第3章仿真器•第三步:在菜单中选择“Build/StartDebug/Go”(或按“F5”键)开始仿真。演示项目开始运行,在任意时候可能通过单击右键并选择“Exit”退出。编译范例程序目录“Sample”包括“ready-to-go”范例程序,可以示范µC/GUI的不同特性及提供它们的典型应用的例子。为了建立这些可执行文件,它们的C源代码必须加入项目中。通过下面的步骤很容易做到:•第一步:双击VisualC++工作区的“Application”文件夹。演示文件会出现在它下面。•第二步:选择“Application”文件夹下的所有文件,按下“Delete”键将它们删除。这些文件并不是真是被删除了,只是从项目中移走。•第三步:现在你有了一个空的“Application”文件夹。在其上面单击右键,选择需加入的文件加入到文件夹,出现一个对话框。•第四步:双击“Sample”文件夹,选择里面的一个范例文件。你的工作区目录应该如下图所示。当然,文件名可以不一样;在这里,很重要的一件事是“Application”文件夹只能包含你所想编译的范例的C文件,而不能是其它种类的文件。•第五步:在菜单下选择“Build/RebuildAll”(或按“F7”键)重建范例文件。•第六步:在菜单中选择“Build/StartDebug/Go”(或按“F5”键)开始仿真。上面所选择范例的仿真结果如下图所示:第4页µC/GUI中文手册jk线条jk线条jk线条第3章仿真器3.3使用µC/GUI源代码的仿真器目录结构仿真器的根目录可以在PC上的任意位置,例如:C:\work\GSCSim。目录结构如下图所示,该目录结构与我们推荐的用于目标应用的目录结构很相似(参阅第2章:“入门指南”以获得更多信息)。子目录GUI包括µC/GUI程序文件,用于目标(交叉)编译器的同名目录中也要有同名的文件。你不应对GUI子目录做任何改变,因为这样会使µC/GUI升级到新的版本变得困难。配置目录包括需要修改的配置文件,以反映你的目标硬件设置(主要是LCD尺寸和能够显示的颜色)。第5页µC/GUI中文手册第3章仿真器VisualC++工作区上面所显示的根目录包括微软VisualC++工作区(Simulation.dsw)和项目文件(Simulation.dsp)。工作区允许你在编译应用程序将其用于目标系统之前进行修改及调试。VisualC++工作区的目录结构与下图所示的相似。在这,GUI文件夹是打开的,显示µC/GUI子目录。请注意,你的GUI目录可能与下图并不完全一样,这取决于你所拥有的µC/GUI的附加特性。文件夹“Core”,“Font”及“LCDDriver”是基本µC/GUI软件包的一部分,总在工作区目录中显示。编译你的应用程序仿真演示包括一个或多个可以修改的C文件(在“Application”目录下),你也可以在项目中增加或删除文件。最典型的是你至少应该把位图修改成为你公司的徽标或所选择的图片。你应该在VisualC++工作区中重建程序以进行测试及调试。一旦你获得一个满意的结果并打算在你的应用中使用该程序,你应该能够在目标系统中编译这些同样的文件,得目标显示上得到同样的结果。使用仿真器的通常的处理步骤如下所述:第6页µC/GUI中文手册jk线条jk线条第3章仿真器•第一步:双击Simulation.dsw文件打开VisualC++工作区。•第二步:在菜单下选择“Build/RebuildAll”(或按“F7”键)编译项目。•第三步:在菜单中选择“Build/StartDebug/Go”(或按“F5”键)开始仿真。•第四步:使用你的徽标或图片代替原有的位图。•第五步:如果有需要,对应用程序进行更大的修改,这通过编辑源代码和增加/删除文件来完成。•第六步:在VisualC++中编译及运行应用程序测试结果,根据你的需要进行继续修改和调试。•第七步:在你的目标系统上编译及运行应用程序。3.4观察器如果你使用仿真器调试你的应用程序,当你对源代码执行单步调试时无法看到LCD输出。观察器可能解决这个问题,它能显示仿真的LCD窗口和色彩窗口。观察器的执行文件是“Tool\µC-GUI-View.exe”。使用仿真器和观察器如果你在调试应用程序之前或正在调试时,想启动观察器,同时使用仿真器及观察器是你的选择。我们建议:•第一步:启动观察器。在仿真开始前,没有LCD或色彩窗口出现。•第二步:打开VisualC++工作区。•第三步:编译和运行应用程序。第7页µC/GUI中文手册jk线条jk线条jk矩形第3章仿真器•第四步:如先前描述的一样调试应用程序。优点是,当你使用单步操作时,能在LCD窗口中显示所有相应绘图操作。观察器窗口默认的位置总是在顶部,你可能通过在菜单中选择“View\Alwaysontop”修改这个行为。3.5设备仿真及其它高级特性警告:设备仿真和以其为基础的其它特性,是高级特性,可以对仿真器源代码提出要求以使其能工作于目标系统。通常这些源代码不随µC/GUI一起提供。请和我们联系得到更多的信息。仿真器能够在你所选择的一张位图中显示仿真的LCD,例如你的目标设备的图片。该位图能够在屏幕上任意拖动,在某些应用中,可以用于仿真整个目标设备的行为。为了仿真设备的外观,需要一幅位图。该位图通常是设备的照片(顶视图),必须命名为Device.bmp。它可以是一个独立文件(在同一目录下作为一个可执行文件),或是做为一个资源包括进应用程序当中,下面一行表示该位图文件包括在资源文件(extension.rc)中:145BITMAPDISCARDABLE"Device.bmp"更多的信息,请参考Win32文档资料。位图的尺寸应该是这样的,位图中LCD区域在屏幕上显示的尺寸应该等于仿真LCD的分辨率。在下面的例子中这是最好的显示效果:设备位图(Device.bmp)带有屏幕上可见的仿真LCD的设备红色区域自动成为透明区。透明区没有必要是矩形;它们可以是任意的形状(甚至可以第8页µC/GUI中文手册jk线条第3章仿真器是你的操作系统所限制的复杂形状,但是一般的就足够了)。亮红色(0xFF0000)是默认的透明区域的颜,主要因为在大多数位图中很少用到这种颜色。如果位图中含有亮红色,你可以在函数SIM_SetTransColor中改变默认的透明色。Hardkey仿真Hardkey也可以作为设备的一部分进行仿真,它可以由鼠标指针选择。意思是能区别在仿真设备中的一个键或一个按钮是否被按下或没有按下。当鼠标指针位于一个Hardkey上方,并且鼠标按键保持按下状态,则该Hardkey被认为是按下。当鼠标按键释放或指针移开Hardkey,表示该Hardkey“没有按下”。在“按下”和“非按下”之间的切换行为也可以在程序SIM_HARDKEY_SETmode中说明。为了仿真Hardkey,你需要第二幅设备位图,除了按键自己(按下状态)以外,都是透明的。该位图也作为目录里的一个独立文件或包括在可执行文件中做为一个资源。文件名需要定为“Device1.bmp”,典型的,下面两行表示两们位图文件包括在资源文件(extension.rc)中:145BITMAPDISCARDABLE"Device.bmp"146BITMAPDISCARDABLE"Device1.bmp"尽管Hardkey可以是任意的形状,但有一点很重要,就是两幅位图尺寸必须是一样的,即在像素上一样,这样在Device1.bmp上的Hardkey就能够正确地覆盖在Device.bmp相应的位置上。下面的例子说明了这种情况:设备位图:Hardkey非按下的状态(Device.bmp)设备Hardkey位图:Hardkey按下的状态(Device1.bmp)第9页µC/GUI中文手册jk线条jk线条第3章仿真器当一个键被鼠标“按下”,hardkey位图(Device1.bmp)的相应部分将覆盖设备位图以显示该键处于其按下状态。键可以周期性的轮询以确定它们的状态(按下/非按下)是否已经改变以及它们是否需要更新。二者选一,当一个hardkey的状态改变时,一个回调函数会被设置以触发一个自带的特殊动作。3.6仿真器API所有仿真器的API函数在设置阶段必须被调用。调用应该从函数SIM_X_Init()内部被完美执行,该程序位于文件SIM_X.c中。下面的例子表示在设置中调用SIM_SetLCDPos():*/#include<windows.h>#include<stdio.h>#include"SIM.h"voidSIM_X_Init(){SIM_SetLCDPos(0,0);//定义LCD在位图中的位置}下表列出了与仿真相关有用的函数,在各自的类型中按字母进行排列。函数的详细描述在后面列出。函数说明设备仿真SIM_SetLCDPos()在目标设备位图中设置仿真LCD的位置SIM_SetTransColor()设置用于透明区域的颜色Hardkey仿真SIM_HARDKEY_GetNum()返回一个有效的Hardkey的号码SIM_HARDKEY_GetState()返回一个指定的Hardkey的状态(0=非按下,1=按下)SIM_HARDKEY_GetCallback()设置当指定Hardkey状态改变时要执行的回调函数SIM_HARDKEY_SetMode()设置一个指定Hardkey的行为(默认=0,不切换)SIM_HARDKEY_SetState()设置一个指定Hardkey的状态SIM_SetLCDPos()描述第10页µC/GUI中文手册jk线条jk线条jk线条jk线条第3章仿真器在目标设备位图中设置仿真LCD的位置。函数原型voidSIM_SetLCDPos(intx,inty);参数含意x仿真LCD左上角(单位:像素)的X轴坐标y仿真LCD左上角(单位:像素)的Y轴坐标附加信息X和Y坐标相对于目标设备位图,因此坐标(0,0)表示位图左上角(原点)而非你的实际LCD。只有仿真屏幕的原点需要指定;你的显示器的分辨率应该已经反映在配置目录下的配置文件中。SIM_SetTransColor()描述设置用于设备或Hardkey位图的透明区域的颜色函数原型I32SIM_SetTransColor(I32Color);参数含意Color颜色的RGB数值附加信息透明色的默认设置为亮红(0xFF0000)。如果你的位图包括有同样色调的红色时,你才需要这个典型的设置。SIM_HARDKEY_GetNum()描述返回一个有效的Hardkey的号码第11页µC/GUI中文手册第3章仿真器函数原型intSIM_HARDKEY_GetNum(void);返回值在位图中找到的有效的Hardkey的号码。附加信息Hardkey的序号遵循阅读顺序(从左到右,从上到下)。因此一个Hardkey最顶端的像素首先被发现,而不管它的水平位置如果。例如,在下面的位图中,Hardkey被标号,而在其它的函数中它们通过KeyIndex参数进行引用:推荐调用该函数对一幅位图是否被完全截入进行校验。SIM_HARDKEY_GetState()描述返回指定的Hardkey的状态函数原型intSIM_HARDKEY_GetState(unsignedintKeyIndex);参数含意KeyIndexHardkey的标签(0=第一个键的标签)第12页µC/GUI中文手册第3章仿真器返回值指定Hardkey的数值:0:非按下1:按下SIM_HARDKEY_SetCallback()描述设置当指定Hardkey状态改变时要执行的回调函数函数原型SIM_HARDKEY_CB*SIM_HARDKEY_SetCallback(unsignedintKeyIndex,SIM_HARDKEY_CB*pfCallback);参数含意KeyIndexHardkey的标签(0=第一个键的标签)pfCallback回调函数的指针返回值先前的回调函数的指针。附加信息回调函数原型必须如下所示:函数原型typedefvoidSIM_HARDKEY_CB(intKeyIndex,intState);参数含意KeyIndexHardkey的标签(0=第一个键的标签)State指定Hardkey的状态(如下所示)参数State允许的数值:0:非按下第13页µC/GUI中文手册第3章仿真器1:按下SIM_HARDKEY_SetMode()描述设置指定Hardkey的行为函数原型intSIM_HARDKEY_SetMode(unsignedintKeyIndex,intMode);参数含意KeyIndexHardkey的标签(0=第一个键的标签)Mode行为模式(如下表所示)参数Mode允许的数值0:正常行为(默认)1:切换行为附加信息正常(默认)Hardkey行为意思指当鼠标指针位于一个键上方,并且鼠标按键保持按下状态,则该键被认为是按下。当鼠标按键释放或指针移开Hardkey,该键被认为是非按下。而切换行为,每一次单击鼠标对一个Hardkey进行一次“按下”或“非按下”状态的切换。这意思是如果你在一个Hardkey上方单击一下鼠标,它变成“按下”,这个状态一直保持到你再次单击鼠标。SIM_HARDKEY_SetState()描述设置指定Hardkey的状态。函数原型intSIM_HARDKEY_SetState(unsignedintKeyIndex,intState);参数含意第14页µC/GUI中文手册第3章仿真器KeyIndexHardkey的标签(0=第一个键的标签)State指定Hardkey的状态(如下所示)参数State允许的数值:0:非按下1:按下附加信息该函数只有在SIM_HARDKEY_SetMode被设为1(切换模式)时才有效。第15页µC/GUI中文手册第4章文本显示使用µC/GUI显示字体是很容易的。仅仅需要很少的的函数知识就能让我们在任何有效的字体当中进行文本书字,然后显示在任何一个位置。我们首先对显示字体进行简短的介绍,然后是分别对所用的函数进行更详细的说明。第1页µC/GUI中文手册jk线条jk线条第4章文本显示4.1基本函数为了在LCD上显示文本,可以简单地调用函数GUI_DispString(),把你所希望显示的文本作为其参数,例如:GUI_DispString("Helloworld!");上面的代码将会在当前文本坐标显示文本“Helloworld!”。然而,正如你所看到的,有很多函数用于显示不同字体的文本或都在不同的坐标显示文本。另外,它不仅能写字符串,而且能写十进制数,十六进制数和二进制数用于显示。即使图形

STM32学uCGUI入门手册.pdf

STM32学uCGUI入门手册.pdf

上传者: 阿璞588
639次下载 0人收藏 暂无简介 简介 2012-05-08 举报

简介:C#入门经典,STM32学uCGUI入门手册

第1章µC/GUI的介绍µC/GUIµC/GUI是一种用于嵌入式应用的图形支持软件。它被设计用于为任何使用一个图形LCD的应用提供一个有效的不依赖于处理器和LCD控制器的图形用户接口。它能工作于单任务或多任务的系统环境下。µC/GUI适用于使用任何LCD控制和CPU的任何尺寸的物理和虚拟显示。它的设计是模块化的,由在不同的模块中的不同的层组成。一个层,称作LCD驱动程序,包含了对LCD的全部访问。µC/GUI适用于所有的CPU,因为它100%由的ANSI的C语言编写的。µC/GUI很适合大多数的使用黑色/白色和彩色LCD的应用程序。它有一个很好的颜色管理器,允许它处理灰阶。µC/GUI也提供一个可扩展的2D图形库和一个视窗管理器,在使用一个最小的RAM时能支持显示窗口。本文档的目的本指南描述如何安装,配置和在嵌入式应用中使用µC/GUI图形用户界面。它也说明了软件的内部结构。假设本指南假定你对C编程语言已经具有一个扎实的认识。如果你觉得你对C语言的认识不是很充分的话,我们推荐该由Kernighan和Richie编写的“C语言编程语言”给你,它描述了程序设计标准,而在新版中,也包含了ANSI的C语言标准。汇编语言编程的知识不需要。第1页µC/GUI中文手册jk线条jk线条第1章µC/GUI的介绍1.1需求在你使用µC/GUI进行软件开发时,并不需要一个目标系统;只需要使用模拟器,大多数软件就能够进行开发。然而,最后的目的通常是能够在一个目标系统上运行该软件。目标系统(硬件)你的目标系统必须:•有一个CPU(8/16/32/64位)•有最少的RAM和ROM•有一个完全的图形LCD(任何类型和任何分辩率)内存需求的变化取决于软件的哪些部分被使用以及你的目标编译程序的效率有多高。所以指定精确值是不可能的,但是下面的数值适合典型系统。小的系统(没有视窗管理器)•RAM:100字节•堆栈:500字节•ROM:10~25KB(取决于使用的功能)大的系统(包括视窗管理器和控件)•RAM:2~6KB(取决于所需窗口的数量)•堆栈:1200字节•ROM:30~60KB(取决于使用的功能)注意,如果你的应用程序使用许多字体的话,ROM的需求将增加。以上所有的数值都是粗略的估计,不能得到保证。开发环境(编译程序)使用什么样的CPU并不重要;仅仅需要一个与ANSI兼容的C编译器。如果你的编辑器有一些限制,请告知我们,我们将通知你在编译软件时是否会带来问题。我们所知道的任何用于16/32/64位CPU或者DSP的编译器都可以使用;大多数的8位编译器也可以使用。一个C++编译器并不需要,不过可以使用。因此,如果想要的话,应用程序也可以用C++第2页µC/GUI中文手册第1章µC/GUI的介绍语言来编制。1.2µC/GUI的特点µC/GUI被设计用于给使用一个图形LCD的任何应用程序提供一个高效率的,与处理器和LCD控制器无关的图形用户界面。它适合于单一任务和多任务环境,专用的操作系统或者任何商业的实时操作系统(RTOS)。µC/GUI以C源代码形式提供。它可以适用于任何尺寸的物理和虚拟显示,任何LCD控制器和CPU。其特点包括下列这些:一般特点•任何8/16/32位CPU;只需要一个与ANSI兼容的C编译器。•任何控制器支持(如果有合适的驱动程序)的任何(单色的,灰度级或者彩色)LCD。•在较小显示屏上,可以不要LCD控制器工作。•使用配置宏可以支持任何接口。•显示屏大小可配置。•字符和位图可能是写在LCD上的任一点,而不仅仅局限于偶数的字节的地址。•程序对大小和速度都进行了最优化。•允许编译时的切换以获得不同的优化。•对于较慢的LCD控制器,LCD能够被存储到内存当中,减少访问的次数使其最小,从而得到非常高的速度。•清晰的结构。•支持虚拟显示;虚拟显示能够比实际的显示表现更大尺寸的内容。图库•支持不同颜色深度的位图。•有效的位图转换器。•绝对没有使用浮点运算。•快速线/点绘制(没有使用浮点运算)。•非常快的圆/多边形的绘制。•不同的绘画模式。字体•为基本软件提供了不同种类的字体:4*6,6*8,6*9,8*8,8*9,8*16,8*17,8*18,24*32,以及8,10,13,16等几种高度(以象素为单位)的均衡字体。更多的信息,参见第25章:“标准字体”。第3页µC/GUI中文手册jk线条jk线条jk线条jk线条jk线条jk线条第1章µC/GUI的介绍•可以定义和简便地链接新的字体。•只有用于应用程序的字体才实际上与执行结果链接,这样保证了最低的ROM占用。•字体可以分别在X轴和Y轴方向上充分地缩放。•提供有效的字体转换器,任何在你的主系统(即MicrosoftWindows)上的有效字体都可以转换。字符串/数值输出程序•程序支持任何字体的十进制,二进制,十六进制的数值显示。•程序支持任何字体的十进制,二进制,十六进制的数值编辑。视窗管理器(WM)•完全的窗口管理器包括剪切在内。一个窗口的外部区域的改写是不可能的。•窗口能够移动和缩放。•支持回调函数(可选择用法)。•WM使用极小的RAM(大约每个窗口20字节)。可选择用于PC外观的控件•控件(窗口对象)有效。它们一般自动运行,并且易于使用。触摸屏和鼠标支持•对于比如按钮控件之类的窗口对象,µC/GUI提供触摸屏和鼠标支持。PC工具•模拟器及观察器。•位图转换器。•字体转换器。范例和演示关于µC/GUI能做什么,为了给你一个更好的概念,我们准备有不同的演示作为可运行的仿真程序,在目录sample\EXE下。范例程序的源代码位于Sample目录。文件夹Sample\GUIDemo包括一个展示大部分µC/GUI特点的应用程序。第4页µC/GUI中文手册jk线条jk线条jk线条第1章µC/GUI的介绍1.3估价板一个完全的评估板包括一个带有LCD的演示板,一个C语言编译器和一个有效的范例工程。它已经设计好,主要测试和验证µC/GUI,并且它可用于熟悉这个软件。评估板评估板包括MitsubishiM30803CPU和SED13705LCD控制器(包括原理图和技术资料)。LCD(320240像素)或者单色的LCD,1/4VGA彩色显示LCD或者TFT。更详细的资料,请访问我们的网站:www.micrium.com。1.4如何使用本手册该手册说明了如何安装,配置和使用µC/GUI。它描述了软件的内部结构和µC/GUI提供的所有的功能(应用程序接口,或者API)。在实际上使用µC/GUI之前,你应该阅读或者至少浏览本手册,对该软件做到耳濡目染。推荐下列步骤:•拷贝µC/GUI文件到你的电脑。•仔细研究第2章:“入门指南”。•使用模拟器多熟悉一理这个软件能作什么(参考第3章:“仿真器”)。•使用本手册其余部分的参考资料扩展你的程序。第5页µC/GUI中文手册jk线条jk线条第1章µC/GUI的介绍排版上的语法约定本手册使用下列印刷惯例:类型用于Body正文文字。Keyword那些你在命令-提示中输入的文字,或者那些能在显示屏上看得见的文字(即系统函数,文件或者路径名)。ParameterAPI函数中的参数。Sample在程序范例中的范例代码。NewSample那些已经被加到一个已存在有程序范例中的范例代码。1.5屏幕和坐标屏幕由能够被单独控制的许多点组成。这些被称作像素。大部分µC/GUI在它的API中向用户程序提供的文本和绘图函数能够在任何指定像素上写或绘制。水平刻度被称作X轴,而垂直刻度被称作Y轴。一个二维坐标用X轴和Y轴坐标表示,即值(X,Y)。在程序中需要用到X和Y坐标时,X坐标总在前面。显示屏(或者一个窗口)的左上角为一默认的坐标(0,0)。正的X值方向被总是向右;正的Y值方向总是向下。上图说明该坐标系和X轴和Y轴的方向。所有传递到一个API函数的坐标总是以像素为单位所指定。1.6如何连接LCD到微控制器µC/GUI处理所有的LCD访问。事实上任何LCD控制器都能够被支持,不取决于它是如何访问的。至于细节,请参阅第20章:“低层配置”。此外,如果你的LCD控制器不被支持的话,请与我们保持联系。我们目前为全部有销售LCD控制器编写驱动程序,对于你打算使用第6页µC/GUI中文手册jk线条jk线条jk线条jk线条第1章µC/GUI的介绍的LCD控制器已经有一个经过验证的驱动程序提供。在你的应用程序中写这样的用于访问LCD的程序(或者宏)通常非常简单。如果你的目标硬件有需要的话,Micrium公司可以提供定制的服务。LCD如何与系统连接并不真的重要,只要它通过软件以某种方式达到,可能是按多种方式完成的。大多数这些接口通过一个提供源代码方式的驱动程序来支持。这些驱动程序通常不需要修改,但是用于你的硬件,要通过修改文件LCDConf.h进行配置。有关根据需要如何定制一个驱动程序到你的硬件在第22章:“LCD驱动程序”中说明。最通用的访问LCD的方式如下所描述。如果你只是想领会如何使用µC/GUI,你可以跳过本节。带有存储映像LCD控制器的LCDLCD控制器直接连接到系统的数据总线,意思是能够如同访问一个RAM一样访问控制器。这是一个很有效的访问LCD控制器方法,最值得推荐。LCD地址被定义为段LCDSEG,为了能访问该LCD,连接程序/定位器只需要告知这些段位于什么地方。该位置必须与物理地址空间中访问地址相吻合。驱动程序对于这类接口是有效的,并且能用于不同的LCD控制器。带有LCD控制器的LCD连接到端口/缓冲区对于在快速处理器上使用的较慢的LCD控制器,端口-连线的使用可能是唯一的方案。这个访问LCD的方法有稍微比直接总线接口慢一些的缺点,但是,特别是使用一个减少LCD访问次数的高速缓存的情况,LCD刷新并不会有大的延迟。所有那些需要处理的是定义程序或者宏,设置或者读取与LCD连接的硬件端口/缓冲区。这类接口也被用于不同的LCD控制器的不同的驱动程序所支持。特殊方案:没有LCD控制器的LCDLCD可以不需要LCD控制器而进行连接。在这种情况下,LCD数据通常通过控制器经由一个4或8位移位寄存器直接提供。这些特殊的硬件方案有价格便宜的优点,但是使用上的缺点是占用了大部分有效的计算时间。根据不同的CPU,这会占到CPU的开销的20%到几乎100%之间;对于较慢的CPU,它根本是极不合理的。这类接口不需要一个特殊的LCD驱动器,因为µC/GUI简单地将所有显示数据放入LCD高速缓存中。你自己必须写硬件相关部分软件,周期性地将数据从高速缓存的内存传递到你的LCD。对于M16C和M16C/80,传递图像到显示屏中的范例代码可以用“C”和优化的汇编程序实现。第7页µC/GUI中文手册jk线条jk高亮jk线条jk线条jk线条jk线条jk线条jk线条第1章µC/GUI的介绍1.7数据类型因为C语言并不提供与所有平台相吻合的固定长度的数据类型,大多数情况下,µC/GUI使用它自己的数据类型,如下表所示:数据类型定义说明I8signedchar8位有符号值U8unsignedchar16位无符号值I16signedshort16位有符号值U16unsignedshort16位无符号值I32signedlong32位有符号值U32unsignedlong32位无符号值I16Psignedshort16位(或更多)有符号值U16Punsignedshort16位(或更多)无符号值对于大多数16/32位控制器来说,该设置将工作正常。然而,如果你在你的程序的其它部分中有相似的定义,你可能想对它们进行修改或者重新配置。一个推荐的位置是置于配置文件LCDConf.h中。第8页µC/GUI中文手册jk线条jk矩形jk矩形第2章入门指南这一章提供一个在你的目标系统上设置和配置µC/GUI的基本处理过程的概述。同时也包括了一个简单的范例程序。请注意,大多数主题在后面的章节会有更详细的描述。在你开始更复杂的编程之前,你很有必要参阅本手册的其它部分。第1页µC/GUI中文手册jk线条jk线条第2章入门指南2.1推荐的结构使µC/GUI和你的应用文件分离,这是我们推荐的。在工程文件的“root”目录的GUI子目录下保留所有的程序文件(包括头文件),这是一个好的习惯。目录结构应该和下图相似。这种习惯有一个好处,就是很容易升级更新版本的µC/GUI,只需要替换GUI目录就可以。子目录下表显示了GUI所有子目录的内容目录内容Config配置文件GUI/AntiAlias抗锯齿支持*GUI/ConvertMono用于B/W(黑白两色)及灰度显示的色彩转换程序GUI/ConvertColor用于彩色显示的色彩转换的程序GUI/CoreµC/GUI内核文件GUI/Font字体文件GUI/LCDDriverLCD驱动GUI/Mendev存储器件支持*GUI/Touch触摸屏支持*GUI/Widget视窗控件库*GUI/WM视窗管理器*(带“*”标志的为可选项)第2页µC/GUI中文手册jk线条jk线条jk线条jk矩形jk线条jk线条第2章入门指南“Include”目录确认你的Include路径包括有以下目录(包括的先后顺序并不重要):•Config•GUI/Core•GUI/Widget(如果使用视窗控件库)•GUI/WM(如果使用视窗管理器)警告:你必须确认你在每个文件中只使用了一个版本的µC/GUI2.2向目标程序加入µC/GUI你主要是在这两者之间做一个选择,一是将你要在你的工程中使用的源文件包括进来,然后进行编译和连接;或者建立一个库并连接这个库文件。如果你的链接工具支持“智能化”连接(仅仅连接那些使用到的模块而不是那些没有使用到的模块),那么就完全没有必要建立建立一个库,因为只是要求将函数和数据结构进行连接。如果你的工具链接不支持“智能化”连接,建立一个库就很有意义了,否则如果将每样东西都要进行连接的话,程序会变得非常大。对于一些CPU来说,我们能提供有效的范例工程帮助你开始使用。2.3建立一个库从源程序建立一个库是一个简单的流程。第一步是拷贝批处理文件(位于“Sample\Makelib”目录下面)到根目录下。然后,做一些必要的修改。总共有四个批处理文件需要拷贝,如下表描述的那样。主文件“Makelib.bat”在所有的系统中都是一样的,所以无需修改。在你的目标系统上建立一个库,正常情况下你需要对其它三个比较小的文件做一些微小的改动。最后执行“Makelib.bat”文件建立库。批处理文件假定你的GUI和配置子目录已经如前面所推荐的那样建立起来了。文件说明Makelib.bat主批处理文件,不需要修改Prep.bat由Makelib.bat调用,建立用于链接工具的工作环境CC.bat由Makelib.bat调用,对库所用到的文件进行处理,为这些目标文件建立一个列表,该列表在下一步中由lib.bat中的lib.bat由Makelib.bat调用,将列表中的目标文件置入一个库当中建立库的流程如下图所示。Makelib.bat文件首先调用Prep.bat准备用于链接工具的环境。然后调用CC.bat处理库当中所包括的每一个文件,做完这些工作需要一些时间。CC.bat第3页µC/GUI中文手册第2章入门指南将这些目录文件加入一个列表,这个列表是lib.bat要使用的。当所有加入到库当中的文件已经写入列表后,Makelib.bat6调用lib.bat,使用一个库管理工具将列表中的目标文件置入一个活动的库当中。Makelib.batPrep.batCC.bat所有文件已加入库中?Lib.bat否是我们假设一个微软编译器已经安装到它的默认位置。如果所有的批处理文件都拷贝到根目录(GUI的上一级目录),并且不作任何修改,将会产生一个用于µC/GUI仿真的仿真库。无论如何,要建立一个目标库的话,必须要对Prep.bat、CC.bat和lib.bat三个文件进行修改。2.4将µC/GUI的“C”文件加入工程中通常说法,你需要加入µC/GUI的核心“C”文件,LCD驱动,你显示屏所使用的字体文件及其它你定制可选择的模块:•目录GUI\Core、GUI\ConvertColor及GUI\ConvertMono下的所有“C”文件•你的显示屏用到的字体(位于目录GUI\Font下)附加的软件包如果你的显示屏使用附加的可选的模块,你必须也要包括相关的“C”文件第4页µC/GUI中文手册jk线条jk线条第2章入门指南2.5配置µC/GUI配置目录应该包含与你的要求相匹配的配置文件。文件LCDConf.h通常包含所有的需要的定义,使你能够为你的LCD使用µC/GUI,这是开始配置µC/GUI的主要任务。了解更多的细节,请参阅第20章“底层配置”。如果因为你没有选择正确的显示方案或选择了错误的LCD控制器而导致µC/GUI没有正确配置,LCD可能不会显示任何东西,或者显示些不是你所期望的内容。因此,要注意修改你所需要的LCDConf.h。配置宏的类型下面是一些配置宏的类型:二进制开关“B”这个开关的数值是“0”或“1”,“0”表示不激活,而“1”表示激活(除了“0”以外的数值都可以激活,但是使用“1”使配置文件更易于阅读)。这些开关能够启用或禁止某一个功能或行为。开关是配置宏中最简单的格式。数值“N”数值有代码中某些地方使用,以替代数值常量。在LCD配置方案中有一个典型的例子。选择开关“S”选择开关用于从多个选项中选择一项(只能选中一项)。典型的例子是用于所使用的LCD控制器的选择,选择的数值指示调用相应源代码(相应的LCD驱动)产生目标代码。别名“A”一个类似于简单的文本替代这样操作的宏。一个典型例子是定义U8,预处理程序会用“unsignedchar”代替“U8”。函数替换“F”该宏基本被视为一个正常的函数,尽管有某些应用上的限制,宏依旧被放入代码当中,就象文本代换的例子一样。函数替换主要用于给一个高度依赖硬件的模块增加一些特殊的函第5页µC/GUI中文手册jk线条jk线条jk线条jk线条jk线条jk线条第2章入门指南数(例如LCD的访问),这类宏通常使用括弧(与可选择参数一起)来声明。2.6初始化µC/GUI程序GUI_Init()初始化LCD和µC/GUI的内部数据结构,在其它µC/GUI函数运行之前必须被调用。这通过将下面一行放入你的程序序列的开始来做到:GUI_Init();如果忽略了这个调用,整个图形系统将不会得到初始化,从而无法准备下一步的动作。2.7在目标硬件上使用µC/GUI下面所陈述是只是我们使用µC/GUI进行编程的一些基本的步骤要点。这些步骤更详细的解释在以后的章节介绍。第一步:定制µC/GUI通常第一步是通过修改头文件LcdConf.h来定制µC/GUI。你必须定义一些基本数据类型(U8,U16等),及有关显示方案和所使用的LCD控制器的开关配置。第二步:定义访问地址和访问规则对于使用存储器映象的LCD,仅仅需要在LcdConf.h中定义访问地址。对于端口/缓冲的LCD,必须定义接口程序,在Samples\Lcd_x目录下,或是在我们Web站点的下载区的中,有一些所需的接口程序的范例代码可供参考。第三步:编译、连接和测试范例程序µC/GUI带有一些单任务和多任务环境下的范例程序,编译、连接和测试这些范例程序,直到你感觉已经熟悉它们了。第四步:修改范例程序对范例程序进行简单的修改,增加些额外的命令,诸如在显示时显示不同尺寸的文字,显示一条线等等。第6页µC/GUI中文手册jk线条jk线条jk线条jk线条jk线条jk线条jk线条第2章入门指南第五步:多任务应用:适应你的操作系统(如果需要的话)如果多任务允许同时访问显示器,则宏GUI_MAXTASK和GUI_OS与文件GUITask.cg一道开始运行。更详细的内容及范例程序的修改请参考第21章:高层次配置。第六步:使用µC/GUI编写你的应用程序到现在,你应该对如何使用µC/GUI应该有一个清楚的了解。考虑如何去构建你的应用要求的程序,通过调用适当的程序来使用µC/GUI。参考本手册后面相关的章节,这些章节讨论特殊的µC/GUI函数和配置有效的宏。2.8“HelloWorld”范例程序在早些时候,一个“HelloWorld”程序被做为C语言编程的入门程序,因为它本质上是一个能写出的最简单的程序。µC/GUI的“HelloWorld”程序的名称是Hello.c,如下所示。在µC/GUI所带的范例中的它的名称为Basic_HelloWorld.c。该程序的目的是在显示器的左上角写“HelloWorld”,为了能实现这个功能,应用硬件,LCD和GUI必须首先要初始化。µC/GUI的初始化通过在程序开始调用GUI_Init()来实现,就象先前所描述的那样。在本程序中,我们假设应用硬件的初始化已经完成。/*--------------------------------------------------------------------------文件:BASIC_HelloWorld.c目的:绘制“Helloworld”的简单范例--------------------------------------------------------------------------*/#include"GUI.H"/****************************************************************************主函数****************************************************************************/voidmain(void){/*要做的事:确认硬件首先初始化了!*/GUI_Init();GUI_DispString("Helloworld!");while(1);第7页µC/GUI中文手册第2章入门指南}给“HelloWord”程序增加功能我们的小程序能做的工作实在太少,现在我们对它扩展一点功能:在显示“HelloWorld”后,我们希望程序开始计数以估计能够获得多快的输出速度(至LCD)。我们在主程序末尾的仅仅增加一点点代码进行循环,本质上是调用一个显示十进制形态数值的函数。/*--------------------------------------------------------------------------文件:BASIC_HelloWorld1.c目的:绘制“Helloworld”的简单范例--------------------------------------------------------------------------*/#include"GUI.H"/****************************************************************************主函数****************************************************************************/voidmain(void){inti=0;/*要做的事:确认硬件首先初始化了!*/GUI_Init();GUI_DispString("Helloworld!");while(1){GUI_DispDecAt(i++,20,20,4);if(i>9999)i=0;}}第8页µC/GUI中文手册jk线条jk线条jk线条jk线条第3章仿真器µC/GUI的PC仿真器允许你在Windows下编译相同的“C”源程序。PC使用一个本地编译器(一般是微软所提供的)并建立一个用于你自己应用的可执行文件。这样做可能完成:•在你的PC上进行用户接口设计(不需要硬件支持)•调试你的用户接口程序•建立你的应用的演示,可以用于描述用户接口最终的可执行文件能够很容易通过E-Mail传送。第1页µC/GUI中文手册第3章仿真器3.1理解仿真器µC/GUI仿真器使用微软VisualC++(6.0或更高版本)及其所带的集成开发环境(IDE)。你能够在PC屏幕上看到你的LCD仿真效果,一旦正确配置你的LCD后仿真效果能提供与你的LCD在X轴和Y轴上相同的分辨率及同样精确的颜色。仿真的整个图形库API和视窗管理API与你的目标系统是一样的;所有函数运行与在目标硬件上运行高度一致,因为仿真时使用了与目标系统同样的“C”源代码。唯一不同是在软件的底层:LCD驱动。PC仿真使用一个仿真的驱动写入一个位图,以代替实际的LCD驱动。在你的屏幕上显示的位图使用第二个仿真线程。第二个线程在实际应用并不存在,它只是在LCD程序被直接写屏时运行。3.2在评估版µC/GUI中使用仿真器版本µC/GUI评估版包括一个完全的库,允许你评估µC/GUI的所有效特性。同时也包括µC/GUI观察器(用于调试应用程序)及字体转换器和位图转换器的演示版。请记住这些,做为一个评估版本,你不能改变任何配置或者察看源代码,但是你仍然能够熟悉µC/GUI的使用。目录结构评估版仿真器的目录结构如下图所示。第2页µC/GUI中文手册jk线条jk线条jk线条jk线条第3章仿真器目录“Application”包括演示程序的源代码。目录“Exe”包括一个“ready-to-use”演示程序。目录“GUI”包括库文件和库使用的包含文件。目录“Sample”包括仿真范例及其源代码。目录“Simulation”包括仿真所需的文件。目录“Tool”包括µC/GUI观察器,一个演示版的位图转换器和一个演示版的字体转换器。VisualC++工作区上面所示的根目录包括微软VisualC++工作区(Simulation-Trial.dsw)及项目文件(Simulation-Trial.dsp)。双击工作区文件可以打开微软IDE。VisualC++工作区的目录结构如下图所示。编译演示程序位于应用目录下的演示程序源文件是一个“ready-to-go”仿真,意思是你仅仅需要建立和启动它。请注意,如果需要建立可执行文件,你必须先安装微软VisualC++(6.0或以上的版本)。•第一步:双击Simulation-Trial.dsw文件打开VisualC++工作区。•第二步:在菜单中选择“Build/RebuildAll”(或按“F7”键)重建项目。第3页µC/GUI中文手册jk线条jk线条jk线条jk线条jk线条jk线条jk线条jk线条jk线条jk线条第3章仿真器•第三步:在菜单中选择“Build/StartDebug/Go”(或按“F5”键)开始仿真。演示项目开始运行,在任意时候可能通过单击右键并选择“Exit”退出。编译范例程序目录“Sample”包括“ready-to-go”范例程序,可以示范µC/GUI的不同特性及提供它们的典型应用的例子。为了建立这些可执行文件,它们的C源代码必须加入项目中。通过下面的步骤很容易做到:•第一步:双击VisualC++工作区的“Application”文件夹。演示文件会出现在它下面。•第二步:选择“Application”文件夹下的所有文件,按下“Delete”键将它们删除。这些文件并不是真是被删除了,只是从项目中移走。•第三步:现在你有了一个空的“Application”文件夹。在其上面单击右键,选择需加入的文件加入到文件夹,出现一个对话框。•第四步:双击“Sample”文件夹,选择里面的一个范例文件。你的工作区目录应该如下图所示。当然,文件名可以不一样;在这里,很重要的一件事是“Application”文件夹只能包含你所想编译的范例的C文件,而不能是其它种类的文件。•第五步:在菜单下选择“Build/RebuildAll”(或按“F7”键)重建范例文件。•第六步:在菜单中选择“Build/StartDebug/Go”(或按“F5”键)开始仿真。上面所选择范例的仿真结果如下图所示:第4页µC/GUI中文手册jk线条jk线条jk线条第3章仿真器3.3使用µC/GUI源代码的仿真器目录结构仿真器的根目录可以在PC上的任意位置,例如:C:\work\GSCSim。目录结构如下图所示,该目录结构与我们推荐的用于目标应用的目录结构很相似(参阅第2章:“入门指南”以获得更多信息)。子目录GUI包括µC/GUI程序文件,用于目标(交叉)编译器的同名目录中也要有同名的文件。你不应对GUI子目录做任何改变,因为这样会使µC/GUI升级到新的版本变得困难。配置目录包括需要修改的配置文件,以反映你的目标硬件设置(主要是LCD尺寸和能够显示的颜色)。第5页µC/GUI中文手册第3章仿真器VisualC++工作区上面所显示的根目录包括微软VisualC++工作区(Simulation.dsw)和项目文件(Simulation.dsp)。工作区允许你在编译应用程序将其用于目标系统之前进行修改及调试。VisualC++工作区的目录结构与下图所示的相似。在这,GUI文件夹是打开的,显示µC/GUI子目录。请注意,你的GUI目录可能与下图并不完全一样,这取决于你所拥有的µC/GUI的附加特性。文件夹“Core”,“Font”及“LCDDriver”是基本µC/GUI软件包的一部分,总在工作区目录中显示。编译你的应用程序仿真演示包括一个或多个可以修改的C文件(在“Application”目录下),你也可以在项目中增加或删除文件。最典型的是你至少应该把位图修改成为你公司的徽标或所选择的图片。你应该在VisualC++工作区中重建程序以进行测试及调试。一旦你获得一个满意的结果并打算在你的应用中使用该程序,你应该能够在目标系统中编译这些同样的文件,得目标显示上得到同样的结果。使用仿真器的通常的处理步骤如下所述:第6页µC/GUI中文手册jk线条jk线条第3章仿真器•第一步:双击Simulation.dsw文件打开VisualC++工作区。•第二步:在菜单下选择“Build/RebuildAll”(或按“F7”键)编译项目。•第三步:在菜单中选择“Build/StartDebug/Go”(或按“F5”键)开始仿真。•第四步:使用你的徽标或图片代替原有的位图。•第五步:如果有需要,对应用程序进行更大的修改,这通过编辑源代码和增加/删除文件来完成。•第六步:在VisualC++中编译及运行应用程序测试结果,根据你的需要进行继续修改和调试。•第七步:在你的目标系统上编译及运行应用程序。3.4观察器如果你使用仿真器调试你的应用程序,当你对源代码执行单步调试时无法看到LCD输出。观察器可能解决这个问题,它能显示仿真的LCD窗口和色彩窗口。观察器的执行文件是“Tool\µC-GUI-View.exe”。使用仿真器和观察器如果你在调试应用程序之前或正在调试时,想启动观察器,同时使用仿真器及观察器是你的选择。我们建议:•第一步:启动观察器。在仿真开始前,没有LCD或色彩窗口出现。•第二步:打开VisualC++工作区。•第三步:编译和运行应用程序。第7页µC/GUI中文手册jk线条jk线条jk矩形第3章仿真器•第四步:如先前描述的一样调试应用程序。优点是,当你使用单步操作时,能在LCD窗口中显示所有相应绘图操作。观察器窗口默认的位置总是在顶部,你可能通过在菜单中选择“View\Alwaysontop”修改这个行为。3.5设备仿真及其它高级特性警告:设备仿真和以其为基础的其它特性,是高级特性,可以对仿真器源代码提出要求以使其能工作于目标系统。通常这些源代码不随µC/GUI一起提供。请和我们联系得到更多的信息。仿真器能够在你所选择的一张位图中显示仿真的LCD,例如你的目标设备的图片。该位图能够在屏幕上任意拖动,在某些应用中,可以用于仿真整个目标设备的行为。为了仿真设备的外观,需要一幅位图。该位图通常是设备的照片(顶视图),必须命名为Device.bmp。它可以是一个独立文件(在同一目录下作为一个可执行文件),或是做为一个资源包括进应用程序当中,下面一行表示该位图文件包括在资源文件(extension.rc)中:145BITMAPDISCARDABLE"Device.bmp"更多的信息,请参考Win32文档资料。位图的尺寸应该是这样的,位图中LCD区域在屏幕上显示的尺寸应该等于仿真LCD的分辨率。在下面的例子中这是最好的显示效果:设备位图(Device.bmp)带有屏幕上可见的仿真LCD的设备红色区域自动成为透明区。透明区没有必要是矩形;它们可以是任意的形状(甚至可以第8页µC/GUI中文手册jk线条第3章仿真器是你的操作系统所限制的复杂形状,但是一般的就足够了)。亮红色(0xFF0000)是默认的透明区域的颜,主要因为在大多数位图中很少用到这种颜色。如果位图中含有亮红色,你可以在函数SIM_SetTransColor中改变默认的透明色。Hardkey仿真Hardkey也可以作为设备的一部分进行仿真,它可以由鼠标指针选择。意思是能区别在仿真设备中的一个键或一个按钮是否被按下或没有按下。当鼠标指针位于一个Hardkey上方,并且鼠标按键保持按下状态,则该Hardkey被认为是按下。当鼠标按键释放或指针移开Hardkey,表示该Hardkey“没有按下”。在“按下”和“非按下”之间的切换行为也可以在程序SIM_HARDKEY_SETmode中说明。为了仿真Hardkey,你需要第二幅设备位图,除了按键自己(按下状态)以外,都是透明的。该位图也作为目录里的一个独立文件或包括在可执行文件中做为一个资源。文件名需要定为“Device1.bmp”,典型的,下面两行表示两们位图文件包括在资源文件(extension.rc)中:145BITMAPDISCARDABLE"Device.bmp"146BITMAPDISCARDABLE"Device1.bmp"尽管Hardkey可以是任意的形状,但有一点很重要,就是两幅位图尺寸必须是一样的,即在像素上一样,这样在Device1.bmp上的Hardkey就能够正确地覆盖在Device.bmp相应的位置上。下面的例子说明了这种情况:设备位图:Hardkey非按下的状态(Device.bmp)设备Hardkey位图:Hardkey按下的状态(Device1.bmp)第9页µC/GUI中文手册jk线条jk线条第3章仿真器当一个键被鼠标“按下”,hardkey位图(Device1.bmp)的相应部分将覆盖设备位图以显示该键处于其按下状态。键可以周期性的轮询以确定它们的状态(按下/非按下)是否已经改变以及它们是否需要更新。二者选一,当一个hardkey的状态改变时,一个回调函数会被设置以触发一个自带的特殊动作。3.6仿真器API所有仿真器的API函数在设置阶段必须被调用。调用应该从函数SIM_X_Init()内部被完美执行,该程序位于文件SIM_X.c中。下面的例子表示在设置中调用SIM_SetLCDPos():*/#include<windows.h>#include<stdio.h>#include"SIM.h"voidSIM_X_Init(){SIM_SetLCDPos(0,0);//定义LCD在位图中的位置}下表列出了与仿真相关有用的函数,在各自的类型中按字母进行排列。函数的详细描述在后面列出。函数说明设备仿真SIM_SetLCDPos()在目标设备位图中设置仿真LCD的位置SIM_SetTransColor()设置用于透明区域的颜色Hardkey仿真SIM_HARDKEY_GetNum()返回一个有效的Hardkey的号码SIM_HARDKEY_GetState()返回一个指定的Hardkey的状态(0=非按下,1=按下)SIM_HARDKEY_GetCallback()设置当指定Hardkey状态改变时要执行的回调函数SIM_HARDKEY_SetMode()设置一个指定Hardkey的行为(默认=0,不切换)SIM_HARDKEY_SetState()设置一个指定Hardkey的状态SIM_SetLCDPos()描述第10页µC/GUI中文手册jk线条jk线条jk线条jk线条第3章仿真器在目标设备位图中设置仿真LCD的位置。函数原型voidSIM_SetLCDPos(intx,inty);参数含意x仿真LCD左上角(单位:像素)的X轴坐标y仿真LCD左上角(单位:像素)的Y轴坐标附加信息X和Y坐标相对于目标设备位图,因此坐标(0,0)表示位图左上角(原点)而非你的实际LCD。只有仿真屏幕的原点需要指定;你的显示器的分辨率应该已经反映在配置目录下的配置文件中。SIM_SetTransColor()描述设置用于设备或Hardkey位图的透明区域的颜色函数原型I32SIM_SetTransColor(I32Color);参数含意Color颜色的RGB数值附加信息透明色的默认设置为亮红(0xFF0000)。如果你的位图包括有同样色调的红色时,你才需要这个典型的设置。SIM_HARDKEY_GetNum()描述返回一个有效的Hardkey的号码第11页µC/GUI中文手册第3章仿真器函数原型intSIM_HARDKEY_GetNum(void);返回值在位图中找到的有效的Hardkey的号码。附加信息Hardkey的序号遵循阅读顺序(从左到右,从上到下)。因此一个Hardkey最顶端的像素首先被发现,而不管它的水平位置如果。例如,在下面的位图中,Hardkey被标号,而在其它的函数中它们通过KeyIndex参数进行引用:推荐调用该函数对一幅位图是否被完全截入进行校验。SIM_HARDKEY_GetState()描述返回指定的Hardkey的状态函数原型intSIM_HARDKEY_GetState(unsignedintKeyIndex);参数含意KeyIndexHardkey的标签(0=第一个键的标签)第12页µC/GUI中文手册第3章仿真器返回值指定Hardkey的数值:0:非按下1:按下SIM_HARDKEY_SetCallback()描述设置当指定Hardkey状态改变时要执行的回调函数函数原型SIM_HARDKEY_CB*SIM_HARDKEY_SetCallback(unsignedintKeyIndex,SIM_HARDKEY_CB*pfCallback);参数含意KeyIndexHardkey的标签(0=第一个键的标签)pfCallback回调函数的指针返回值先前的回调函数的指针。附加信息回调函数原型必须如下所示:函数原型typedefvoidSIM_HARDKEY_CB(intKeyIndex,intState);参数含意KeyIndexHardkey的标签(0=第一个键的标签)State指定Hardkey的状态(如下所示)参数State允许的数值:0:非按下第13页µC/GUI中文手册第3章仿真器1:按下SIM_HARDKEY_SetMode()描述设置指定Hardkey的行为函数原型intSIM_HARDKEY_SetMode(unsignedintKeyIndex,intMode);参数含意KeyIndexHardkey的标签(0=第一个键的标签)Mode行为模式(如下表所示)参数Mode允许的数值0:正常行为(默认)1:切换行为附加信息正常(默认)Hardkey行为意思指当鼠标指针位于一个键上方,并且鼠标按键保持按下状态,则该键被认为是按下。当鼠标按键释放或指针移开Hardkey,该键被认为是非按下。而切换行为,每一次单击鼠标对一个Hardkey进行一次“按下”或“非按下”状态的切换。这意思是如果你在一个Hardkey上方单击一下鼠标,它变成“按下”,这个状态一直保持到你再次单击鼠标。SIM_HARDKEY_SetState()描述设置指定Hardkey的状态。函数原型intSIM_HARDKEY_SetState(unsignedintKeyIndex,intState);参数含意第14页µC/GUI中文手册第3章仿真器KeyIndexHardkey的标签(0=第一个键的标签)State指定Hardkey的状态(如下所示)参数State允许的数值:0:非按下1:按下附加信息该函数只有在SIM_HARDKEY_SetMode被设为1(切换模式)时才有效。第15页µC/GUI中文手册第4章文本显示使用µC/GUI显示字体是很容易的。仅仅需要很少的的函数知识就能让我们在任何有效的字体当中进行文本书字,然后显示在任何一个位置。我们首先对显示字体进行简短的介绍,然后是分别对所用的函数进行更详细的说明。第1页µC/GUI中文手册jk线条jk线条第4章文本显示4.1基本函数为了在LCD上显示文本,可以简单地调用函数GUI_DispString(),把你所希望显示的文本作为其参数,例如:GUI_DispString("Helloworld!");上面的代码将会在当前文本坐标显示文本“Helloworld!”。然而,正如你所看到的,有很多函数用于显示不同字体的文本或都在不同的坐标显示文本。另外,它不仅能写字符串,而且能写十进制数,十六进制数和二进制数用于显示。即使图形
  • 相关资料
  • 该用户的其他资料
  • 名称/格式
  • 下载次数
  • 资料大小
  • 名称/格式
  • 下载次数
  • 资料大小

用户评论

0/200
暂无评论
上传我的资料

资料阅读排行

关闭

请选择举报的类型

关闭

提示

提交成功!

感谢您对爱问共享资料的支持,我们将尽快核实并处理您的举报信息。

关闭

提示

提交失败!

您的举报信息提交失败,请重试!

关闭

提示

重复举报!

亲爱的用户!感觉您对爱问共享资料的支持,请勿重复举报噢!

全屏 缩小 放大
收藏
资料评价:

/ 824
所需积分:0 立即下载
返回
顶部
举报
资料
关闭

温馨提示

感谢您对爱问共享资料的支持,精彩活动将尽快为您呈现,敬请期待!