【匠芯创D133CBS】LVGL 之植物大战僵尸
[复制链接]
本帖最后由 没有口袋的哆啦 于 2024-9-18 17:32 编辑
大家好,昨天是中秋,在这里祝各位小伙伴中秋快乐,今天我们来学习一个有意思的项目,他就是LVGL(Light and Variables Graphics Library,以下简称LVGL),然后来移植一个基于LVGL的植物大战僵尸。
介绍:(以下介绍均来自LVGL中文在线文档)
LVGL(Light and Variables Graphics Library)是一个免费的开源图形库,提供了创建具有易于使用的图形元素、优美的视觉效果和低内存占用的嵌入式GUI所需的一切。
特性:
-功能强大的构建块,如按钮、图表、列表、滑块、图像等。 -具有动画、抗锯齿、不透明度和平滑滚动的高级图形 -各种输入设备,如触摸板、鼠标、键盘、编码器等。 -多语言支持UTF-8编码 -多显示器支持,即同时使用多个TFT单色显示器 -具有类似CSS样式的完全可自定义图形元素 -硬件独立:与任何微控制器或显示器一起使用 -可扩展性:能够使用少量内存(64KB闪存、16KB RAM)运行 -支持操作系统、外部内存和GPU,但不是必需的 -单帧缓冲操作,即使具有高级图形效果 -用C编写以实现最大兼容性(与C++兼容) -在没有嵌入式硬件的PC上启动嵌入式GUI设计的模拟器 -绑定到MicroPython -快速GUI设计的教程、示例和主题 -文档可在线或以PDF格式获取 -麻省理工学院许可下的免费开源
软硬件需求:
基本上,每个能够驱动显示器的现代控制器都适合运行LVGL。最低要求是:
- 16, 32 or 64 bit 微控制器或处理器
- > 推荐 16 MHz 时钟速度
- Flash/ROM: > 基本要求:64 kB (> 推荐: 180 kB )
- RAM:
- 静态RAM使用率:~2 kB,具体取决于使用的功能和对象类型
- Stack: > 2kB (> 8 kB is recommended)
- Dynamic data (heap): > 4 KB (> 32 kB is recommended if using several objects). Set by LV_MEM_SIZE in lv_conf.h.
- Display buffer: > "Horizontal resolution" pixels (> 10 × "Horizontal resolution" is recommended)
- One frame buffer in the MCU or in an external display controller
- C99 或更新的编译器
- Basic C (or C++) knowledge: pointers, structs, callbacks.
按正常的流程是需要我们自己移植LVGL的,但是匠芯创的SDK中官方已经为我们移植好了,所以我们就不需要自己去移植了直接使用就行了。
我们首先下载LVGL_PVZ(植物大战僵尸)的源码,然后按照官方的教程添加到SDK中。
注:LVGL_PVZ是一位叫“老虎爱3D”的大佬编写的,源码需要添加QQ交流群获取,想要源码的小伙伴私信我获取群号
我们进入menuconfig中选择好PVZ并保存
然后我们直接烧录并编译,然后就能看到游戏界面了,由于“老虎爱3D”大佬是按照480X320分辨率来制作的这款游戏,而素材也是按480X320分辨率来制作的所以游戏并不能全屏。而修改适配我们这个板卡的屏幕的话工作量较大所以我就不去修改了,我们直接使用,另外需要注意的是我们的其他任务(建议关掉其他任务)不能占用太高的RAM,否则会导致游戏卡住或出现花屏等现象
我们来看看视频效果看看
LVGL可以说是一个非常好用的图形系统,我们使用它可以制作各种优美的界面,还支持图形化编辑,这里我推荐使用GUI-Guider,感兴趣的小伙伴可以自行了解一下,后面我还会出一些和多媒体相关的教程,欢迎大家在评论区留言,你们的支持就是我最大的动力
|