对于LVGL的基本认识

什么是Lvgl?http://photos.100ask.net/lvgl/01_intro/01_logo_lvgl.png

LVGL(轻巧而多功能的图形库)是一个免费的开放源代码图形库,它提供创建具有易于使用的图形元素,精美的视觉效果和低内存占用的嵌入式GUI所需的一切。

主要特性

  1. 功能强大的构建块,例如按钮,图表,列表,滑块,图像等。

  2. 带有动画,抗锯齿,不透明,平滑滚动的高级图形

  3. 各种输入设备,例如触摸板,鼠标,键盘,编码器等

  4. 支持UTF-8编码的多语言

  5. 多显示器支持,如TFT,单色显示器

  6. 完全可定制的图形元素

  7. 独立于任何微控制器或显示器使用的硬件

  8. 可扩展以使用很少的内存(64 kB闪存,16 kB RAM)进行操作

  9. 操作系统,支持外部存储器和GPU,但不是必需的

  10. 单帧缓冲区操作,即使具有高级图形效果

  11. 用C语言编写,以实现最大的兼容性(与C ++兼容)

  12. 模拟器可在没有嵌入式硬件的PC上进行嵌入式GUI设计

  13. 可移植到MicroPython

  14. 可快速上手的教程、示例、主题

  15. 丰富的文档教程

  16. 在MIT许可下免费和开源

源码布局

  • ./lvgl 库本身

  • ./lv_drivers 显示和输入设备驱动程序

  • ./lv_examples 示例和演示

初始化lvgl

配置文件

上面的三个库中有一个类似名为 lv_conf_template.h 的配置头文件(template就是模板的意思)。通过它可以设置库的基本行为,裁剪不需要模块和功能,在编译时调整内存缓冲区的大小等等。

  1. 将 lvgl/lv_conf_template.h 复制到 lvgl 同级目录下,并将其重命名为 lv_conf.h 。打开文件并将开头的 #if 0 更改为 #if 1 以使能其内容。

  2. 将 lv_drivers/lv_drv_conf_template.h 复制到 lv_drivers 同级目录下,并将其重命名为 lv_drv_conf.h 。打开文件并将开头的 #if 0 更改为 #if 1 以使能其内容。

  3. (可选)将 lv_examples/lv_ex_conf_template.h 复制到 lv_examples 同级目录下,并将其重命名为 lv_ex_conf.h 。打开文件并将开头的 #if 0 更改为 #if 1 以使能其内容。

http://photos.100ask.net/lvgl/02_poring/02_project/02_lvgl_conf.png

准备lvgl配置文件

http://photos.100ask.net/lvgl/02_poring/02_project/03_change_conf_file.png

使能配置文件

lv_conf.h 也可以复制到其他位置,但是应该在编译器选项中添加 ``LV_CONF_INCLUDE_SIMPLE`` 定义 (例如,对于 gcc 编译器为 ``-DLV_CONF_INCLUDE_SIMPLE`` ) 并手动设置包含路径。

在配置文件中,注释说明了各个选项的含义。我们在移植时至少要检查以下三个配置选项,其他配置根据具体的需要进行修改:

  • LV_HOR_RES_MAX 显示器的水平分辨率。

  • LV_VER_RES_MAX 显示器的垂直分辨率。

  • LV_COLOR_DEPTH 颜色深度,其可以是:

  • 8 - RG332

  • 16 - RGB565

  • 32 - (RGB888和ARGB8888)

准备好这三个库:lvgl、lv_drivers、lv_examples 后,我们就要开始使用lvgl带给我们的功能了。使用 lvgl 图形库之前,我们还必须初始化 lvlg 以及相关其他组件。初始化的顺序为:

  1. 调用 lv_init() 初始化 lvgl 库;

  2. 初始化驱动程序;

  3. 在 LVGL 中注册显示和输入设备驱动程序;

  4. 在中断中每隔 x毫秒 调用 lv_tick_inc(x) 用以告知 lvgl 经过的时间;

每隔 x毫秒 定期调用 lv_task_handler() 用以处理与 lvgl 相关的任务

显示接口

要设置显示,必须初始化 lv_disp_buf_t 和 lv_disp_drv_t 变量。

lv_disp_buf_t 保存显示缓冲区信息的结构体

lv_disp_drv_t HAL要注册的显示驱动程序、与显示交互并处理与图形相关的结构体、回调函数。

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LVGL的显示接口基本原理是将UI元素渲染到一个内存缓冲区中,然后通过底层的硬件接口将缓冲区的内容显示到屏幕上。具体实现方式有以下几种: 1. Framebuffer接口:在Framebuffer接口中,LVGLUI元素渲染到一个内存缓冲区中,然后将缓冲区的内容直接拷贝到屏幕的显存中。这种接口简单易用,但对内存的需求比较高。 2. 驱动器接口:在驱动器接口中,LVGLUI元素渲染到一个内存缓冲区中,然后通过底层的硬件接口将缓冲区的内容传递给专用的图形处理器进行处理,最终将处理后的图形数据显示到屏幕上。这种接口可以提高绘图性能,但需要硬件支持。 3. Micropython接口:在Micropython接口中,LVGL使用Micropython语言编写UI应用程序,然后通过底层的硬件接口将图形数据传递给硬件进行显示。这种接口适用于嵌入式系统中对资源要求较低的应用场景。 4. SDL接口:在SDL接口中,LVGL使用SDL库进行UI渲染,然后通过底层的硬件接口将图形数据传递给硬件进行显示。这种接口适用于桌面应用程序开发,可以在多种平台上运行。 5. 互联网接口:在互联网接口中,LVGLUI元素渲染到一个内存缓冲区中,然后使用Web技术将缓冲区的内容传递给浏览器进行显示。这种接口适用于Web应用程序开发。 总之,LVGL的显示接口基本原理都是将UI元素渲染到内存缓冲区中,然后通过底层的硬件接口将缓冲区的内容显示到屏幕上。不同的接口实现方式有所不同,可以根据具体应用场景选择适合的接口。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值