基于STM32的uCGUI移植手册
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。
奋斗STM32开发板基于ucos2.86a ucGUI3.90的2.4G通信模块NRF24L01例程手册
奋斗版 STM32 开发板例程手册———基于 ucOSII ucGUI 的 2.4G 无线通信模块 NRF24L01+例程手册基于 ucOSII ucGUI 的 2.4G 无线通信模块 NRF24L01+例程手册嵌入式实时操作系统 uCosII 是由美国工程师 Jean brosse 所创,它在中国的流行源 于那本被邵贝贝引进翻译的著名书籍《嵌入式实时操作系统 uCos-II》 ,这本书是学习 ucosII 的宝典,虽然很厚,但理解了关键概念,再结合实际应用例程,还是很容易看懂的。
uCosII 通过了美国航天管理局(FAA)的安全认证,可以用于飞机、航天器与人性命攸关的控制系 统中。
也就是说,用户可以放心将 uCosII 用到自己的产品中, ucGUI 也是 Micrium 公司的 产品, 在本例程里使用了 ucGUI3.90 版本,它为嵌入式应用提供了功能强大的图形用户接 口,使得用户在开发具有人机界面的应用时,可以很方便做出复杂精致的用户显示界面。
并 提供了交互的接口。
uCOSII 特点:可移植性:uCosII 源码绝大部分是用移植性很强的 ANSI C 写的。
与微处理硬件相关的部分是用汇编语言写的。
uCOS 可以在 绝大多数 8 位、16 位、32 位以及 64 位处理器、微控制器及数字信号处理器(DSP)上运行。
可裁剪性:可以通过开关条件编译选项,来定义哪些 uCosII 的功能模块用于用户程序,方便控制代码运行所占用的空间及内存。
可剥夺性:uCOSII 是完全可剥夺型的实时内核,它总是运行处于就绪状态下的优先级最高的任务。
多任务:uCOSII 可以管理 64 个任务,每个任务对应一个优先级,并且是各不相同。
其中 8 个任务保留给 uCOSII。
用户的应用 程序可以实际使用 56 个任务。
可确定性:绝大多数 uCosII 的函数调用和服务的执行时间具有可确定性,也就是说用户总是能知道函数调用与服务执行了多长 时间。
ucos基于stm32上的移植
ucos-ii和ucgui基于stm32上的移植uc/os-ii移植笔记os_cpu.h与编译器相关的数据类型typedef unsigned char BOOLEAN;typedef unsigned char INT8U; /* Unsigned 8 bit quantity */ typedef signed char INT8S; /* Signed 8 bit quantity */ typedef unsigned short INT16U; /* Unsigned 16 bit quantity */ typedef signed short INT16S; /* Signed 16 bit quantity */ typedef unsigned int INT32U; /* Unsigned 32 bit quantity */ typedef signed int INT32S; /* Signed 32 bit quantity */ typedef float FP32; /* Single precision floating point*/ typedef double FP64; /* Double precision floating point */ typedef unsigned int OS_STK; /* 堆栈类型为32位 Each stack e ntry is 32-bit wide */typedef unsigned int OS_CPU_SR; /* Define size of CPU status r egister (PSR = 32 bits) */与ARM 处理器相关的代码#define OS_CRITICAL_METHOD 3 //进入临界段的方法#if OS_CRITICAL_METHOD == 3#define OS_ENTER_CRITICAL() {cpu_sr = OS_CPU_SR_Save();} //关中断#define OS_EXIT_CRITICAL() {OS_CPU_SR_Restore(cpu_sr);} //开中断#endif#if OS_CRITICAL_METHOD == 3OS_CPU_SR OS_CPU_SR_Save(void);void OS_CPU_SR_Restore(OS_CPU_SR cpu_sr);#endifvoid OSCtxSw(void);void OSIntCtxSw(void);void OSStartHighRdy(void);设置堆栈的增长方向#define OS_STK_GROWTH 1 /*堆栈由高地址向低地址增长*/OS_CPU_C.C用C 语言编写六个操作系统相关的函数OS_STK *OSTaskStkInit ( void (*task)(void *p_arg),void *p_arg,OS_STK *ptos,INT16U opt){OS_STK *stk;(void)opt; /* 'opt' is not used, prevent warning */stk = ptos; /* Load stack pointer */ /* Registers stacked as if auto-saved on except ion */*(stk) = (INT32U)0x01000000L; /* xPSR */*(--stk) = (INT32U)task; /* Entry Point */*(--stk) = (INT32U)0xFFFFFFFEL; /* R14 (LR) (init value will caus e fault if ever used)*/*(--stk) = (INT32U)0x12121212L; /* R12 */*(--stk) = (INT32U)0x03030303L; /* R3 */*(--stk) = (INT32U)0x02020202L; /* R2 */*(--stk) = (INT32U)0x01010101L; /* R1 */*(--stk) = (INT32U)p_arg; /* R0 : argument *//* Remaining registers saved on process stac k */*(--stk) = (INT32U)0x11111111L; /* R11 */*(--stk) = (INT32U)0x10101010L; /* R10 */*(--stk) = (INT32U)0x09090909L; /* R9 */*(--stk) = (INT32U)0x08080808L; /* R8 */*(--stk) = (INT32U)0x07070707L; /* R7 */*(--stk) = (INT32U)0x06060606L; /* R6 */*(--stk) = (INT32U)0x05050505L; /* R5 */*(--stk) = (INT32U)0x04040404L; /* R4 */return (stk);}void OSTaskCreateHook (OS_TCB *ptcb) {ptcb=ptcb;//防止编译时出现警告 }void OSTaskDelHook (OS_TCB *ptcb) { ptcb=ptcb;//防止编译时出现警告 } void OSTaskSwHook (void)void OSTaskStatHook (void)void OSTimeTickHook (void)后5 个函数为钩子函数,可以不加代码。
STM32自学笔记之uCGUI移植总结
uCUI移植总结做了两个星期终于把gui搞通了,现将移植方法总结如下,仅供学习交流之用。
2014/8/23一、uCGUI移植步骤1、uCGUI及TFT驱动文件准备(1)将TFT驱动文件ili9320.h、ili9320.c 及其字体文件ili9320_font.h 复制至keil 工程模板的文件夹中;(2) 准备好uCGUI源文件(本例使用的版本3.90a),将START 文件夹下的GUI 文件夹全部复制到keil 工程模板的文件夹中;再将START 文件夹下的Config 文件夹复制至GUI 文件夹下;最后将Sample 文件夹下GUI_X 中的GUI_X.c 复制到Config 文件夹中。
最终文件结构如图1-1所示:图1-12、添加文件至工程,文件目录结构组如图2-2示:图2-1在添加文件时应注意uCGUI下除了gui_config 下需要添加所有的.h 头文件外其余所有均不需要添加头文件;图2-23、GUI配置(1)G UIConf.h配置:#define GUI_OS (0) /*编译多任务支持#define GUI_SUPPORT_TOUCH (0) /* 触屏支持*/#define GUI_SUPPORT_UNICODE (1) /*支持ASCII/UNICODE码*/ #define GUI_DEFAULT_FONT &GUI_Font6x8 /*初始化字体大小*/#define GUI_ALLOC_SIZE 5*1024 /*开辟动态空间大小*/图3-1注意:动态空间受芯片容量大小制约,不可开辟过大,否则报错图3-2(2) LCD 相关文件配置:LCDConfig.h 的配置#define LCD_XSIZE (320)#define LCD_YSIZE (240) /*x,y方向像素设置*/#define LCD_BITSPERPIXEL (16) /*像素位数*/#define LCD_CONTROLLER 9320 /*LCD驱动器型号*/图3-3继续修改第110行#define LCD_INIT_CONTROLLER() ili9320_Initializtion()并将其后的语句注释掉。
基于STM32F103移植uCGUI详细说明
STM32平台移植uCGUI详细说明v1.0硬件平台:盘古UE-STM32F103开发板软件平台:RVMDK_v4.20 + uCOS-II_v2.86 + StmLib_v3.5 + uCGUI_v3.9联系方式:淘宝店铺:文档作者:合嵌电子科技有限公司uCGUI是一种嵌入式应用中的图形支持系统.它设计用于为任何使用LCD图形显示的应用提供高效的独立于处理器及LCD控制器的图形用户接口,它适用单任务或是多任务系统环境, 并适用于任意LCD控制器和CPU下任何尺寸的真实显示或虚拟显示。
它的设计架构是模块化的, 由不同的模块中的不同层组成, 由一个LCD驱动层来包含所有对LCD的具体图形操作, uCGUI可以在任何的CPU上运行, 因为它是100%的标准C代码编写的。
uCGUI能够适应大多数的使用黑白或彩色LCD的应用, 它提供非常好的允许处理灰度的颜色管理.还提供一个可扩展的2D图形库及占用极少RAM的窗口管理体系.移植准备本文档基于盘古STM32F103开发板进行uCGUI的移植实验,移植的软件基础为RVMDK_v4.20 + uCOS-II_v2.86 + StmLib_v3.5。
具体uCOS-II的移植过程请参见文档《STM32平台移植uCOS-II详细说明》,在移植最后,将通过uCOS-II创建进程运行uCGUI自带DEMO代码,以熟悉其运行流程。
1. 打开盘古UE-STM32F103光盘中的基础例程:27_uCOS-II移植由于此例程已经移植完成uCOS-II_v2.86,因此直接在此基础移植就可以,此例程文件结构如下:2. 下载uCGUI_v3.9源码解压后,有如下文件结构其源代码主要在start文件夹下,Sample是官方制作的一个Demo例程,我们一会再移植的过程中,需要用到里面的文件,这儿跳过,以下是对start作出简介:3.这3关于1.2.3. 在4. 对例程的工程名和输出文件名等进行相应的修改。
STM32如何移植uCGUI,看这里!
STM32 如何移植uCGUI,看这里!
第一部分:在UCGUI 移植之前
在移植之前,首先要了解在网上下的UCGUI 3.98 源码的文件结构是。
UCGUI 3.98 源码中有三个文件夹:
1)tool 文件夹是用来使用一些uCgui 的上位机程序,基本都是字体和模板查看之类的.
2)sample 文件夹下面是已经别人帮你写好了很多有用的东西,像跟操作系统有关的GUI_X 或者一些模板(后面我们会用到的自己定义的Demo),或者是gui 配置.后面再一一详细叙说这个文件夹的功能.
3)Start 文件夹里面,这是我们最主要的文件夹.里面就包含了uCGUI 的源代码,uCGUI 的作者把源代码放进vc 里面进行编译了(当然,这是用标准C 语言写的程序,所以我们可以放在任何c 语言平台下编译而不会担心兼容性问题,这个uCGUI 在这方面做的算是完美了),所以,我们可以在vc 平台下写界面,然后再把代码拷进我们的下位机编译器进行编译,这样子效率就会非常高了。
Start 文件夹目录内容:
Config,配置文件;。
基于STM32嵌入式系统的uCGUI移植与实现
图 1 STM3在 STM32 处理器与 FY70 - 8048 - 65K LCD 控制器 上移植 UCGUI 的第一步工作是对配置头文件的修改, 根据硬件电路的连接, 以及所连接的 LCD 控制器的具 体情况, 修改配置头文件的相关内容 。具体如下: GUIConf. h 文件用于配置 UCGUI 自身: define GUI_OS ( 1 ) / * 支持多任务操作系统( UCOSII) * / define GUI_SUPPORT_TOUCH ( 1 ) / * 支持触摸屏( 需窗口管理器的支持) * / define GUI_SUPPORT_UNICODE ( 1 ) / * 支持 UNICODE 字符串* / define GUI_DEFAULT_FONT &GUI_Font6x8 / * 定义默认字体 * / define GUI_ALLOC_SIZE 5000 / * 为窗口管理器及内存设备分配的 RAM * / define GUI_WINSUPPORT 1 / * 窗口管理器有效 * / define GUI_SUPPORT_MEMDEV 1 / * 内存设备有效 * / define GUI_SUPPORT_AA 1 / * 抗锯齿有效 * / LCDConf. h 文件用于配置 LCD 控制器: define LCD_XSIZE ( 800 ) / * 定义 LCD 屏幕宽度 * / define LCD_YSIZE ( 480 ) / * 定义 LCD 屏幕高度 * /
[3 ]
。
1. 2 目录结构 uCGUI 图形接口采用源代码方式提供, 理解其目录 结构, 对于完成 UCGUI 图形接口的移植是非常重要的 。 uCGUI 图形接口由 Config 配置目录和 LIB 库函数 目录组成 。Config 配置目录中包括 3 个配置头文件, 分 LCD 控制器和触摸 别用于配置 uCGUI 图形接口自身 、 LCDConf. h、 GUITouchConf. h 。 屏, 文件名为 GUIConf. h 、 LIB 库函数目录中又分为多个子目录, 用于实现核 LCD 驱动程序 、 调色板 、 触摸屏驱动程序 、 窗口控件 、 心、
基于STM32单片机移植μcgui总结
基于STM32单片机移植μcgui总结因为上一个题目的界面是自己一个一个点打到屏幕上去的,计算过程相当恶心,所以这两天赶紧弄了一下μCGUI,希望对后面的人机交互界面的设计有所帮助。
说实话,我对于人机交互界面的设计真心没什么的灵感,上次赵颖老师就委婉的表达了这个意思,我也深刻的意识到了这个问题,就是设计的界面相当普通,没有给人一种眼前一亮的感觉。
首先感谢队友王绥学给我提供的资料,因为自己电脑运行各种大型软件实在是太卡,所以这个暑假把女朋友电脑留下,不过资料都在另外一台电脑中,需要的资料就给队友要,十分的感谢啊!按照教程一步一步的做下来,前面几步关于GUI 的参数设置没什么问题,无非是用到的功能将其参数置1,用不到的功能将其参数置0,但是在最后一步中,就是将自己的LCD 底层驱动与μCGUI 连接起来,这里出现了问题,开始的时候编译总是出错,耗费了我一个上午的时间啊,以为是新版本的keil不兼容造成的,然后从4.72 版本直接降至3.8 版本,可是又出现了同样的问题,各种变量的undefined。
下午到了实验室,开始认真的阅读排查代码,然后终于一句话让我眼前一亮:#ifndef LCD_H(各种参数定义)#endif。
因为我自己的驱动文件中定义了一个LCD_H,所以造成上面的一部分代码在编译的时候就跳过没有编译,才造成了各种参数的未定义,删除了LCD_H 还有LCD_W 之后,果断的通过了编译,然后下载之后在屏幕上看到了显示的内容。
接下来就是优化代码,因为μCGUI 是一个通用的图形软件库,所以也就再所难免它还有可优化的地方,尤其是刷屏的速度上,如果是整屏刷新的话,可以很明显的看出来进度,很慢。
首先,是把自己驱动的TFT_Point()函数的代码直接复制到μCGUI 的画点函数中,因为如果是在μCGUI 的画点。
STM32移植UCGUI3.90笔记
STM32移植UCGUI3.90笔记在MDK环境下,终于将3.90版本的UCGUI移植到STM32下了,在网上看到的都是例程代码,很少看到有关于在STM32下移植UCGUI的教程方法,为了方便大家,特写此移植方法,大家可以借鉴(有错误之处,望大家指点出来共同讨论!)移植步骤:第一步:首先,得把你的TFT底层驱动写好,既在裸机下,可以正常显示。
第二步:加入UCGUI程序包。
第三步:配置LCDConf.h GUIConf.h GUITouchConf.h(由于我的液晶不带触摸功能,此配置在此不讲。
)配置LCDConf.h文件如下:#ifndef LCDCONF_H#define LCDCONF_H#define LCD_XSIZE (160) //配置TFT的水平分辨率#define LCD_YSIZE (128) //配置TFT的垂直分辨率#define LCD_CONTROLLER (54124) //TFT控制器的名称#define LCD_BITSPERPIXEL (16) //每个像素的位数#define LCD_FIXEDPALETTE (565) //调色板格式#define LCD_SWAP_RB (0) //红蓝反色交换#define LCD_INIT_CONTROLLER() TFT_Init() ; //此处需要定义的是你的TFT 初始化函数#endif /* LCDCONF_H */配置GUIConf.h文件如下:#ifndef GUICONF_H#define GUICONF_H#define GUI_OS (1) //多任务#define GUI_SUPPORT_TOUCH (0) //触摸#define GUI_SUPPORT_UNICODE (1) //Unicode支持#define GUI_DEFAULT_FONT &GUI_Font6x8 //GUI默认字体#define GUI_ALLOC_SIZE 5000 //动态内存的大小#define GUI_WINSUPPORT 1 //窗口控件支持#define GUI_SUPPORT_MEMDEV 1 //支持内存设备#define GUI_SUPPORT_AA 1 /* Anti aliasing available */#endif /* Avoid multiple inclusion */第四步:最关键的一步。
(完整word)基于STM32的uCGUI移植和优化
基于STM32的uCGUI移植和优化首先在开始这个说明之前,要简要说明下具体的环境:编译工具:MDK4.20开发板:安富莱v2版开发板调试器:JLink v8盗版移植篇相信大家有移植经验的都知道,移植确实是一件非常墨迹的事情,怎么说呢,代码都是别人的,风格也是别人的,文件结构,定义之类都是别人的,看别人的东西是种进步,但是,也是一个痛苦的过程,因为有时候资料确实很少,而且有时候还是E文的,专业名词一大堆,我们根本没有办法想象工作量是多么的巨大.不过事情都是这样,你不懂他的时候他就像是巨山,但是一旦你理解他的时候,你才会感觉到原来他是那么的简单(从我的经验上来看,至少应该是这样的)。
好吧,闲话少说,我们就来开始我们的移植之旅把。
首先,我们需要准备的东西有uCGUI3.90,这个版本是大家现在用的比较多的,效率也比较高,别人都是这么评论的,至于其他版本的,我没有接触很多,所以不能过多评论。
uCGUI有三个文件夹,一个是tool,这个文件夹是用来使用一些uCgui的上位机程序,基本都是字体和模板查看之类的.在sample文件夹下面是已经别人帮你写好了很多有用的东西,像跟操作系统有关的GUI_X或者一些模板(后面我们会用到的自己定义的Demo),或者是gui配置.后面再一一详细叙说这个文件夹的功能。
在Start文件夹里面,这是我们最主要的文件夹。
里面就包含了uCGUI的源代码,uCGUI的作者把源代码放进vc里面进行编译了(当然,这是用标准C语言写的程序,所以我们可以放在任何C语言平台下编译而不会担心兼容性问题,这个uCGUI 在这方面做的算是完美了),所以,我们可以在vc平台下写界面,然后再把代码拷进我们的下位机编译器进行编译,这样子效率就会非常高了.(像51那时候写界面就是疯狂的一次一次的烧,真是纠结..).然后这里放的就是uCGUI的源代码了,在GUI文件夹下面.这则是每个文件夹的功能(参考uCGUI中文手册,ucgui。
stm32 UCGUI 完美移植
1/6/stm32-ucgui.html About Links Invite RssHome / Archive Trip Share E-Factory Findpark Quickweibo Mr.YongLan here is siri ..五十将相寻死路,生不认魂,死不认尸。
UCGUI是一种嵌入式应用中的图形支持系统。
它设计用于为任何使用LCD图形显示的应用提供高效的独立于处理器及LCD控制器的图形用户接口,它适用单任务或是多任务系统环境, 并适用于任意LCD控制器和CPU下任何尺寸的真实显示或虚拟显示。
它的设计架构是模块化的,由不同的模块中的不同层组成,由一个LCD驱动层来包含所有对LCD的具体图形操作。
UCGUI可以在任何的CPU上运行,因为它是100%的标准C代码编写的。
类似程序还有国产的一个MINIGUI (/zhcn/),MiniGUI 是一个自由软件项目。
其目标是提供一个快速、稳定、跨操作系统的图形用户界面(GUI)支持系统,尤其是基于 Linux/uClinux、eCos 以及其他传统 RTOS(如 VxWorks、ThreadX、uC/OS-II、Nucle us 等)的实时嵌入式操作系统。
有机会尝试下,支持下国产,毕竟国内这样的公司不多。
这里移植的UCGUI3.90a版本,虽然已经有更新的版本,比如UCGUI3.98、甚至4.04版本。
但是目前来说只有这个版本的代码是最全的,包括了J PEG , MULTILAYER , MEMDEV ,AntiAlias等模块。
一直想尝试做一个数码相册,JEPG模块自然少不了,所以移植了这个版本。
UCGUI390a 下载整个移植过程,让LCD显示图案倒是没花多少时间,资料也比较多,但是在移植触摸屏的时候卡了好几天,然后又是 UCGUI 指针图标 移动有重影(LCD读取像素颜色函数有问题)。
总之移植是个累人的活首先需要保证你的LCD驱动和触摸屏驱动是有效的,如果你的LCD也是ili93xx 控制器 XPT2046控制器的触摸屏可以参考 stm32 驱动 TFT LCD stm32 驱动 触摸屏 两篇文章UCGUI的文件数量很大,主要用到UCGUI390a/Start/Config 和 UCGUI390a/Start/GUI两个文件夹下文件,不过文件数量也已经很多了 。
UCGUI移植教程
UCGUI在STM32上移植教程1 说明l 开发板芯片型号STM32F103VET6l 板载液晶型号ILI9341l 所需准备资料UCGUI3.90源码源码l 一个工程模板一个工程模板为了节约时间,此处所用模板为野火M3工程模板(3.5.0)制作时间---2013-08-07 By NUAA---Kylin2 移植过程讲解2.1 首先打开工工程模板,页面如下,这个模板工程很简单2.2 在工程模板中新建两个文件夹2.2.1 命名为GUI与Mylib2.2.2 在GUI文件夹下添加以下内容l 上述图片为UCGUI3.90源码中的一些文件夹源码中的一些文件夹l 进入UCGUI3.90源码文件夹/Start,将Config文件夹原封不动的拷过来文件夹原封不动的拷过来l 进入UCGUI3.90源码文件夹/Start/GUI文件夹,将其中所有文件夹拷过来文件夹,将其中所有文件夹拷过来l 在GUI文件夹下新建GUI_X文件夹,进入UCGUI3.90源码文件夹/ Sample/ GUI_X文件夹中,如果带操作系统应该拷贝GUI_X_uCOS.c,如果不带操作系统拷贝GUI_X.c,在这里我们将将GUI_X.c拷贝到新建GUI_X文件夹。
文件夹。
2.2.3 各文件夹说明1) An Alias :9个C 文件,主要用于抗锯齿的显示效果。
文件,主要用于抗锯齿的显示效果。
2) ConvertColor :彩色显示的色彩转换支持。
:彩色显示的色彩转换支持。
3) ConvertMono :(b/w )和灰度显示的色彩转换支持。
)和灰度显示的色彩转换支持。
4) Core :核心文件,提供了GUI 基本的功能。
基本的功能。
5) Font :字库。
:字库。
6) JPEG :图片操作函数。
:图片操作函数。
7) LCDDriver :LCD 驱动程序驱动程序8) MenDev :Memorydevice 支持。
这个东西可用在很多情况下,这个东西可用在很多情况下,但最主要的功能是防止在但最主要的功能是防止在项目重叠时,防止屏幕的闪烁。
ucGUI--STM32--移植经验总结
单片机交流QQ群:166578859电子邮箱:jitao_yang@ 如果没有找到ucGUI没有提供你所使用的LCD驱动,看完本文章,定有大收获。
本教程是将ucGUI移植到STM32单片机。
LCD驱动器为HX8347。
为了教程有更大的通用性,LCD驱动程序未采用ucGUI官方提供。
编译环境为5.4。
本教程可作为其它单片机、LCD、编译环境的参考。
不足之处,敬请指出QQ:309223638单片机交流QQ群:166578859电子邮箱:jitao_yang@1解压“ucGUI-V3-90a----非常好用.rar”这个版本的优点:需要改动的地方少;编译时不会由于在Linux环境下编辑源代码,然后又拿回IAR环境编译造成大量“Warning[Pa050]:……”;LCD底层驱动获取方便,不依赖于ucGUI官方驱动。
顺次打开“uCGUI-V3-90a→UCGUI390a→Start”。
将Start文件夹下的Config和GUI 文件夹复制的自己所建立工程文件夹。
然后打开IAR,在Workspace中添加Config和GUI文件夹内容。
添加完后,如下图所示。
其中“FWLib”是我的工程中所需要的,属于多余项。
然后右击工程,打开Options,选择左侧的“C/C++Compiler”。
然后在右侧选择Preprocessor。
在“Additional include directories”下填写工程中Config和GUI文件夹路径。
Ex:$PROJ_DIR$\..\gui$PROJ_DIR$\..\gui\AntiAlias$PROJ_DIR$\..\gui\ConvertColor单片机交流QQ群:166578859电子邮箱:jitao_yang@ $PROJ_DIR$\..\gui\COnvertMono$PROJ_DIR$\..\gui\core$PROJ_DIR$\..\gui\Font$PROJ_DIR$\..\gui\JPEG$PROJ_DIR$\..\gui\LCDDriver$PROJ_DIR$\..\gui\MemDev$PROJ_DIR$\..\gui\MultiLayer$PROJ_DIR$\..\gui\Touch$PROJ_DIR$\..\gui\Widget$PROJ_DIR$\..\gui\WM$PROJ_DIR$\..\Config截图2配置GUIConf.hPS:一下配置,配置为“1”,启用;配置为“0”,不启用#define GUI_OS(0)/*是否加载操作系统*/#define GUI_SUPPORT_TOUCH(0)/*是否启用触屏支持*/#define GUI_SUPPORT_UNICODE(1)/*是否启用混合型ASCII/UNICODE编码*/ #define GUI_DEFAULT_FONT&GUI_Font8x16/*字体大小配置,参见手册*/ #define GUI_ALLOC_SIZE500/*应用于GUI的动态内存字节配置,不建议低于500;也不要配置太高,导致内存溢出*//***********************************************************************Configuration of available packages*/#define GUI_WINSUPPORT0/*窗口管理数据包支持*/#define GUI_SUPPORT_MEMDEV0/*存储设备支持*/#define GUI_SUPPORT_AA1/*抗锯齿。
UCGUI移植教程
UCGUI移植教程
1. 环境搭建:首先,需要准备开发板和相应的编译工具链。
可以选择使用适合的开发环境,例如Keil、IAR或者GCC等。
2.移植UCGUI的底层驱动:UCGUI的底层驱动负责和硬件进行通信,并提供一系列函数接口给上层应用。
通常需要编写底层驱动的源代码,并将其与UCGUI的库文件链接。
3.配置移植环境:UCGUI提供了一个配置文件,该文件包含了各种编译选项和参数设置,可以根据具体的硬件平台进行修改。
通过修改这些配置文件,可以让UCGUI适应不同的平台。
4.移植字体和图像资源:UCGUI支持多种字体和图像格式,但并不包含实际的字体和图像资源。
因此,需要将所需的字体和图像资源转换成UCGUI支持的格式,并将其添加到应用程序中。
5.界面设计和调试:UCGUI提供了一套界面设计工具,通常可以在PC 机上进行界面设计和调试。
可以使用该工具创建界面,并将其转换成C代码,然后添加到应用程序中进行测试和调试。
6.运行UCGUI应用程序:最后,将编写的应用程序与UCGUI的库文件进行链接,生成可执行文件。
将该可执行文件烧写至开发板并运行,即可看到UCGUI的界面效果。
以上是UCGUI的移植过程的基本步骤,具体的移植过程可能会因不同的硬件平台而有所不同。
在进行移植时,可以参考UCGUI提供的官方文档和示例代码,也可以参考其他人的移植经验和教程。
需要注意的是,UCGUI的移植过程可能会遇到一些问题,例如显示效果不符合预期、界面响应速度慢等。
这时候可以通过调试和优化来解决这些问题,例如检查驱动程序的正确性、优化界面渲染算法等。
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上移植ucGUI之触摸屏
在STM32上移植ucGUI之触摸屏之前的三篇文章分别介绍了如何在STM32 裸机上移植ucGUI,移植ucGUI 源例程以及ucGUI 的存储设备和抗锯齿。
现将STM32 裸机上移植ucGUI 触摸屏的过程详述如下:1、将正点原子的《触摸屏移植实验》中HARDWRAE/TOUCH 目录复制到已经建立好的ucGUI 工程目录的HARDWARE 文件夹下,并添加touch.c 文件和头文件路径。
2、打开ucGUI 工程中的GUIConf.h 文件,将其中的GUI_SUPPORT_TOUCH 和GUI_WINSUPPORT 总开关打开。
如下所示:1#define GUI_SUPPORT_TOUCH 1 /* Support a touch screen (req. win-manager) */2#define GUI_WINSUPPORT 1 /* Window manager package available */此时编译程序,会出现四个函数未定义的错误。
3、在GUI_X 中添加文件GUI_X_Touch.c,此时编译工程错误消失。
4、在GUI_X_Touch.c 中添加预处理命令#include “touch.h”。
然后将其中的GUI_TOUCH_X_MeasureX 和GUI_TOUCH_X_MeasureY 两个函数改为如下所示的形式:01intGUI_TOUCH_X_MeasureX(void) {02u16x,y;03Read_ADS2(&x,&y);04returnx;05}0607intGUI_TOUCH_X_MeasureY(void) {08u16 x,y;09Read_ADS2(&x,&y);10returny;11}5、由于是在裸机上运行ucGUI程序,对话框程序会阻塞当前进程的执行。
所以需要在定时器中断中不断的去扫描触摸屏的状态。
设置定时器10ms 中断一次,在定时器中断处理函数中加入GUI_TOUCH_Exec()语句。
参考基于stm32的ucosii系统移植
基于STM32的u/COS-II系统移植【摘要】本文硬件平台采用ARM公司基于ARMV7架构的Cortex-M3系列处理器STM32F103,利用安富来公司现有的开发板,移植一个基于u/COS-II操作系统的应用程序框架(系统移植);创建多个任务,并通过使用消息邮箱进行两个任务之间的通信。
本文重点是把u/COS-II系统移植到程序中来,进而把各个基本功能模块化,并划分为几个主任务,以便实现嵌入式系统的操作。
【关键字】u/COS-II STM32 系统移植消息邮箱串口通信【引言】随着人类社会经济的不断发展,科研领域不断的拓宽,嵌入式系统产品渐渐完善,并在全世界各行业得到广泛应用。
通过移植嵌入式操作系统,计算机可以更好地管理内存,并且在很大程度上提高系统的实时性。
本设计通过在STM32上移植u/COS-II操作系统,实现了流水灯闪烁,使用消息邮箱实现多任务间的通信,并通过串口将信息打印到PC终端等功能。
加深了笔者对嵌入式操作系统的理解。
【正文】1 U/COS-II的简介U/COS-II的前身是UCOS,最早出自于1992年美国嵌入式系统专家Jean brosse在《嵌入式系统编程》杂志的5月和6月刊上刊登的文章连载,并把UCOS的源码发布在该杂志的BBS上。
目前最新的版本:U/COS-lll已经出来,但是现在使用最为广泛的还是U/COS-II,本章我们主要针对U/COS-II进行介绍。
U/COS-II是一个可以基于ROM运行的、可裁减的、抢占式、实时多任务内核,具有高度可移植性,特别适合于微处理器和控制器,是和很多商业操作系统性能相当的实时操作系统(RTOS)。
为了提供最好的移植性能,U/COS-II最大程度上使用ANSI C语言进行开发,并且已经移植到近40多种处理器体系上,涵盖了从8位到64位各种CPU(包括DSP)。
U/COS-II是专门为计算机的嵌入式应用设计的,绝大部分代码是用C语言编写的。
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,恳请指出,欢迎各位网友一起讨论,一起进步,祝大家学业有成。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
STMI 移植手册(无 OS)
Revision V1.0
( 2013-08-05 )
Copyright © 2009-2014 福州芯嵌工作室 ALL rights reserved
1
芯嵌 stm32
Copyright © 2009-2014 福州芯嵌工作室 ALL rights reserved
5
芯嵌 stm32
芯嵌 STM32 用户手册修订记录
日期
版本 修改章节 修改描述
2013-08-05 1.00
全部
创建
作者 51smt32
Copyright © 2009-2014 福州芯嵌工作室 ALL rights reserved
本手册硬件平台是芯嵌 STM32 开发板,软件平台为 MDK3.8 版 本,使用 ST 官方固件库 V3.5 版以及 uC/GUI 源码 3.90 版。详情参 考芯嵌 stm32 开发板光盘,也可在芯嵌 stm32 官网下载获取。后续 会继续推出一系列提高型的教程,欢迎大家在我们论坛以及 QQ 群讨 论交流,一起进步。这里建议,大家提出的问题,越详细具体越好, 这样越有利于其他网友帮助回答问题。
版权声明
本手册版权归属福州芯嵌电子工作室(以下简称“芯嵌”) 所有,并保留一切权力。非经芯嵌同意(书面形式),任何 单位及个人不得擅自摘录本手册部分或全部内容,违者(我 们)公司将追究其法律责任。
Copyright © 2009-2014 福州芯嵌工作室 ALL rights reserved
2
芯嵌 stm32
6
芯嵌 stm32
目录
内容提要...........................................................................................................................................3 前 言.................................................................................................................................................4 手册的约定与更新........................................................................................................................... 5 目录...................................................................................................................................................7 第一章 准备工作.............................................................................................................................8 1.1 uC/GUI 源码获取....................................................................................................................... 8 1.2 集成开发环境 MDK..................................................................................................................8 1.3 硬件平台....................................................................................................................................8 1.4 J-Link 仿真器............................................................................................................................. 9 第二章 uC/GUI 介绍........................................................................................................................9 2.1 uC/GUI 特点............................................................................................................................... 9 2.2 uC/GUI 源码结构.................................................................................................................. 10 第三章 uC/GUI 移植.......................................................................................................................13 3.1 uC/GUI 移植思路..................................................................................................................... 13 3.2 uC/GUI 移植全跟踪................................................................................................................. 14 第四章 uC/GUI 的使用..................................................................................................................22 4.1 uC/GUI 常见 API 介绍.............................................................................................................22 4.2 制作自己的图形界面.............................................................................................................. 23 5 参考文献.....................................................................................................................................24 6 附 录...........................................................................................................................................24 6.1 ILI9341 初始化代码.................................................................................................................24
Copyright © 2009-2014 福州芯嵌工作室 ALL rights reserved
7
芯嵌 stm32
第一章 准备工作
为了更方便进行 uC/GUI 图形界面移植与编码,请务必认真对待如下工作。
1.1 uC/GUI 源码获取
本文档使用 uC/GUI 3.90 版本源码,请读者自行获取。也可以通过芯嵌 stm32 官网获取,链接:
本手册并非高手所写,相反,它非常适合刚刚接触 STM32 的初 学者学习 —— 只要读者具备 STM32 最基本的编码知识(比如 IO 口点灯控制和 LCD 初始化等),我们就有足够的信心来协助您一起完 成 uC/GUI 移植。同时,它也可作为嵌入式培训教材参考。
Copyright © 2009-2014 福州芯嵌工作室 ALL rights reserved
芯嵌 stm32 配套屏,朝上(面朝读者),上面是字符“2.8 TFT(320*240)”, 下面是插针(座)。此时,左上角是坐标原点(0, 0)。X 坐标,表示从左上角开始, 从左到右的列(240 列),Y 坐标,表示从左上角开始,从上到下的行(320 行)。
约定 3
虽然“文件夹”与“目录”是两个概念,但本文档中所提到的“文件夹”与 “目录”视为同一个意思。
内容提要
本手册较为详细地介绍如何基于 STM32 系列处理器进行 uC/GUI 界面的设计与编程(无操作系统 os 移植),使得 STM32 初学者对液 晶屏的编程不再停留在简单的字符显示,而是更进一步考虑如何 DIY 自己的图形界面。