菜鸟福利!STM32学习之uCGUI移植详解
基于STM32的uCGUI移植手册
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
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上移植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()语句。
STM32F103开发板移植uCOS-II教程
盘古 STM32 开发板移植 uCOS-II 详细说明
文件,具体如下: ¾ 将 Project Targets 中的 Target1 重命名为 UE-uCOS-II-Port ¾ 新建组 STM32F10x_StdPeriph_Driver,并将 uCOS-II-Port\Library\STM32_Lib\src 下的所
为了实现资源共享,一个操作系统必须提供临界段擦作的功能。
合嵌电子科技有限公司 uCOS-II 为了处理临界段代码需要关中断,处理完毕后再开中断。这使得 uCOS-II 能够避免同时 有其它任务或中断服务进入临界段代码。 微处理器一般都有关中断/开中断指令,用户使用的 C 语言编译器必须有某种机制能够在 C 中直
盘古 STM32 开发板移植 uCOS-II 详细说明
/*任务切换的函数*/
void OSCtxSw(void);
//用户任务切换
void OSIntCtxSw(void);
//中断任务切换函数
void OSStartHighRdy(void);
//在操作系统第一次启动的时候调用的任务切换
void OS_CPU_PendSVHandler(void); //用户中断处理函数
将其下的 inc 和 src 拷贝至 uCOS-II-Port\Library\STM32_Lib z 打开 STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3
其下有 CoreSupport 和 DeviceSupport 两个文件夹 ¾ 分别将 CoreSupport 下的 core_cm3.c 和 core_cm3.h
OS_CPU_SR OS_CPU_SR_Save(void);
emWin522(uCGUI)图形用户接口移植详细实例_STM32_2013_12_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库,整个移植过程应该比较简单。
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移植总结
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,配置文件;。
ucosii在STM32上的移植详解
ucosii在stm32上的移植详解虽然目前网上已经有不少关于ucosii在stm32上的移植版本,包括micrium也有官方移植版本。
但这些版本具体是怎么移植出来的,又该怎么基于移植好的ucosii 开发应用软件,网上介绍的并不多。
这里介绍一下我的移植经历,希望对大家有所帮助。
我的移植基本上是从零开始的。
首先想要做好移植,有两方面的内容是必须要了解。
1.目标芯片;2.ucosii内核原理。
虽然我们移植的目标芯片是stm32,但操作系统的移植基本是针对Cortex-M3内核(以下简称CM3)而言的,所以我们只需了解CM3内核就好了。
stm32芯片就是CM3内核加上各种各样的外设。
怎么才能了解CM3呢?看一本书<<ARM Cortex-M3权威指南>>(宋岩译,网上多的很)就好了,很多同学可能想,看完这本书移植的新鲜劲都没了,因此我把该书和移植有关的章节都列了出来,并对其中的重点内容进行介绍,我数了数相关章节还不到100页,就这点内容,总要看了吧。
相关章节如下:chapter2 Cortex-M3概览2.1 - 2.9主要了解Cortex-M3的概貌。
刚开始看时不用追求全部理解,后面会有详细介绍,很多内容多看几遍就明白。
其中2.8 指令集,只要了解,CM3只使用thumb2就ok了。
chapter3 Cortex-M3基础3.1 寄存器组R0-R12: 通用寄存器R13: 堆栈寄存器有两个,MSP和PSP,同时只能看见一个引用R13时,引用的是正在使用的那个MSP:可用于异常服务和应用程序PSP:只能用于应用程序系统复位后,用的堆栈指针是MSP。
R14: 连接寄存器,又名LR,存储返回地址R15: 程序计数寄存器,又名PC3.2 特殊功能寄存器程序状态字寄存器组(PSRs)中断屏蔽寄存器组(PRIMASK, FAULTMASK, BASEPRI)控制寄存器(CONTROL)程序状态字寄存器组(PSRs)分为应用程序 PSR(APSR)中断号 PSR(IPSR)执行 PSR(EPSR)每个都是32位,由于这3个寄存器有效位是错开的,因此可以组合访问。
基于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-uCOS移植
uCOS 学习随笔 StepbyStep-2—— 理解中断(基于STM32控制的第四代圆梦小车)一、缘由这一步本来计划结合需求搭建任务框架,完成概要设计的,之后再根据任务框架将任务逐一实施。
可在第一步时就对系统的时基的形成存在疑惑,对 uCOSII 是如何实现定时的没有吃透,丝毫没有发现系统去使用 STM32的定时器,也没有看到相应的中断处理,倒是发现:如果使用系统的延时函数,精度很难达到要求。
因为小车需要产生PWM信号,虽说周期不算短,有 8ms 呢(125Hz),可如果将系统的Tick设置为 10ms,指望直接使用系统地定时不太可能了,必须另谋出路。
而且,必须和 PWM 同步的电流、电压采样似乎也必须有较高的实时性。
检测车轮转动的码盘信号最快约为 200 Hz, 周期约5ms, 也必须靠中断采集。
因此,要能恰当的搭建任务框架,必须很好的了解 uCOSII的中断实现机制,以及中断后任务是如何切换的。
这样才能合理分配资源,以保证小车的控制遂心如愿。
所以,将第二步改为“理解中断”,主要探讨系统中是如何实现定时的?是如何实现中断的?自己如何编写一个中断服务程序?中断处理中的信息如何与任务交互?如何通过中断激活相应的任务?基本掌握了这些,分配任务才能做到心中有底。
二、理解系统定时通过仔细阅读源码,基本理解了系统定时是如何实现的了。
uCOSII只使用了STM32的 SysTick,这部分没有使用ST的库,而且硬件上似乎系统只使用了SysTick。
SysTick 的初始化及中断部分由 uCOSII 系统部分完成,准确地说是STM32 移植部分。
详细工作过程如下:1)在app.c 的App_TaskStart 中调用:OS_CPU_SysTickInit()此函数在 COMMON\uCOS-II\Ports\ARM-Cortex-M3\Generic\RealView\os_cpu_c.c 中定义,主要完成 SysTick 的中断初始化。
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/*抗锯齿。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
菜鸟福利!STM32学习之uCGUI移植详解
以下内容大多是网上资源,我只做一些修改和结合,为的是能够方便更多的和我一样的菜鸟们搞懂GUI的移植。
第一部分:在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平台下写界面,然后再把代码拷进我们的下位机编译器进行编译,这样子效率就会非常高了。
。