emWin522(uCGUI)图形用户接口移植详细实例_STM32_2013_12_30
uCGUI在stm32内核上的移植

LCDConf.h UCGUI390a\Start\Config
此文件用于 LCD 的相关应用配置,介绍如下
#ifndef LCDCONF_H
#define LCDCONF_H
#define LCD_XSIZE
(240)
#define LCD_YSIZE
(320)
#define LCD_CONTROLLER (9320) //控制器编号
配置文件目录
GUI\ConvertMono
灰度色彩转换支持
GUI\ConvertColor
色彩转换支持
GUI\Core
核心文件
GUI\Font
字体文件
GUI\JPEG
JPEG 格式图像显示支持
GUI\LCDDriver
LCD 驱动文件
GUI\MemDev
存储设备支持
这是今年暑假移植的,刚刚翻译完 uC/OS-III 用户手册,并移植了
uC/OS-III 到 stm32 处理器上,我就想把 uC/GUI 也放到网上去,希望
能帮到大家。
——屈环宇
——2011 年 11 月 6 号晚
Void LCD_MyInit(); 注意 LCD 的初始化函数名不能用 LCD_Init(); uC/GUI 中已有如此定义的 函数,会导致重定义。 接口函数的设计是跟处理器和 LCD 相关的,在移植 uC/GUI 前必须完成以 上 3 个 函 数 的 设 计 , 即 能 用 LCD_MyInit() 实 现 LCD 的 初 始 化 , LCD_ReadPoint(u16 x,u16 y)返回对应点的颜色,LCD_DrawPoint(u16 x, u16 y, u16 color)在 LCD 上显示对应点的颜色。
基于STM32的UCGUI移植解析(新手入门)

-----------------如何建立一个简单的 UC/GUI 工程
仅供像我这样的新手学习 UCGUI 使用
做 UCGUI 移植,首先要选择好自己硬件平台,UCGUI 源码,液晶的底层驱 动。关于硬件和 GUI 源码(我选的源码 3.90 版,原子 STM32MINI 开发板)不 必多说。其次,液晶的底层驱动函数得要好好准备,这可是直接和 GUI 源码打 交道的。
(7) 修改:LCDDriver / LCDDummy.c 文件 方法:在这里面添加几个函数,关于这几个函数就是我在开始列举
的几个函数 LCD_ReadPoint(u16 x, u16 y);//读取点坐标 LCD_SetPoint(u16 x, u16 y, u16 color );//画点 你的函数也许不是这个名字哦,大家不要照搬,这是你自己的驱动函数, 在哪里添加这两个函数呢,不要着急,听我来说,
还有一个问题,网上有人说触摸用不到,可以不用添加,然后字体也只
添加几个用得到的,我的意见是:全部添加,避免难以修改的 KEIL 警告, 这点很重要,我是新手,我很清楚怎么过来的,呵呵呵。
(4):文件添加完了,还有一步呢,还要在添加路径。点击魔术棒,出现一 个选项卡,点击 C/C++,在 Include Paths 里包含文件路径,所有文件的都 要包进来哦。能玩移植的朋友们,我相信(3)(4)两步对你们来说不难。
(2):复制 源码/Sample/GUI_X 文件夹下的 GUI_X.c 文件,粘贴到工程 模板下的 Config 里; 图片指示:
(3):打开 KEIL 工程(事先准备好的),KEIL 界面左边有个 Project 视窗, 在 Target1 单击右键,出现一个选项卡,在 Groups 里创建各文件,然后依 次 Add Files,即添加.c .h 文件,这里要着重说明:添加文件的时候,尤 其是 GUI 源码,文件类型选择 ALL Files(系统默认.c 文件),就是为了添 加.h 文件,这一点很重要。举个例子吧,在 Config 文件夹下要添加 GUI_X.c GUIConf.h GUITouch.h LCDConf.h。
UCOS-II ucGUI的完美移植

stm32 UCGUI 完美移植作者:Changing发表时间:09-16 04:13分类:电子相关1 Comment前一篇:stm32 DA 数模转换后一篇:Stm32 SWD 下载 调试配置UCGUI是一种嵌入式应用中的图形支持系统。
它设计用于为任何使用LCD图形显示的应用提供高效的独立于处理器及LCD控制器的图形用户接口,它适用单任务或是多任务系统环境, 并适用于任意LCD控制器和CPU下任何尺寸的真实显示或虚拟显示。
它的设计架构是模块化的,由不同的模块中的不同层组成,由一个LCD驱动层来包含所有对LCD的具体图形操作。
UCGUI可以在任何的CPU上运行,因为它是100%的标准C代码编写的。
类似程序还有国产的一个MINIGUI (/zhcn/),MiniGUI 是一个自由软件项目。
其目标是提供一个快速、稳定、跨操作系统的图形用户界面(GUI)支持系统,尤其是基于 Li nux/uClinux、eCos 以及其他传统 RTOS(如 VxWorks、ThreadX、uC/OS-II、Nucleus 等)的实时嵌入式操作系统。
有机会尝试下,支持下国产,毕竟国内这样的公司不多。
这里移植的UCGUI3.90a版本,虽然已经有更新的版本,比如UCGUI3.98、甚至4.04版本。
但是目前来说只有这个版本的代码是最全的,包括了JPEG , MULTILAYER , MEMDEV ,AntiAlias等模块。
一直想尝试做一个数码相册,JEPG模块自然少不了,所以移植了这个版本。
UCGUI390a 下载整个移植过程,让LCD显示图案倒是没花多少时间,资料也比较多,但是在移植触摸屏的时候卡了好几天,然后又是 UCGUI 指针图标 移动有重影(LCD读取像素颜色函数有问题)。
总之移植是个累人的活首先需要保证你的LCD驱动和触摸屏驱动是有效的,如果你的LCD也是ili93xx 控制器 XPT2046控制器的触摸屏可以参考 stm32 驱动 T F T LCD stm32 驱动 触摸屏 两篇文章UCGUI的文件数量很大,主要用到UCGUI390a/Start/Con f ig 和 UCGUI390a/Start/GUI两个文件夹下文件,不过文件数量也已经很多了 。
uCGUI(emWin)的应用与移植

uCGUI(emWin)的应用与移植uC/GUI(emWin)的应用与移植 2006-11-19 01:38当你开始使用emWin进行编程时,通常遵循以下的步骤:第1步:配置emWin第一步通常是通过修改头文件LCDConf.h来配置emWin。
LCDConf.h中的宏定义描述了LCD显示部分硬件特性;根据你的具体情况修改这些宏定义(例如显示屏的长、宽,每像素点用几位表示,LCD控制器的类型等参数)。
第2步:定义LCD的底层驱动函数底层函数包括对LCD(控制器)的初始化函数,LCD显示缓冲区的读写函数等,完成对LCD显示硬件的直接操作。
对于映射在系统存储器上的LCD,对显示缓冲区的操作仅需要在LCDConf.h中进行定义就可以了。
但对于采用I/O端口/缓冲区操作的LCD,就必须定义相应的接口函数了。
第3步:编译,链接和测试例子代码emWin对于单任务和多任务环境下的应用都提供了例子代码。
在编程之前,对这些例子代码进行编译、链接和测试,使你能够初步了解这些代码的使用。
第4步:修改例子程序对例子代码作少量的修改。
逐步添加一些额外的指令,例如显示不同大小的文字,显示多行等等,从而进一步理解代码的应用。
第5步:emWin的多任务应用,加入到你的操作系统中如果你的系统有可能多个任务同时对显示进行操作,这时就要用到GUITask.C文件中的GUI_MAXTASK和GUI_OS宏。
第6步:采用emWin编写你自己的应用到这一步你应该对怎样使用emWin有一个清楚的了解了。
考虑如何采用emWin提供的函数来构建你的应用,并通过阅读手册来获得各函数更详细的功能和使用上的信息。
emWin的移植移植是指对emWin进行配置和修改,使它能够在你的目标系统上运行。
参考第3.4节中的第一步和第二步,移植工作主要是针对配置头文件中的宏定义进行修改。
这些宏包括:1. LCD宏,定义了显示的尺寸和一些可选择的特性(例如镜像,等等)2.LCD控制器宏,定义了怎样对控制器进行操作。
STM32平台的_C_GUI移植与图形界面设计

( ) 5 6 5
/ /指定颜色模式为 5 6 5 / /激活 C P U和L C D 控制器中的反转 ) i e f i n e L C D_ I N I T_ C ON T R O L L E R( l i 9 3 2 0_ I n i t i a l i z t i o n #d ( ) ; / / i l i 9 3 2 0 L C D 控制器初始化
表 1 G U I文件目录内容说明
文件目录 GU I A n t i A l i a s \ GU I C o n v e r t M o n o \ GU I C o n v e r t C o l o r \ GU I C o r e \ GU I F o n t \ GU I L C D D r i v e r \ GU I e mD e v \M GU I T o u c h \ GU I i d e t \W g GU I \WM 配置文件 抗锯齿功能 , 优化 L C D 边缘模糊效果 单色及灰度显示的颜色转换程序 彩色显示的颜色转换程序 / C GU I内核 μ 多种字体文件 L C D 硬件驱动文件 内存设备支持 , 防止在画图时产生抖动 触摸屏支持 ( 只支持模拟的触摸屏 ) 窗口控件库 窗口管理器
/ 1 C G U I结构框架 μ
/ 1. 1 μ C G U I的文件组织
/ 其中较为重要的 C GU I软件采用模块化组 织 架 构 , μ 文件目录是配置文件目录 C 和 o n f i I库文件目录 。 考 g GU / 虑到未来升级方 便 , 建议保持 μ C GU I原 有 的 目 录 结 构 , 这样升级到新版本时只要覆盖原文件目录即可 , 而不 会 改 变整个工程的文件路径 。 / 它提供了丰 C GU I是一个源代码开放 的 图 形 系 统 , μ 包 括 二 维 绘 图 库, 多 字 体、 可 扩 充 的 字 符 集, 富的资源 ,
STM32平台的μC/GUI移植与图形界面设计

STM32平台的μC/GUI移植与图形界面设计摘要:μC/GUI是一种专为嵌入式应用设计的通用图形接口软件。
本文详细介绍了μC /GUI的结构框架和基于STM32平台的μC/OS-II上的μC/GUI移植过程,并在此基础上进行图形界面设计;阐述了μC/GUI的窗口管理机制,提出了实现μC/GUI中文小型字库的两种方法并采用存储设备解决了图形显示的闪烁问题。
关键词:μC/GUI移植;STM32平台;图形界面;中文小型字库;存储设备引言嵌入式系统的图形用户界面,要求具有占用资源少、性能高、可靠性高、可移植、可配置等特点,μC/GUI就是这样一种专门为嵌入式应用设计的图形用户界面软件。
μC/GUI 可应用于多任务环境中,同时使用实时操作系统与μC/GUI,既可以发挥优先级的实时性,又能实现良好的人机界面。
本文使用Cortex-M3内核的STM32平台,介绍了基于STM32平台的μC/OS-II上的μC/GUI移植过程,并在此基础上开发了基于μC/GUI的图形用户界面。
1 μC/GUI结构框架1.1 μC/GUI的文件组织μC/GUI软件采用模块化组织架构,其中较为重要的文件目录是配置文件目录Config和GUI库文件目录。
考虑到未来升级方便,建议保持μC/GUI原有的目录结构,这样升级到新版本时只要覆盖原文件目录即可,而不会改变整个工程的文件路径。
μC/GUI是一个源代码开放的图形系统,它提供了丰富的资源,包括二维绘图库,多字体、可扩充的字符集,Unicode,位图显示,多级RGB颜色管理及灰度处理调整机制,动画优化显示,具有Windows风格的对话框和预定义控件(按钮、编辑框、列表框、进度条、单选复选框、滑动条等);同时,支持键盘、鼠标、触摸屏等输入设备和双LCD的输出,提供占用极少RAM的窗口管理体系。
各个子目录的路径及功能支持如表1所列。
1.2 μC/GUI的层次结构μC/GUI内核提供多种图形显示功能,用户程序通过API函数接口调用μC/GUI函数库中的各个功能函数,然后各个功能函数通过调用硬件驱动实现图形界面显示。
stm32之UCGUI3.90a移植教程-裸奔-不带触摸版本_V1.0

uCGUI3.90a移植教程声明:本教程是作者学习uCGUI过程中的笔记,最后整理出来,献给初学者,旨在带领初学者入门uCGUI,仅供学习之用,不得用于商业。
如需转载,请注明出处。
作者:Stone_up时间:2013-08-01版本:V1.0说明平台: stm32f103zet6 TFTLCD型号: 2.8寸9341控制器ucgui源码: 3.90a版本触屏:不带触屏(后续更新)操作系统:不支持移植教程一、准备工作:(一)源码:准备3.90版本的UCGUI源码注:如果需要跑GUIDEMO,那么还需准备GUIDEMO源码。
(二)LCD底层驱动:准备LCD屏的底层驱动,接口函数如下:1、设置坐标点;static void lcd_set_cursor(u16 xpos, u16 ypos);2、在指定点画指定颜色的点;void lcd_set_point(u16 xpos, u16 ypos, u16 color);3、读取某个点的颜色值;u16 lcd_get_point(u16 x, u16 y);4、在指定区域填充颜色(开窗口的方式,速度更快);void lcd_window_fill(u16 sx, u16 sy, u16 ex, u16 ey, u16 color);5、LCD屏初始化(主要是出厂初始化代码);void ili9341_initialize(void);注:这里列出了和UCGUI的接口函数,这些函数的具体实现需要根据自己的LCD屏具体实现这些函数。
二、移植过程(一)把UCGUI源码copy到自己的工程中,UCGUI文件夹下面,方便管理;(二)添加UCGUI源码到工程中,放在对应的组下面,方便管理,如图:(三)添加头文件路径,如图:(四)打开GUI_Config文件夹,编辑GUIConf.h文件,内容如下:#define GUI_OS (0)#define GUI_SUPPORT_TOUCH (0)#define GUI_SUPPORT_UNICODE (1)#define GUI_DEFAULT_FONT &GUI_Font6x8#define GUI_ALLOC_SIZE 40*1024#define GUI_WINSUPPORT 0#define GUI_SUPPORT_MEMDEV 1#define GUI_SUPPORT_AA 1(五)打开GUI_Config文件夹,编辑LCDConf.h文件,内容如下:#define LCD_XSIZE (320)#define LCD_YSIZE (240)#define LCD_BITSPERPIXEL (16)#define LCD_CONTROLLER (-1)#define LCD_FIXEDPALETTE (565)#define LCD_SWAP_RB (1)#define LCD_INIT_CONTROLLER() ili9341_initialize();(六)打开GUI_LCDDriver文件夹,编辑LCDDummy.c文件,内容如下:1、先添加LCD驱动文件的头文件,以便下面函数调用;如:#include "tftlcd.h"2、确保#if (LCD_CONTROLLER == -1) \&& (!defined(WIN32) | defined(LCD_SIMCONTROLLER))中的LCD_CONTROLLER == -1 ,和LCDConf.h中的宏定义对应3、在void LCD_L0_SetPixelIndex(int x, int y, int PixelIndex) 函数最后一行添加如下语句:lcd_set_point(xPhys, yPhys, PixelIndex);4、在unsigned int LCD_L0_GetPixelIndex(int x, int y) 函数return语句之前添加如下语句:PixelIndex = lcd_get_point(x, y);5、现在回到main函数1)添加头文#include "GUI.h"#include "GUIDEMO.h"2)在main函数中先调用必要的初始化函数后,再调用GUI_Init(); 函数,这个函数会调用LCD屏的初始化函数3)为了测试UCGUI是否初始化成功,我们先调用几个函数试试,在GUI_Init();下面接着调用如下函数:GUI_SetBkColor(GUI_BLACK);GUI_SetColor(GUI_RED);GUI_Clear();GUI_SetFont(&GUI_Font24_1);GUI_DispStringAt("- - uCGUI disp Function sample - -",4,10);// 延时3s,方便观看结果delay_ms(1000);delay_ms(1000);delay_ms(1000);看看是否把LCD刷成黑色,是否显示红色字符串4)然后再while循环中调用GUIDEMO_main(); 函数,开始运行GUIDEMO(七)定时器中断配置,给UCGUI系统一个时钟(个人观点,仅供参考),否则GUIDEMO程序无法运行1、在这里用定时器2,所以需要配置定时器和NVIC中断,配置函数大家就自己做了,只是这里的定时器配置成2KHz的频率,如果想要界面变化快点,那么提高频率即可;然后我们进入定时器2的中断函数,首先在stm32f10x_it.c 文件中加入外部变量声明extern volatile int OS_TimeMS; 然后加入定时器2中断函数,如下:void TIM2_IRQHandler(void){if ( TIM_GetITStatus(TIM2 , TIM_IT_Update) != RESET ){TIM_ClearITPendingBit(TIM2 , TIM_FLAG_Update);OS_TimeMS++;if(OS_TimeMS%20==0){//GUI_TOUCH_Exec(); // 不带触摸不需要这条语句}} }后记作者新浪博客:/s/blog_9763553701018h2h.html技术讨论QQ:2898295180如有bug,恳请指出,欢迎各位网友一起讨论,一起进步,祝大家学业有成。
(转载)在STM32上移植ucGUI之触摸屏

在STM32上移植ucGUI之触摸屏(2013-07-0809:16:33)之前的三篇文章分别介绍了如何在STM32裸机上移植ucGUI,移植ucGUI源例程以及ucGUI的存储设备和抗锯齿。
现将STM32裸机上移植ucGUI触摸屏的过程详述如下:1、将正点原子的《触摸屏移植实验》中HARDWRAE/TOUCH目录复制到已经建立好的ucGUI工程目录的HARDWARE文件夹下,并添加touch.c文件和头文件路径。
2、打开ucGUI工程中的GUIConf.h文件,将其中的GUI_SUPPORT_TOUCH和GUI_WINSUPPORT总开关打开。
如下所示:#define GUI_SUPPORT_TOUCH1#define GUI_WINSUPPORT1此时编译程序,会出现四个函数未定义的错误。
3、在GUI_X中添加文件GUI_X_Touch.c,此时编译工程错误消失。
4、在GUI_X_Touch.c中添加预处理命令#include“touch.h”。
然后将其中的GUI_TOUCH_X_MeasureX和GUI_TOUCH_X_MeasureY两个函数改为如下所示的形式:int GUI_TOUCH_X_MeasureX(void){u16x,y;Read_ADS2(&x,&y);return x;}int GUI_TOUCH_X_MeasureY(void){u16x,y;Read_ADS2(&x,&y);return y;}5、由于是在裸机上运行ucGUI程序,对话框程序会阻塞当前进程的执行。
所以需要在定时器中断中不断的去扫描触摸屏的状态。
设置定时器10ms中断一次,在定时器中断处理函数中加入GUI_TOUCH_Exec()语句。
6、在主函数中加入初始化定时器和触摸屏,并在GUI_Init()函数之后加入GUI_CURSOR_Show函数以显示指针。
7、以上就完成了触摸屏的移植操作,下面对触摸屏的工作状态进行配置。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
emWin 5.22 (uCGUI) 图形用户接口移植实例——STM32
作者:Ach
日期:2013年12月29日
联系方式:ox000008@
1.概要
移植图形用户接口的好处是不言而喻的。
本文图文并茂地介绍了一个emWin 5.22(uCGUI)的移植实例。
文章具体分为emWin简介,硬件平台简介,开发环境及项目简介,移植过程以及总结几个部分。
2.emWin简介
emWin是一种高效的而图形用户界面,是我们能够摆脱处理器和显示控制器而更专注于GUI的设计。
这里借用STemWin的一幅图来说明emWin的作用和结构。
它通过LCD及GUI的配置来驱动底层硬件,而应用程序又是通过调用emWin来实现各种GUI。
5.22版的emWin带有许多常用的显示控制器的驱动(在参考手册Display Driver一章中有详细介绍),因此为我们移植带来了诸多方便。
emWin的更详细的内容可参照它的参考手册。
图1. emWin在项目中的结构
3.硬件平台简介
笔者使用的是一块以STM32F103VET6为核心的ARM开发板,没有外部的SRAM及Flash。
显示屏为2.8”320*240的彩色液晶屏,屏的驱动芯片为ILI9341(emWin 5.22带有它的驱动)。
屏与CPU 的连接方式为该ARM核心所特有的FSMC_SRAM方式,访问LCD内容时操作就如同读写SRAM一样方便。
如果你想使用其它硬件平台来移植emWin,本文亦有一定的参考价值。
希望本文能助你成功移植emWin。
图2. 硬件平台
4.开发环境简介
笔者所使用的开发软件为MDK-ARM 4.70。
项目模板使用的是STemWin库中的(可从ST官方下载)。
图3. 项目截图
如图,项目下面有3个文件夹,其中Appli存放的是应用层的程序,第二个文件夹就如文件名,存放了emWin5.22所有部件,第三个文件夹存放了一些STM32及其它的库。
具体见附件。
5.移植过程
有了MDK-ARM以及STemWin库,整个移植过程应该比较简单。
STemWin中有4个文件夹,第一个可以不用看了,Libraries中包含所有需要的库(其中包含emWin5.22),Project中存放工程文件,Utilities中是一些应用文件。
为了保持代码及工程结构的格式统一,我们尽量套用原有的格式。
下面开始一步步的移植工作。
5.1 项目配置
打开Project文件夹,看到众多STM32的开发板文件夹。
如果你有相应的板子,就不用修改直接用。
我使用的是STM32F103核心的板子,因此我选了STM3210E-EVAL为模板,取名TEST(自取)。
打开该文件夹,里面有2个文件夹,分别为RTOS和Standalone,RTOS是带操作系统的。
我们打开Standalone,其中有6个文件夹,分别为Config、Demo、EWARM、MDK-ARM、TrueSTUDIO及User,具体的不一一介绍了。
打开MDK-ARM,我们要的工程文件就在其中了。
打开工程,先点击如图左边红圈处编译一下,工程应该是没有错误的。
然后根据你所使用的硬
件开发环境点击右边红圈处配置一下项目。
点击Device标签设置器件,我应该选STM32F103VE。
点击Output标签,勾选左边红圈处,编译后会输出HEX文件,当然你也可以改一下右边红圈内的名字。
点击Debug标签,设置调试信息,选择你的调试工具即可,不详细介绍了。
点击Utilities标签,我的设置如图。
为了可以直接在项目中向开发板烧录程序,我们点Settings设置一下,我的设置如下图,其中添加了如图的片上Flash编程算法。
点击OK设置完毕。
5.2 程序修改
准备工作已经完成,接着要根据模板进行修改了。
看一下Appli中的main主程序,如下。
先看“BSP_Init();”,这是开发板的初始化程序,我们先把它注释掉,然后在后面加上下面的语句,因为需要用到CRC模块。
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC, ENABLE);
接着我们修改LCD和GUI配置文件。
先是LCDConf_stm3210e_eval.c,修改显示屏大小,我的不用改了。
#define XSIZE_PHYS 240
#define YSIZE_PHYS 320
修改接口寄存器地址,我的如下。
这里说明一下,我的是用FSMC_SRAM接口的,和官方开发板类似。
如果你用得是其它接口,在emWin参考手册Display drivers -> CPU / Display controller interface 中有对硬件接口的详细叙述,它吧接口分为直接和间接两种,我们用的嵌入式系统一般是间接的接口。
查找是否有我们所使用的显示芯片的驱动,然后参考手册进行相应的操作。
我使用的ILI9341驱动在GUIDRV_FLEXCOLOR中有。
// COG interface register addr.
//
#define LCD_BASE ((uint32_t)(0x60000000 | 0x00000000))
#define LCD_REG_ADDRESS (*(volatile U16*)LCD_BASE)
#define LCD_DATA_ADDRESS (*(volatile U16*)(LCD_BASE + 0x20000))
Local functions那一段我就不用改了。
Public functions中有两个接口函数LCD_X_Config和LCD_X_DisplayDriver。
LCD_X_Config,驱动为GUIDRV_FLEXCOLOR,颜色为16位GUICC_565转换方式。
pDevice = GUI_DEVICE_CreateAndLink(GUIDRV_FLEXCOLOR, GUICC_565, 0, 0);
Set controller and operation mode,将一些显示驱动用的函数传递给PortAPI。
再通过函数GUIDRV_FlexColor_SetFunc进行设置,查看参考手册GUIDRV_FlexColor段,ILI9341 驱动在GUIDRV_FLEXCOLOR_F66709中,接口形式为GUIDRV_FLEXCOLOR_M16C0B16。
PortAPI.pfWrite16_A0 = LcdWriteReg;
PortAPI.pfWrite16_A1 = LcdWriteData;
PortAPI.pfWriteM16_A1 = LcdWriteDataMultiple;
PortAPI.pfReadM16_A1 = LcdReadDataMultiple;
GUIDRV_FlexColor_SetFunc(pDevice,&PortAPI,GUIDRV_FLEXCOLOR_F66709,GUIDRV_FLEXCOLOR_M16C0B16);
最后一个函数LCD_X_DisplayDriver,把“STM3210E_LCD_Init();”改成你的初始化程序即可,当然,在前面要把需要的头文件包含进去。
至此,我们把LCD配置改完了。
GUIConf_stm3210e_eval.c,程序主要是为GUI分配可以的内存。
对于这里,我只能理解给它分配足够大的内存可以让现实更流畅。
由于我板上的内存有限,总共64KB,后面GUIDEMO还要用内存,所以分配16KB给它。
// Define the available number of bytes available for the GUI
//
#define GUI_NUMBYTES (1024) * 16 // x KByte
接着,修改Appli中的GUIDEMO.h文件,看Configuration of modules to be used段,配置我们要运行的模块。
我们先试前面3个模块,其它都关掉(设为0)。
内存小的话不要开太多了,否则内存不够用。
至此,程序已经基本修改完毕,重新编译程序,修改错误之处直至编译通过,下载程序到开发板。
演示画面已经显示,但是,画面为什么停在那里呢?我们再回来看main中的“BSP_Init();”函数。
它里面包含了一个非常重要的东西,我们在函数名上点击右键,选择“Go To Definition Of ‘BSP_Init’”查看该函数的定义。
其中包含了“SysTick_Config(SystemCoreClock / 1000);”,即对SysTick的配置,它就像人的心跳一样,是系统运行的钟摆。
它被配置为1ms产生一个中断。
在stm32xxx.it中,有一个“SysTick_Handler”中断处理函数,“OS_TimeMS ++;”即实现了emWin 的运行。
我们把不需要的都注释掉,然后编译工程,下载到开发板。
至此,emWin已经能够在目标板上运行。
6.总结
移植emWin只是一个开始,还有更多的奥秘等待我们去探索,相信只要我们能够努力,一定能开发出漂亮的界面。
注:文中的项目较大,如有需要,邮me!同时欢迎交流指正。
完成时间2013年12月30日
Ach#。