历史上的今天
返回首页

历史上的今天

今天是:2025年05月17日(星期六)

2021年05月17日 | STM32移植UCGUI实现GPS

2021-05-17 来源:eefocus

在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 */

第四步:最关键的一步。那就是让GUI能够找到你的LCD驱动。修改LCDDriver。

在编写你的TFT底层驱动程序的时候,一定不能忘记编写这两个函数:设置一个像素和获取一个像素的颜色,因为后面很多UCGUI和你的TFT驱动关联起来需要这两个函数为前提。以我的TFT为例:

void LCD_SetPixel(unsigned short x, unsigned short y, unsigned short color)

{

….

}


unsigned short LCD_GetPixel(unsigned short x, unsigned short y)

{

}

这两个函数写好,并测试可以正常显示后,接下来需要修改TFT与UCGUI关联的函数(在一个C文件下(我的是ili9320_ucgui.c),建议大家在移植GCGUI之前最好下载个别人移植好的例程,对着修改这样难度降低很多):

int LCD_L0_Init(void)

{

TFT_Init();

return 0;

}

这个函数,是GCGUI初始化TFT需要调用的,里面的函数就是你TFT底层驱动的初始化函数。

void LCD_L0_SetPixelIndex(int x, int y, int PixelIndex)

{

LCD_SetPixel(x,y,PixelIndex);

}

unsigned int LCD_L0_GetPixelIndex(int x, int y)

{

return LCD_GetPixel(x,y);

}

上面两个函数是其他函数的最基本元素,其他函数比如画线、点、圆都需要调用改函数。里面的LCD_SetPixel(x,y,PixelIndex)、LCD_GetPixel(x,y);就是你TFT底层驱动设置像素和获取像素的两个函数。

紧接着把该ili9320_ucgui.c文件下其他函数修改一下(凡是遇到设置像素和获取像素的地方用以上两个函数代替。)

接着,修改另一个C文件(ili9320_api.c)这里修改很简单,仅仅也是将设置像素和获取像素的函数替换掉自己定义的即可。



最后,网上说需要修改那个GUI_X.c文件,由于我下载的是STM32模板(ILI9320的控制器),那个文件没有修改。

PS:我的开发环境MDK3.4以上版本,CPU:STM32F103RBTFT与MCU接口:模拟总线8位 1.8英寸 160×128分辨率的TFT

UCGUI版本3.90 UCOS版本2.86在原基础上仅仅修改了以下几个文件:ili9320.c

、ili9320_ucgui.c 、ili9320_api.c 、GUIConf.h、LCDConf.h

由于网络的原因,稍后将整个工程上传上去,以及显示效果。呵呵 欢迎拍砖!


主要是GPS的导航界面程序:


硬件是基于stm32f103ve的公司测试板,主要是扩展了3.2寸320*240tft屏.


推荐阅读

史海拾趣

Fedco_Batteries公司的发展小趣事

面对日新月异的市场需求和技术变革,Fedco_Batteries始终保持创新的步伐。公司加大了研发投入,不断推出新型电池产品,满足客户的多样化需求。同时,公司还积极探索新的应用领域,将电池技术应用于更多领域,如新能源汽车、智能家居等。这种创新驱动的发展战略,让Fedco_Batteries在行业中始终保持领先地位。

ADATA公司的发展小趣事

为了拓展国际市场,Fedco_Batteries积极寻求与国内外企业的合作。他们与多家知名企业建立了战略合作关系,共同研发新型电池技术,开拓新市场。同时,公司还积极参加国际展会和论坛,与国际同行交流学习,不断提升自身的竞争力。这种合作共赢的发展模式,让Fedco_Batteries在国际市场上取得了显著的成绩。

全志(Allwinner)公司的发展小趣事

随着平板市场的逐渐饱和,全志科技开始寻求新的增长点。公司在保持原有产品线优势的同时,积极拓展多品类产品线,实施了营销端BU化,并提出了未来大方向的MANS战略。这一转型不仅增强了公司的市场竞争力,也为公司的长期发展打开了新的局面。

兆易创新(GigaDevice)公司的发展小趣事

2010年,平板电脑市场的崛起为全志科技带来了巨大的发展机遇。全志迅速调整产品策略,推出了AP处理器A系列,成功抓住了这一市场风口。其芯片产品在平板电脑领域的应用,不仅提升了公司的市场份额,也为公司的未来发展奠定了坚实的基础。

Blue Creation公司的发展小趣事

随着国内市场的饱和,Blue Creation公司决定将目光投向海外市场。公司制定了一系列国际化战略,包括设立海外研发中心、拓展销售渠道、加强品牌推广等。经过几年的努力,Blue Creation的产品逐渐打入国际市场,赢得了众多海外客户的认可。同时,公司也积极吸收国际先进技术和管理经验,不断提升自身的竞争力。

Davicom公司的发展小趣事

在竞争激烈的电子行业中,Davicom始终坚持自主研发,不断突破核心技术。公司投入大量研发资金,建立了一支高素质的研发团队,并申请了多项专利。通过多年的努力,Davicom在DSP IC及系统应用技术方面取得了重大突破,成功开发出多款具有竞争力的产品。

问答坊 | AI 解惑

LED显示屏生产工艺流程

LED显示屏生产工艺流程,…

查看全部问答>

嵌入式竞赛题目。。。

本帖最后由 paulhyde 于 2014-9-15 09:12 编辑 我要参加博创杯嵌入式竞赛,但是想不出题目来。大家帮我想下,帖出来好吗? [ 本帖最后由 open82977352 于 2010-2-10 19:19 编辑 ]  …

查看全部问答>

大家都有些什么工具啊,这样的万用表你有吗?

不知道大家都有些什么开发工具啊,什么时候来过工具大比拼,不知道怎么样,一直都想买下面这种工具,可惜囊中羞涩啊。     同一网站参考价格: Fluke 289      6980.00元 HIOKI&nbs ...…

查看全部问答>

ADS的不能设置调试的问题

我的ADS1.2中设置不了生成目标的方式,请问在哪里设置?看书上讲的是在左上角的下拉框里应该有的,可是我的只有我自己设置成TARGERT的名字一个选项,请问在哪里设置?是不是我的ADS装的不全啊?各位有没有遇到过类似的问题?…

查看全部问答>

调谐电路

本帖最后由 paulhyde 于 2014-9-15 09:37 编辑 哪位大侠解释一下这个电路图,怎么取值lc和调谐的模块  …

查看全部问答>

【申请BeagleBone试用机会】旅行家足迹记录仪---这个名字听起来还好吧

  本着不需要太高的台阶、过高成本和有实用价值的原则想到这样一个制作。我觉的这是个能够扩展的好的项目,比如添加3G网卡,将照片和轨迹信息直接送到远程服务器上。这需要两个狗板,一个是随身携带的记录设备,一个就是实现网盘的功能,这样 ...…

查看全部问答>

TI ISO1050 不匹配问题如何解决

TI ISO1050 不匹配问题如何解决…

查看全部问答>

diy小巧的光控灯

利用光敏电阻制作一款一个简单实用的光控灯。 光敏电阻的工作原理是基于内光电效应。在半导体光敏材料两端装上电极引线,将其封装在带有透明窗的管壳里就构成光敏电阻如图所示。 利用光敏电阻Rp感光效应(光越强阻值越小)控制Q1 Q2的导通与截 ...…

查看全部问答>

菜单编程

最近有个菜单项目 使用MSP430系列 需使用菜单编程1.     只想使用状态机部分 组语部分需移植吗 430好移植吗2.     和QPNANO的优势在哪?如果某个状态内的函数执行过久 我发了一个帖子在http://sourceforge. ...…

查看全部问答>