首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >RT-Thread Nano上移植GuiLite Samples

RT-Thread Nano上移植GuiLite Samples

作者头像
Rice加饭
发布2022-05-10 15:26:52
发布2022-05-10 15:26:52
8600
举报
文章被收录于专栏:Rice嵌入式Rice嵌入式

最近手痒痒的,想玩一下显示器,也是为了选型,制作我的小板子。目前这个板子还没画完,还想加多点动能,目前只有显示器,没有其他外设了,感觉太简陋了。不过这篇文章的主角不是这个板子。而是聊聊移植guilite到stm32上,以及如何跑在RT-Thread Nano。

我们的MCU型号为:stm32f103c8t6。移植之前要先让显示器工作,所以要先将显示器的驱动写好。我采用的显示器是128*160,驱动芯片为st7735s。相关的驱动代码,我放在我的github上,链接见文末。

通过看guilite的Samples,我们最终目标一个画点的接口,格式为:void (*draw_pixel)(int x, int y, unsigned int rgb);。

《移植RT-Thread Nano到stm32》

我们移植之前,需要准备好工程。如何移植RTT-Nano可以参考RTT官网文档,这里就不详细介绍了。

《移植GuiLite Samples》

我们需要把他的源码下载,源码路径:https://gitee.com/idea4good/GuiLiteSamples.git。它提供了很多demo。

我们以移植HelloStar为例,在我们创建好的工程建立一个目录uicode,我们进入HelloStar\UIcode目录将UIcode.cpp和GuiLite.h拷贝到uicode目录中。

然后将UIcode.cpp添加到工程中。注意要添加头文件路径。

编译,如果出现错误“type qualifier on return type is meaningless”。我们需要配置一下,添加“-O1 -g -W”,如下图:

《GuiLite Samples在RTT上的实现》

根据官网的文档说明。

需要实现void delay_ms(unsigned short nms)函数,实现这个函数的目的是为了实现thread_sleep()。

但是RTT并没有提供这个延时函数,而是使用rt_err_t rt_thread_mdelay(rt_int32_t ms)等,所以我们对这个函数进行了封装。如下图:

根据官网的文档说明,我们要对显示器接口进行封装,如下:

其中,红框部分是我们st7735驱动中的画点函数。

创建一个线程,将guilite和st7735驱动起来,以及运行guilite显示。

你会发现线程没有增加循环,这是因为startHelloStar这个函数内部有个是循环,所以我们不需要增加。如下:

为了适配我们的屏幕,还需要根据自己屏幕的像素,修改一下显示的尺寸如下:

《编译运行》

编译(编译成功):

烧录运行:如何烧录进去,无法显示,有可能是堆空间分配不足的原因,需要根据芯片的资源,将堆空间加大,如图:

效果如下:

http://mpvideo.qpic.cn/0bf2euaasaaa2uanieeoq5pfajodbesqacia.f10003.mp4?dis_k=0e6df7fe11095c54a1a7bc6f07aa5955&dis_t=1652167465&vid=wxv_1288976080363225091&format_id=10003&support_redirect=0&mmversion=false

HelloStar

http://mpvideo.qpic.cn/0bf2lqaayaaanmanesuoojpfaxgdbroaadaa.f10003.mp4?dis_k=92f355482b85172370c6fb8ff63fb125&dis_t=1652167465&vid=wxv_1288977268542439427&format_id=10003&support_redirect=0&mmversion=false

Hello3D

http://mpvideo.qpic.cn/0bf2kuaa2aaaaqanhouoo5pfavodbvkqadia.f10003.mp4?dis_k=000576a86b476fd8d382d91cf6649aae&dis_t=1652167465&vid=wxv_1288977701579161601&format_id=10003&support_redirect=0&mmversion=false

HelloWave

源码下载链接:https://github.com/RiceChen/Porting_GuiLite_to_RT-Thread.git,在Porting_GuiLite_HelloStar分支上

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Rice 嵌入式开发技术分享 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档