嵌入式开发系统说明书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
博创兴业
嵌入式开发系统说明书
1、嵌入式开发系统及相关组件
1.1 嵌入式开发系统的组成
1.1.1 嵌入式开发系统的硬件部分
1、S3C44B0X开发板一块
2、320x240 16级灰度液晶屏一块(带触摸屏)
3、USB连接电缆一条
4、JTAG仿真器一个
5、PC机并口延长电缆一条
6、RS-232串口通讯线一条
1.1.2 嵌入式开发系统提供的软件
1、ARM SDT 2.51 试用版
2、嵌入式实时多任务操作系统的软件开发包
3、10个开发板实验的源程序
1.1.3 嵌入式开发系统提供的光盘文件说明
目录说明
\document 关于S3C44B0X的文档
\lib 嵌入式实时多任务操作系统的软件库
\sample 程序例子
\software\Embedded USB 嵌入式开发系统USB下载及驱动程序
\software\JTAG ARM仿真器驱动程序,此程序只能在Windows98下
面使用
\software\SDT250评估版ARM SDT 2.50评估版
\template 嵌入式开发系统工程模板
・1・
博创兴业
1.2 嵌入式开发系统概述
嵌入式开发系统的总体结构如下图1-1所示
10M 以太网口 JTAG 接口
JTAG 跳线 LCD 接口
扩展SPI 、I 2C 接口 扩展I/O 接口
扩展A/D 接口图1-1 嵌入式开发系统的总体结构
・2・
博创兴业
注:Debug选择跳线在使用JTAG仿真调试的时候必须短接。
调试结束以后,可以去掉Debug选择跳线。
1.2 嵌入式开发系统的连接方式
串口2接PC
机USB口
USB接口接
PC机USB口
JTAG电缆
接PC机并口
图1-2 嵌入式开发系统的连接方式
按照如图1-2所示的方式连接嵌入式开发系统,即可在嵌入式的开发板上调试程序。
注意,调试的时候一定要短截Debug选择跳线。
连接好USB电缆和液晶屏以后,打开嵌入式开发系统的电源开关,嵌入式开发系统开始正常工作,引导系统。
2、嵌入式开发系统使用入门
2.1 使用ARM SDT 2.5开发环境
本节将结合实际,将述如何配置ARM SDT 2.5开发环境以及在ARM SDT 2.5开发环境上开发基于ARM的应用程序。
本节将使用ARM SDT 2.5集成开发环境。
新建一个基于操作系统的工程文件,并编译这个工程。
学习ARM并行口仿真器的使用和开发环境的设置。
下载已经编译好的文件到嵌入式控制器中运行。
学会在程序中设置断点,观察系统内
・3・
博创兴业
存和变量,为调试应用程序打下基础。
注意:
开发板中所提供的ARM SDT 2.5为试用版。
如果用户需要正式版请和ARM SDT 的代理商联系。
2.1.1 设置模板文件
安装成功ARM SDT以后,把嵌入式开发系统携带的光盘中\Template\armRom.apj文件,复制到ARM SDT安装目录中(比如:\ARM250\Template)。
这是一个SDT的模板文件,以后用这个模板可以新建工程。
2.1.2 设置ARM SDT .2.5
1、把嵌入式开发系统带的光盘的sample目录复制的到本地硬盘中。
启动ARM Project Manager,打开sample中的一个工程。
比如:work1.prj,如图2-1所示。
图2-1 打开sample中的一个工程
2、选中工程中debug子项,如图2-2所示。
・4・
博创兴业
图2-2 选中工程中debug子项
3、按照图1-3连接好仿真器。
打开开发板的电源。
运行嵌入式开发系统携带的光盘中的\SOFTWARE\JTAG\armJtag.exe文件。
建议把这个文件复制到本地硬盘中。
4、如图2-3所示,使用菜单中project | Debug Work1.apj “Debug”菜单命令,或者其对应的工具栏按钮,启动ARM Debugger跟踪调试程序。
图2-3 启动ARM Debugger
・5・
博创兴业
5、在ARM Debugger中,通过Options | Configure Debugger菜单设置仿真器。
如图2-4
Remote_A
所示,在弹出的对话框中,设置Target Environment为
图 2-4
6、单击Configure按钮,按照如图2-5所示,设置仿真器,添加本机的IP地址。
图 2-5
・6・
博创兴业
7、设置完成以后,ARM Debbuger开始通过仿真器装载程序。
如图2-6所示。
图 2-6
8、装载完毕以后,通过Execute | Go菜单(或者工具栏中的相应按钮)运行程序。
9、程序运行的时候,可以使用Execute | Stop菜单(或者工具栏中的相应按钮)暂停运行程序。
如图2-8所示,在Execute窗口中将显示出程序暂停的位置。
图 2-8
10、通过Execute | Step菜单(或者工具栏中的相应按钮)可以单步运行程序。
也可以使用Step In、Step Out菜单命令进入或者跳出函数的调用。
11、在程序停止运行的时候,选择View | Source Files菜单命令,可以打开如图2-9所示的源程序例表窗口,双击列表中的文件名可以查看相应的源文件。
・7・
博创兴业
图 2-9
12、在源文件列表中打开Main.c文件。
选择源文件中的某一行,右击鼠标,如图2-10所示,用Toggle Breakpoint快捷菜单命令可以设置断点,使程序运行到这里停下来。
图 2-10
・8・
博创兴业
提示:
使用在View菜单下的Registers、Variables和Memory命令可以查看工作寄存器或者内存变量。
读者可以逐一的尝试,为以后调试程序打下基础。
2.1.3 应用程序的发布
当调试完成一个应用程序以后,就可以把应用程序下载到嵌入式开发系统中,脱离仿真器运行。
发布应用程序按照如下的步骤:
1、运行windows系统下的超级终端(HyperTerminal)应用程序,如图2-11所示新建一个终端通讯,取名为arm。
单击确定按钮。
图 2-11
2、选择终端的连接的串口(比如:串行口1),如图2-12所示,设置通讯的格式和协议。
・9・
博创兴业
图 2-12
3、设置完成超级终端以后,就可和嵌入式开发系统建立通讯,如图2-13所示。
・10・
博创兴业
图 2-13
4、生成发行版本的system.bin文件。
按嵌入式开发系统系统的复位按钮,使系统通过BIOS引导,同时,按住键盘的任意按键,这时。
如图2-14所示,系统将进入BIOS设置程序。
・11・
博创兴业
图 2-14
5、通过PC机键盘可以和嵌入式开发系统通讯。
按照终端的提示,在PC键盘上键入R(或者r)将激活嵌入式开发系统上的USB。
这时,可使用PC端的软件来读写嵌入式开发系统上中的文件。
把生成的system.bin文件通过USB下载到嵌入式开发系统中,复位系统,运行并检查输出结果。
提示:
1、system.bin文件是系统通过BIOS引导以后,装入内存中运行的默认文件名。
2、第一次开启使用USB的时候,系统将提示找到USB设备并安装驱动程序。
开
发板的USB驱动程序在光盘的\software\Embedded USB目录下。
此驱动程序在windows98、windows2000、windowsXP下面都可以使用。
2.2 用开发板来开发应用程序
2.2.1 整体框图
嵌入式控制器的软件整体框图如图所示。
・12・
博创兴业
嵌入式控制器结构框图
・13・
博创兴业
针对每一部分所需要完成的任务,对操作系统的各个部分划分成如下的模块:
1、系统外围设备的硬件部分
系统外围设备的硬件部分包括:液晶显示屏(LCD)、USB通讯模块、键盘、海量Flash 存储器、系统的时钟和日历。
外围设备的硬件部分是保证系统的实现指定任务的最底层的部件。
2、驱动程序模块
驱动程序是连接底层的硬件和上层的API函数的纽带,有了驱动程序模块,就可以把操作系统的API函数和底层的硬件分离开来。
任何一个硬件的改变、删除或者添加,只需要随之改变、删除或者添加提供给操作系统的相应的驱动程序就可以了。
而不会影响到API 函数的功能,更不会影响到用户的应用程序。
同时,为了保证在实时多任务操作系统中,对硬件访问的唯一性,系统的驱动程序要受控于相应的操作系统的多任务之间的同步机制。
在uCOS-II中使用信号量、邮箱等机制进行协调。
3、操作系统的API函数
在操作系统中提供标准的应用程序接口(API)函数,可以加速用户应用程序的开发,统一应用程序的标准。
同时也给操作系统版本的升级的带来的方便。
在API函数中,提供了大量的常用模块,可以大大的简化了用户应用程序的编写。
4、实时操作系统的多任务管理
uCOS-II作为操作系统的内核,主要的任务就是完成多任务之间的调度和同步。
5、系统的消息队列
这里所说的系统的消息队列的是以uCOS-II的消息队列派生出来的系统消息传递机制。
用来实现系统的各个任务之间,用户应用程序的各个任务之间以及用户应用程序和系统的各个任务之间的通讯。
6、系统任务
在本系统中,系统任务主要包括:液晶显示屏(LCD)的刷新任务、系统键盘扫描任务。
这两个任务是操作系统的基本任务,随着操作系统的启动而运行。
7、用户应用程序
用户的应用程序建立在系统的主任务(Main_Task)基础之上。
用户应用程序主要通过调用系统的API函数对系统进行操作,完成用户的要求。
在用户的应用程序中也可以创建用户自己的任务。
任务之间的协调主要依赖于系统得消息队列。
2.2.2 建立文件系统
1、文件系统简介
此开发板的文件系统可以保存最多512个文件,文件数据以簇为单位进行存储。
为了便于管理和提高访问速度,文件系统中不提供存储子目录的管理。
2、文件系统的组织形式
类似于FAT16的文件系统,在我们的系统中,文件也是以“簇”(Cluster)为单位,・14・
博创兴业
分块存储的。
每个簇的大小固定为16KB。
也就是说,文件的所占用的存储空间必须为16KB (一个簇)的整数倍。
例如:即使文件只有一个字节,也要占用一个簇的存储空间。
每个簇在文件分配表(FAT)中都有对应的表项,簇号即为表项号,每个表项2个字节。
这就是16位的文件分配表。
注意:不要把表项内的数字误认为表示当前簇号,而应是该文件的下一个簇的簇号。
高字节在后,低字节在前是一种存储数字方式,读出时应对其进行调整。
是如两字节12H,34H,应调整为3412H。
文件的名称和相关信息(比如:创建时间、文件属性等)存放在文件目录表中。
同时文件目录表记录了每一个文件的首簇号码。
这样整个文件系统(文件目录表和文件分配表)就构成了一个单向链表。
读取文件的时候,首先在文件目录表中找到相应的文件所对应的首簇的号码,读取完成一个簇以后,如果文件的长度大于16KB(一个簇),就从文件分配表中查找到下一个簇的号码,然后继续读取,直到文件分配表中的下一个簇号码为FFFFH时为止。
3、文件系统相关的API函数详解
initOSFile
定义:void initOSFile();
功能:初始化系统文件管理,为文件结构分配空间,在系统初始化的时候调用此函数OpenOSFile
定义:FILE* OpenOSFile(char filename[], U32 OpenMode);
功能:以读去或者写入的模式打开指定的文件,并创建FILE结构,为文件读取分配缓冲区,返回当前指向文件结构(FILE)的指针
参数说明:filename:打开的文件名
OpenMode:打开文件的模式,可以是表2-1中的一种
表2-1
数值说明
读取文件
FILEMODE_READ 1
写入文件
FILEMODE_WRITE 2
ReadOSFile
定义:U8 ReadOSFile(FILE* pfile,U8* ReadBuffer, U32 nReadbyte);
功能:读取已经打开的文件到指定的缓冲区,如果成功则返回TRUE,否则,返回FALSE 参数说明:pfile:指向打开文件的指针
ReadBuffer:读文件的目的缓冲区
nReadbyte:读取文件的字节数
LineReadOSFile
定义:U32 LineReadOSFile(FILE* pfile, char str[]);
功能:读取指定文件的一行,返回读取文件的字节数
参数说明:pfile:指向打开文件的指针
str:读取的字符串数组
・15・
博创兴业
WriteOSFile
定义:U8 WriteOSFile(FILE* pfile,U8* WriteBuffer, U32 nReadbyte);
功能:把缓冲区写入指定的文件,如果成功则返回TRUE,否则,返回FALSE
参数说明:pfile:指向打开文件的指针
WriteBuffer:写入文件的源缓冲区
nReadbyte:写入文件的字节数
CloseOSFile
定义:void CloseOSFile(FILE* pfile);
功能:关闭打开的文件,释放文件缓冲区
参数说明:pfile:指向打开文件的指针
GetNextFileName
定义:U8 GetNextFileName(U32 *filepos,char filename[]);
功能:得到文件目录分配表中指定位置的文件名(包括扩展名),文件位置自动下移。
如果文件有效则返回TRUE,否则,返回FALSE
参数说明:filepos:文件的位置,范围从0-511
filename:返回的文件名
ListNextFileName
定义:U8 ListNextFileName(U32 *filepos, char FileExName[],char filename[]);
功能:列出当前位置开始第一个指定扩展名的文件,如果没有,则返回FALSE
参数说明:filepos:文件的位置,范围从0-511
FileExName:指定的文件扩展名
filename:返回的文件名
2.2.3 外设及驱动程序
外设驱动程序可以对系统提供访问外围设备的接口,把操作系统(软件)和外围设备(硬件)分离开来。
当外围设备改变的时候,只需更换相应的驱动程序,不必修改操作系统的内核以及运行在操作系统中的软件。
本小节中,将建立几种典型外设的驱动程序标准接口。
1、串行口
串行口符合RS-232标准,通讯的最高速度可以达到115200bps。
串行口的接口函数如下:
Uart_Init
定义:void Uart_Init(int Uartnum, int mclk,int baud);
功能:初始化串行口,设置串行口通讯的波特率
参数说明:Uartnum:所设定的串行口号
mclk:系统的主时钟频率,如果为0,则为默认值60
band:所设定的串行口通讯的波特率
Uart_Printf
定义:void Uart_Printf(char *fmt,...);
功能:输出字符串到串口0
・16・
博创兴业
参数说明:fmt:输出到串行口的字符串
Uart_Getch
定义:char Uart_Getch(int Uartnum);
功能:接收指定串口的数据,收到数据时返回,返回串口接收到的数据
参数说明:Uartnum:所设定的串行口号
Uart_SendByte
定义:void Uart_SendByte(int Uartnum, int data);
功能:向指定的串口发送数据
参数说明:Uartnum:所设定的串行口号
data:发送的数据
2、液晶显示驱动程序
在本系统中液晶屏使用240x128分辨率,通过总线的形式连接在S3C44B0X的Bank3上。
在系统的内存里开辟了一块内存作为液晶屏显示的后台缓冲区LCDBuffer,其定义如下:
U32 LCDBuffer[LCDHEIGHT][LCDWIDTH];
其中,LCDBuffer为按双字映射存储的缓冲区(即:每四个字节表示一个点),写入的时候调用液晶屏的void LCD_Refresh()函数,就可以把缓冲区的内容显示在液晶屏上。
因为缓冲区是按双字存储的,所以LCDBuffer[y][x]对应的就是屏幕点(x,y)的像素值,每一个点用一个32位的整数表示,可以满足实现32位真彩色图片的显示,保证不同的液晶屏的兼容性。
不同的液晶屏只需要更新LCD240.c和LCD240.h文件中的驱动程序即可。
液晶的驱动程序的接口函数如下:
LCD_Init
定义:void LCD_Init(void);
功能:初始化LCD,在系统启动的时候此函数被调用。
LCD_printf
void LCD_printf(char *fmt,...);
功能:在LCD的文本模式下上输出字符串,屏幕自动滚动
参数说明:fmt:所输出的字符串
LCD_ChangeMode
void LCD_ChangeMode(U8 mode);
功能:改变LCD的显示模式
参数说明:mode:设定的LCD的显示模式,可以是如下表2-2中的一种
表2-2
数值说明
DspTxtMode 0 文本模式
DspGraMode 1 图形模式
LCD_Refresh
・17・
博创兴业
void LCD_Refresh();
功能:更新LCD的显示,把后台缓冲区LCDBuffer[][]的内容更新到LCD的显示屏上,LCDBuffer中每一个点用一个32位的整数表示。
LCDBkLight
定义:void LCDBkLight(U8 isOpen);
功能:打开或者关闭LCD的背光。
参数说明:isOpen:设定打开或者关闭LCD的背光。
可以是TRUE或者FALSE
3、键盘驱动程序
本控制器使用的是4x4的键盘,在S3C44B0X的GPD端口上由程序扫描控制。
键盘的相关驱动函数如下:
GetKey
定义:U32 GetKey();
功能:低16位为键盘号码,高16位对应功能键扫描码(1有效)。
此函数为死锁函数,调用以后,除非有按键按下,否则,函数不会返回。
SetFunctionKey
定义:void SetFunctionKey(U16 Fnkey);
功能:设定功能键扫描码,1有效。
类似算机上的ctrl alt键的功能,可以提供组合按键
GetNoTaskKey
定义:U32 GetNoTaskKey();
功能:低16位为键盘号码,高16位对应功能键扫描码(1有效),此函数为死锁函数,调用以后,除非有按键按下,否则,函数不会返回。
和GetKey()的区别是,此函数不会释放此任务的控制权,除非有更高级的任务运行。
4、USB接口
嵌入式控制器提供的USB接口是USB的设备(device)接口,需要和USB的主控(host)接口相连,比如:PC机的USB。
因为USB是一种高速的串型设备,所以,在系统中连接USB采用的是一种死索的办法。
即,当系统进入USB连接状态时关闭了其他所有的正在执行的任务,以保证USB和主控设备之间的高速通讯。
● USB相关的API函数
USB的连接主要通过以下两个函数实现:
EnterUsbConnect
定义:void EnterUsbConnect();
功能:进入USB的连接状态,暂停其他所有的任务
ExitUsbConnect
定义:void ExitUsbConnect();
功能:断开USB的连接,恢复执行其他所有的任务
・18・
博创兴业
● USB连接举例
下面一段代码给出了连接USB的例子:
EnterUsbConnect();
for(;;){
key
=GetNoTaskKey();
if(((key+1)&0xffff)
==16){
ExitUsbConnect();
return;
}
}
执行EnterUsbConnect()函数以后,关掉了系统的多任务调度和所有的系统中断。
所以,在以后的执行的程序中,不能执行任何与系统的多任务相关的函数,比如:OSTimeDly()。
因为在GetKey()函数中也调用OSTimeDly()函数进行延时,所以不能使用,而用GetNoTaskKey()函数来代替。
2.2.4 图形用户接口(GUI)函数
基于32位嵌入式处理器的硬件平台,有着较高的运算速度和大容量的内存。
为人机交互建立GUI无疑为最首选的方式。
本小节将建立针对常用的图形界面的应用建立相应的API函数。
主要包括:基于Unicode的汉字字库、典型的控件、基本绘图函数。
1、基于Unicode的汉字字库
◆什么是Unicode
总所周知,计算机是以处理数字为基础,如果要处理文字就需要规定一个编目系统用不同的数字来表示相应的字符。
世界上常用的编码系统有数百种之多,我们较为熟悉的有GB、GBK、BIG5、ASCII等等。
但所有的这些编码系统,没有哪一个能有足够的字符,可以适用于多种语言文本。
例如单就欧共体来说,就需要几种不同的编码来包括所需的语言。
即便是单一的语言,例如英语,也没有哪一个编码系统,能包含其所有的字母,标点符号和常用技术符号。
由于编码不统一,这些编码系统之间经常相互冲突。
事实上,两种编码可能使用相同的数字代表两个不同的字符;或者使用不同的数字代表相同的字符。
数据在不同的编码系统或平台之间转换时,往往不能正确地表达,甚到有损坏的危险。
Unicode出现改变了这一切。
Unicode给每个字符提供了一个唯一的数字,不论是什么平台,不论是什么程序,不论什么语言。
Unicode标准已经被这些工业界的领导们所采用,例如:Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys和其它许多公司。
最新的标准都需要Unicode,例如XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML等等,并且,Unicode是实现ISO/IEC 10646的正规方式。
许多操作系统,所有最新的浏览器和许多其他产品都支持它。
Unicode标准的出现和支持它工具的存在,是近来全球软件技术最重要的发展趋势。
・19・
博创兴业
将Unicode与客户服务器或多层应用程序和网站结合,比使用传统字符集节省费用。
Unicode使单一软件产品或单一网站能够贯穿多个平台,语言和国家,而不需要重建。
它可将数据传输到许多不同的系统,而无损坏。
在Unicode的双字节版本中(UTF-16)使用的是16位编码方式,可提供65,000多个字符代码指针。
其编码容量可涵盖世界上几乎所有的语言,不仅包括拉丁语,希腊语,斯拉夫语,希伯来语,阿拉伯语,亚美尼亚语,还包括中文,日文和韩文这样的象形文字,以及平假名,片假名,孟加拉语,泰米尔语,泰国语,老挝语等。
目前还有大约8000个代码指针未用,可供扩展。
◆使用Unicode的优点
Unicode与传统字符编码集相比,具有明显的优势:
首先,使用Unicode避免了乱码的产生,使得国际间文本数据交换成为可能。
比如:在浏览网上信息时,常常会遇到页面上出现乱码的情况。
这是因为该信息所使用的编码系统与浏览器所指定的编码系统不符。
这时我们就需要不断调整“编码”选项,以使页面显示正常。
但一般情况下,我们并不能知道,该页面信息到底是用什么编码的,只能凭猜测不断试验。
如果,我们使用Unicode标准对文本数据进行编码,就可以避免这些问题,保证数据平滑、无阻碍地交换。
其次,解决了多语言文本同平面共存的问题。
在传统的字符编码系统中,不能可能实现在同一个版面上显示多种语言文字,因为传统字符编码集往往只针对一种语言。
对多语言文本根本无法进行编码,也就更谈不上显示和处理了。
Unicode却依靠它强大的编码容量,和全球编码的统一性可以轻而易举的做到这一点。
最后,实现了软件的全球化,避免了软件产品在贯穿多个平台、语言和国家时的重建。
比如,不同的平台或不同的语言系统,往往使用不同的编码系统。
不同的编码系统有不同的编码规范和方法,使用固定或变长的编码单元。
例如,ASCII使用7位的编码单元,而GB使用16位和8位的变长度的编码单元。
这都给软件在各个语言版本之间的编译带来的麻烦。
而在Unicode的双字节版本中,无论是英文字母还是汉字或者其他字符,使用的都是16位的编码方式。
这无疑给软件的编写带来的极大的方便。
◆ Unicode字库的显示及相关函数
本系统中编码采用双字节版本的Unicode格式,收集了ASCII字符(0x0000-0x00ff)256个;特殊图形符号(0x2600-0x267f和0x2700-0x27bf)320个;中文字符(0x4e00-0x9fff)20992个。
提供了如下的相关API函数:
Int2Unicode
定义:void Int2Unicode(int number, U16 str[]);
功能:从int形变量到Unicode字符串的转换
参数说明:number:被转换的整形数字
str:转换成的Unicode字符串
Unicode2Int
・20・
博创兴业
定义:int Unicode2Int(U16 str[]);
功能:Unicode字符串到int的转换,遇到字符串结束符’\0’或者非数字字符的时侯返回,返回值是转换的结果——int形整数
参数说明:str:被转换的Unicode字符串
strChar2Unicode
定义:void strChar2Unicode(U16 ch2[], const char ch1[]);
功能:char类型(包括GB编码),到Unicode的编码转换。
如果有GB编码,则自动进行GB到Unicode的转换。
参数说明:ch1:转换成的Unicode字符串
ch2:被转换的char字符串
2、基本绘图函数
绘图是操作系统的图形界面的基础,本系统为图形界面提供了丰富的绘图函数。
在多任务操作系统中,绘图设备上下文(DC)是绘图的关键。
绘图设备上下文(DC)保存了每一个绘图对象的相关参数(比如:绘图画笔的宽度、绘图的原点坐标等)。
在多任务操作系统中,通过绘图设备上下文(DC)来绘图,可以保证在不同的任务绘图的参数是相互独立的,不会互相影响。
系统的绘图相关函数的详细情况如下:
initOSDC
定义:void initOSDC();
功能:初始化系统的绘图设备上下文(DC),为DC的动态分配开辟内存空间
CreateDC
定义:PDC CreateDC();
功能:创建一个绘图设备上下文(DC),返回指向DC的指针
DestoryDC
定义:void DestoryDC(PDC pdc);
功能:删除绘图设备上下文(DC),释放相应的资源
参数说明:pdc:指向绘图设备上下文(DC)的指针
SetPixel
定义:void SetPixel(PDC pdc, int x, int y, U32 color)
功能:设置指定点的像素颜色到LCD的后台缓冲区,LCD范围以外的点将被忽略参数说明:pdc:指向绘图设备上下文(DC)的指针
x,y:指定的像素座标
color:指定的像素的颜色
SetPixelOR
定义:void SetPixelOR(PDC pdc, int x, int y, U32 color)
功能:设置指定点的像素颜色和LCD的后台缓冲区的对应点或运算,LCD范围以外的点将被忽略
参数说明:pdc:指向绘图设备上下文(DC)的指针
x,y:指定的像素座标
・21・
博创兴业
color:指定的像素的颜色
SetPixelAND
定义:void SetPixelAND(PDC pdc, int x, int y, U32 color)
功能:设置指定点的像素颜色和LCD的后台缓冲区的对应点与运算,LCD范围以外的点将被忽略
参数说明:pdc:指向绘图设备上下文(DC)的指针
x,y:指定的像素座标
color:指定的像素的颜色
SetPixelXOR
定义:void SetPixelXOR(PDC pdc, int x, int y, U32 color)
功能:设置指定点的像素颜色和LCD的后台缓冲区的对应点异或运算,LCD范围以外的点将被忽略
参数说明:pdc:指向绘图设备上下文(DC)的指针
x,y:指定的像素座标
color:指定的像素的颜色
GetFontHeight
定义:int GetFontHeight(U8 fnt)
功能:返回指定字体的高度
参数说明:fnt:输出字体的大小型号,可以是表2-3数值中的一种:
表2-3
数值说明
FONTSIZE_SMALL 1 小字体模式,12x12字符
FONTSIZE_MIDDLE 2 中字体模式,16x16字符
大字体模式,24x24字符
FONTSIZE_BIG 3
TextOut
定义:void TextOut(PDC pdc, int x, int y, U16 *ch, U8 bunicode, U8 fnt);
功能:在LCD屏幕上显示文字
参数说明:pdc:指向绘图设备上下文(DC)的指针
x,y:所输出文字左上角的屏幕坐标
ch:指向输出文字字符串的指针
bunicode:是否为Unicode编码,如果是TRUE,表示ch指向的字符串为
Unicode字符集;如果为FALSE,表示表示ch指向的字符串为GB字符集。
fnt:指定字体的大小型号,可以是表2-3数值中的一种或上表2-4的数值:
表2-4
数值说明
正常显示
FONT_TRANSPARENT 4 透明背景
・22・
博创兴业
黑底白字
FONT_BLACKBK 8
TextOutRect
定义:void TextOutRect(PDC pdc, structRECT* prect, U16* ch, U8 bunicode, U8 fnt)
功能:在指定矩形的范围内显示文字,超出的部分将被裁减
参数说明:pdc:指向绘图设备上下文(DC)的指针
prect:所输出文字的矩形范围
ch:指向输出文字字符串的指针
bunicode:是否为Unicode编码,如果是TRUE,表示ch指向的字符串为
Unicode字符集;如果为FALSE,表示表示ch指向的字符串为GB字符集。
fnt:指定字体的大小型号,可以是表1-1数值中的一种或上表2-4的数值MoveTo
定义:void MoveTo(PDC pdc, int x, int y);
功能:把绘图点移动到指定的坐标
参数说明:pdc:指向绘图设备上下文(DC)的指针
x,y:移动画笔到绘图点的屏幕坐标
LineTo
定义:void LineTo(PDC pdc, int x, int y);
功能:在屏幕上画线。
从当前画笔的位置画直线到指定的坐标位置,并使画笔停留在当前指定的位置
参数说明:pdc:指向绘图设备上下文(DC)的指针
x,y:直线绘图目的点的屏幕坐标
DrawRectFrame
定义:void DrawRectFrame(PDC pdc, int left,int top ,int right, int bottom);
功能:在屏幕上绘制指定大小的矩形方框。
参数说明:pdc:指向绘图设备上下文(DC)的指针
left:绘制矩形的左边框位置
right:绘制矩形的右边框位置
top:绘制矩形的上边框位置
bottom:绘制矩形的下边框位置
DrawRectFrame2
定义:void DrawRectFrame2(PDC pdc, structRECT rect)
功能:在屏幕上绘制指定大小的矩形方框。
参数说明:pdc:指向绘图设备上下文(DC)的指针
rect:绘制矩形的位置及大小
FillRect
定义:void FillRect(PDC pdc, int left,int top ,int right, int bottom,U32 DrawMode ,U32 color);
功能:在屏幕上填充指定大小的矩形。
参数说明:pdc:指向绘图设备上下文(DC)的指针
left:绘制矩形的左边框位置
right:绘制矩形的右边框位置
・23・。