基于STM32的UCGUI移植解析(新手入门)

合集下载

基于STM32的uCGUI移植手册

基于STM32的uCGUI移植手册
芯嵌 stm32

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

STM32 UCOS移植

STM32 UCOS移植

µC/OS‐II在STM32上移植学习主要学习micrium应用笔记AN‐1018需要移植的文件:OS_CPU.HOS_CPU_C.COS_CPU_A.ASM//OS_DBG.C1.OS_CPU.H访问临界代码方法OS_CRITICAL_MENTHOD#3笔记中的移植用了OS_CRITICAL_MENTHOD#3来访问临界代码。

******************************************************************************* #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******************************************************************************* 以上是相关的程序片段。

如果应用程序中用了这两个宏,那么要定义一个局部变量并初始化为0,如OS_CPU_SR cpu_sr = 0;那OS_CPU_SR_Save()和OS_CPU_SR_Restore()具体做了什么呢?******************************************************************************* OS_CPU_SR_SaveMRS R0, PRIMASK ; Set prio int mask to mask all (except faults)CPSID IBX LROS_CPU_SR_RestoreMSR PRIMASK, R0BX LR******************************************************************************* 以上是OS_CPU_SR_Save()和OS_CPU_SR_Restore()程序片段。

uCGUI在stm32内核上的移植

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之触摸屏

在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平台的μC/GUI移植与图形界面设计

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

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移植总结

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详细说明

基于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,看这里!

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移植与实现

基于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总结

基于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笔记

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 */第四步:最关键的一步。

Uip+Stm32移植问题总结-ChangingsBlog

Uip+Stm32移植问题总结-ChangingsBlog

Uip+Stm32移植问题总结-ChangingsBlog#include "clock-arch.h"#include "stm32f10x.h"extern __IO int32_t g_RunTime;/*---------------------------------------------------------------------------*/clock_time_tclock_time(void){return g_RunTime;}/*---------------------------------------------------------------------------*/使用stm32 滴答定时器中断代码:User/stm32f10x_it.c__IO int32_t g_RunTime = 0;void SysTick_Handler(void){static uint8_t s_count = 0;if (++s_count >= 10){s_count = 0;g_RunTime++; /* 全局运行时间每10ms增1 */if (g_RunTime == 0x80000000){g_RunTime = 0;}}}3.uipopt.h/uip-conf.h 是配置文件,用来设置本地的IP 地址、网关地址、MAC 地址、全局缓冲区的大小、支持的最大连接数、侦听数、ARP 表大小等。

可以根据需要配置。

#define UIP_FIXEDADDR 1决定uIP是否使用一个固定的IP地址。

如果uIP使用一个固定的IP地址,应该置位(set)这些uipopt.h 中的选项。

如果不的话,则应该使用宏uip_sethostaddr(),uip_setdraddr() 和 uip_setnetmask()。

#define UIP_PINGADDRCONF 0 Ping IP地址赋值。

(完整word)基于STM32的uCGUI移植和优化

(完整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 完美移植

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两个文件夹下文件,不过文件数量也已经很多了 。

STM32平台的μC/GUI移植与图形界面设计

STM32平台的μC/GUI移植与图形界面设计

STM32平台的μC/GUI移植与图形界面设计罗富文;吴辉;康伟;杜文广【期刊名称】《单片机与嵌入式系统应用》【年(卷),期】2012(012)008【摘要】μC/GUI是一种专为嵌入式应用设计的通用图形接口软件。

本文详细介绍了μC/GUI的结构框架和基于STM32平台的μC/OS—Ⅱ上的μC/GUI移植过程,并在此基础上进行图形界面设计;阐述了μC/GUI的窗口管理机制,提出了实现μC/GUI中文小型字库的两种方法并采用存储设备解决了图形显示的闪烁问题。

%μC/GUI is a universal graphical interface software for the embedded application. The structural frame ofμC/GUI andμC/GUI transplant process inμC/OS-Ⅱ based on STM32 platform are introduced, and the graphical interface is designed, μC/GUI window man agement mechanism i s described, two methods are proposed to realizeμC/GUI Chinese small font, and flashing problem of graphical dis- play is solved using storage devices.【总页数】4页(P19-22)【作者】罗富文;吴辉;康伟;杜文广【作者单位】西安工程大学电子信息学院,西安710048;西安工程大学电子信息学院,西安710048;西安工程大学电子信息学院,西安710048;西安工程大学电子信息学院,西安710048【正文语种】中文【中图分类】TP274【相关文献】1.μC/GUI在STM32F103上的移植 [J], 杨洁雨;周泽满;徐海贤2.基于嵌入式STM32平台的μC/GUI人机交互界面设计 [J], 王宪伟;程广亮3.基于 STM32的μC/OS_II 与μC/GUI 整合移植与显示优化 [J], 杨立身;张安伟;王磊;刘康4.基于μC/GUI的嵌入式图形界面设计 [J], 刘滨;刘兵;赵艳华5.基于μC/GUI的嵌入式图形用户界面设计 [J], 冯智年;吴友宇因版权原因,仅展示原文概要,查看原文内容请购买。

UCGUI移植教程

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--移植经验总结

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/*抗锯齿。

基于STM32的μTenux嵌入式实时操作系统移植

基于STM32的μTenux嵌入式实时操作系统移植

任 意多 个 任务 任务优先级最多 255个 允 许同 优 先级 任 务
255十 任 务 不 允许 目 忧先 级 任 务
6种机 制 (包括 集 台 点端 口) 自s萜兜 许 任务 ,清 等 待 队歹!f
5种 机割 断箱只 允 许~ 个 消 息
支挣优先级继承和顶翌优先级协议 支持优先级顶矍协议
人 约5KB
大约 5KB 用户 区 起始 地址 用户 区 终止地 址 异常/中断 向量
表 起始 地 址
内 棱 数据类型 任 务管 理
同步 勒通 信 中断 管 理 时 问管 理 调 试和 跟 踪
内存 管 理
H l
 ̄C/OSII
所有对象都使用句柄操作
每种对象都有单独数据结构
卢 伟 李 春 莹 占雪梅 (郑州铁路职业技术学院电子工程 系,河南 郑州 450052)
摘 要 :随 着 嵌 入 式 系统 产 品 的 应 用 领 域 逐 渐 扩 大 ,嵌 入 式 实 时操 作 系统 也 得 到 了广 泛 的 应 用 。 通 过 移 植 嵌 入 式操 作 系 统 .微 处理 器 可 以 更好 地 管 理 内存 资 源 ,提 高 系统 的 实 时性 。主 要 基 于 ARM Cortex-M3 内核 的 STM32处 理 器 进行 嵌入 式 实 时操 作 系统  ̄Tenux的 移 植 ,并 详 细介 绍 了移 植 要 点 ,对 成 功 移 植后 的  ̄Tenux嵌 入 式操 作 系 统进 行 验 证
目前 市 场 上 的嵌 入 式 实 时 操 作 系 统 种 类 繁 多 ,且 各 有 所 长 。  ̄Tenux(读 作 micro—Te—nux)嵌 入 式 实 时 操 作 系统 是 一 个 完 全 免 费 开 源 的 实 时 操 作 系统 ,其 具 有 代 码 完 全 开 源 ,商 用 完 全 免 费 和 系 统 实 时 性 好 等特 点 , 随着 将 它 移 植 在 各 种 步 被 人 们 所 认 识 到 ,尤 其 在 ARM 微 处 理 器 上 操 作 系 统 移 植 领 域 FTenux将 会 更 加 被 人 们 所 认 可 。 当 前 应 用 最 广 泛 的嵌 入 式 操 作 系 统 I ̄C/OS Ⅱ 与  ̄,Tenux 操 作 系 统 的对 比如 表 1所 示 0。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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。
点... */ }
}
找到 unsigned int LCD_L0_GetPixelIndex(int x, int y) { LCD_PIXELINDEX PixelIndex; /* Convert logical into physical coordinates (Dep. on LCD
Conf.h) */ #if LCD_SWAP_XY | LCD_MIRROR_X| LCD_MIRROR_Y int xPhys = LOG2PHYS_X(x, y); int yPhys = LOG2PHYS_Y(x, y); #else #define xPhys x #define yPhys y #endif /* Read from hardware ... Adapt to your system */ { 添加 LCD_ReadPoint(x,y); //读点 PixelIndex = 0;/* ... */ } return PixelIndex;
补充说明:移植之前,先要准备一个完整的 KEIL 工程,所谓完整,就是没 添加源码 TFT 也能任意画点显示。这一点对我们新手来说是至关重要的。如果 你是用原子的 mini 做实验那就更好了,在准备 KEIL 工程的时候可以直接把原 子的 TFT 实验复制过来。
好了,开始移植讲解! 1. 构建液晶底层驱动函数。
GUI_DrawCircle(100,100,50);//画圆 while(1);
感想:关于移植,我个人觉得最困难的地方是底层驱动函数与 GUI 源码打交道 的部分,这部分的。C 。h 文件一定要事先准备好,放到 LCDDriver 文件夹下 面。这将直接决定你的移植是不是成功。
如有不足之处,敬请谅解!
Conf.h) */ #if LCD_SWAP_XY | LCD_MIRROR_X| LCD_MIRROR_Y int xPhys = LOG2PHYS_X(x, y); int yPhys = LOG2PHYS_Y(x, y); #else #define xPhys x #define yPhys y #endif /* Write into hardware ... Adapt to your system */ { 添加 LCD_SetPoint(x,y,PixelIndex);/* 自己自行添加的,画
还有一个头文件 #include“TFTDrive.h” 这个是你自己的底层驱动文 件,把这个头文件写在 LCDDriver / LCDDummy.c 中即可。必须要写的,否则建 立不起关联。
找到 void LCD_L0_SetPixelIndex(int x, int y, int PixelIndex) { /* Convert logical into physical coordinates (Dep. on LCD
翟中康 制作 于 2013/8/27
(0) (0) (0) &GUI_Font6x8 5000 (0) (0) (0)
(6) 修改 Config / LCDConf.h 方法:
#ifndef LCDCONF_H #define LCDCONF_H
#define LCD_XSIZE
(240)
/* 水平分辨率
X-resolution of LCD, Logical coor. */
补充说明:新建 TFTDrive.h ILI93xx.c 两个文件,这个 TFTDrive.h 是 ILI93xx.c 的头文件,通过 TFTDrive.h 找到 ILI93xx.c 里的程序 这两个文件里面的内容,是事先准备好的,也就是我所说的没加 GUI 源 码之前的 完整的 KEIL 工程的一部分。当然,这两个文件放到 LCDDriver 文件夹里面,添加的时候也一并添加进去就行。
(5) 修改:Config / GUIConf.h 文件 方法:
#define GUI_OS #define GUI_SUPPORT_TOUCH #define GUI_SUPPORT_UNICODE #define GUI_DEFAULT_FONT #define GUI_ALLOC_SIZE #define GUI_WINSUPPORT #define GUI_SUPPORT_MEMDEV #define GUI_SUPPORT_AA 其余部分不需要改动
(-1) /*lcd 控制器的具体型号*/ (565)
#define LCD_INIT_CONTROLLER()
TFT_Init();
数,自己写的,而非源码自带,这一步非常重要*/
/*底层初始化函
#endif /* LCDCONF_H */
这是我修改之后的源码,大家看看是不是声明下面少了许多函数啊,没 错,我删掉了,原因很简单,我的底层驱动 IC 程序是厂家提供的,而且 GUI 源码也没有我的这部分驱动程序。所以大家弄得时候也要一并删除,只留下 红色代码部分。
这部分代码,实际上包含这几个功能:液晶初始化功能、控制 IC 读取点坐 标功能、画点功能。底层的驱动一般来说液晶的厂家都会给带,还有要注意驱 动 IC 的型号,GUI 源码所带的 IC 驱动函数往往没有合适的,至少我没碰到, 呵呵呵。
这是我的底层函数,先列举三个比较重要的: LCD_ReadPoint(u16 x, u16 y);//读取点坐标 LCD_SetPoint(u16 x, u16 y, u16 color );//画点 TFT_Init(void);//初始化函数 2. 从 GUI 源码里复制代码,进行工程搭建 (1):复制 源码/Start 文件下的 GUI 和 Config 这两个文件夹到自己的工 程模板; 图片指示:
#define LCD_YSIZE
(320)
/* 垂直分辨率
Y-resolution of LCD, Logical coor. */
#define LCD_BITSPERPIXEL
(16) /*lcd 颜色深度*/
#define LCD_CONTROLLER #define LCD_FIXEDPALETTE #define LCD_SWAP_RB
}
至此,移植结束,大家是不是想看一看现象呢,接下来: 先修改主函数,添加 #include”GUI.h”//头文件包含嘛,呵呵呵 在 main()里,添加 : GUI_Init(); GUI_SetBkColor(GUI_BLUE); GUI_SetColor(GUI_RED); GUI_Clear();
相关文档
最新文档