Stemwin(基于打点函数)

Stemwin(基于打点函数)
本工程本人自测,在TLT9341_SPI总线可用,对于其他的LCD屏,可基于本工程进行相应修改。
基于Stemwin的移植,我将从以下几个方面做介绍:
一:Stemwin的发展以及我们为什么要进行enwin的移植
二:Stemwin的基本工程的搭建
三:内存的分配及滴答定时器的建立
四:打点函数的移植
五:工程下载验证

由于world上的照片无法直接加入进博客里,就暂时加入了一张图片,如有需要,加qq私聊。
2120198233
在这里插入图片描述
一:Stemwin的发展以及我们为什么要进行enwin的移植?
这是个很好的问题,相信我们大家在进行移植前都或多或少的会问这个问题,没错,小编在进行移植的时候也考虑了这个问题,下面就给大家简单介绍一下。
emWin是Segger公司针对嵌入式平台开发的稳定、高效的图形软件库,适合用于任何图形LCD的操作应用,并可输出高质量的无锯齿的文字和图形,通过调用emWin提供的函数接口,开发嵌入式图形界面应用变得简单而快捷。使用emWin开发界面是个细致活,设计一个界面,往往需要对控件进行多次调整才能到达理想效果,这里向大家分享两款设计emWin界面的利器:PC模拟器和GUI Builder。
二:Stemwin的基本工程的搭建
首先建立工程之前需要下载一下及个文件,可以再官网上下载,也可在通过本链接下载。
链接:https://pan.baidu.com/s/1tcX-nBqBhpkT_DC3TSU0Kw
提取码:rsdq

下载后为如下界面
在这里插入图片描述
第一个文件为我的LCD工程,这步大家可以把各自的屏的驱动加上去,确定要能够显示,不然后面的操作都是无意义的。
第二个文件为正点原子的一个DEMO文件,移植好本工程后大家可自行添加,效果酷炫。
第三个文件为GUI(Stemwin)的工程文件,需要移植部分文件出来。
最后一个为TLTLCD9341芯片手册,移植时需要根据手册修改部分寄存器的值。

1;首先大家打开自己的带有LCD的工程,新建一个EMWIN文件夹(用来存放移植的GUI文件),我以自己的工程进行演示。
在这里插入图片描述

2再打开STemWin_Library_V1.2.0,接着打开改文件夹下的Libraries文件夹,接着打开改文件夹下的STemWinLibrary532文件夹,接着把该文件下的Config,inc ,Lib, OS四个文件夹复制到上面所建的EMWIN文件夹里面。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

复制完文件夹后如下图所示
在这里插入图片描述

接着将OS文件夹里面的所有文件转移到EMWIN文件下
在这里插入图片描述
在这里插入图片描述
接着将Lib文件夹下的STemWin532_CM4_Keil复制,粘贴到EMWIN文件夹下,说明一下,这里面是对应单片机芯片的GUI库,带ot的为带操作系统的,我们先移植不带操作系统的,我用的是STM32ZET6,为M4核,移植好后如图所示
在这里插入图片描述
在这里插入图片描述
然后将Config文件夹下的7个文件复制粘贴到EMWIN下
在这里插入图片描述
移植好后如图所示
在这里插入图片描述
移植文件的最后一步就是把Config,Lib,OS文件夹删除,同时改变EMWIN文件夹下除in和Stemwin532_CM4_Keil外的所有文件属性,去掉只读模式。
如果你的文件夹是如下图所示的画,那么恭喜你Stemwin第一步成功
在这里插入图片描述

二:下面进行滴答定时器和内存的分配

把EMWIN文件加入工程,如图所示,同时别忘了c文件的添加
在这里插入图片描述
加入好后,在工程里打开如图所示
在这里插入图片描述

然后在main.c文件里加入GUI的头文件,
在这里插入图片描述
,同时在GUI的两个模板中添加lcd的头文件。
在这里插入图片描述
在这里插入图片描述
此时可为GUI分配动态内存,根据需要确定
在这里插入图片描述

以上完成后GUI的内存分配就完成了,接着进行滴答定时器的配置
将GUI_X.c下的volatile GUI_TIMER_TIME OS_TimeMS;加入到stm32f4xx_it…c里面,并申明extern进行全局调用
在这里插入图片描述

加入后如图所示
在这里插入图片描述
然后在该文件下的144行加入OS_TimeMS++;语句,此时滴答定时器已配置完成
在这里插入图片描述
最后在主函数里面调用,同时使能滴答定时器
在这里插入图片描述

三最重要的就是打点函数的移植
在打点函数移植之前需要配置LCDConf_Lin_Template.c文件的一些值,颜色模板,如下图所示。
在这里插入图片描述
同时修改该文件的142页文件,
在这里插入图片描述

同时屏蔽一下文件,这里面的都没有用到,如果不屏蔽的话编译会不通过
在这里插入图片描述
在在x扫描中加入LCD_Init(初始化文件)
在这里插入图片描述
如果你已经到达这步,那么万事俱备只欠东风。现在就可以移植打点函数
在这里插入图片描述
这个打点函数是来自你们LCD的打点函数,我们并不能直接移植过来,直接移植的话可能会报错,直接移动它内部的函数,此时编译的话可能会报错,原因就是构成你们LCD的打点函数没有全局声明。只需进行如下操作就会解决
在这里插入图片描述

然后就可以在主函数里面用GUI进行画点画线操作。
在这里插入图片描述
此时我在主函数里面写入如下代码,和LCD的驱动很像,对应的函数可在emwin手册里面查看。
在这里插入图片描述
此时颜色不对,本应显示的是品红色,这个颜色的区分度很高,但是可以显示我所需要的信息,这个主要就是LCD的36寄存器给值不对,该寄存器控制颜色,反转等,初始化在我们的LCD.c文件下。可以发送0X60数据,具体操作大家可根据我发的网盘里面的LCD手册进行查看,配置相关寄存器

修改后代码如图
在这里插入图片描述
**在这里插入图片描述**

此时ok,移植完成

注意:用打点函数移植效果不是很好,刷频会比较慢,主要是我这个屏是SPI接口的,串行接口的比并行接口的慢,而且加上模拟spi,不是硬核,打点函数不是像通用模板里面的函数可以直接访问寄存器。建议可以换一下屏,或者刷屏代码做相应修改。

发布了2 篇原创文章 · 获赞 5 · 访问量 90

猜你喜欢

转载自blog.csdn.net/weixin_43517955/article/details/104907192