精华内容
下载资源
问答
  • Hi,大家好,欢迎来到树莓派之littlevGL课堂,相信很多人都或多或少的听说过littlevGL了,可能也有一部分人还不知道littlevGL是什么,不过没关系,在我们正式开始之前我们先来了解一下到底什么是littlevGL,以及我们...

    Hi,大家好,欢迎来到树莓派之littlevGL课堂,相信很多人都或多或少的听说过littlevGL了,可能也有一部分人还不知道littlevGL是什么,不过没关系,在我们正式开始之前我们先来了解一下到底什么是littlevGL,以及我们为什么要学习littlevGL,相信你在看完下面的文章后会有一定的了解以及想要学习的冲动!废话不多说,且看我一步步给大家介绍。

    一 介绍

    LittlevGL is a free and open-source graphics library providing everything you need to create embedded GUI with easy-to-use graphical elements, beautiful visual effects and low memory footprint.

    littlevGL是什么!上面的文字引用自littlevGL的官网,同样也是我觉得将littlevGL是什么,总结的最简洁但最到位的了。什么?英语看不懂?没事,中文版:

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

    没错,它是一个开源的图像库,旨在为嵌入式设备提供一个精美的界面,当然嵌入式设备只是一部分,由于它是使用标C所写,你可以很轻松的移植到更多设备上,包括但不局限于嵌入式设备。

    二 支持的平台

    我们看一下支持的平台:

    STM32F1, STM32F3,STM32F4,STM32F7

    Microchip DSPIC33, PIC24, PIC32MX, PIC32MZ

    NXP Kinetis, LPC, iMX

    Linux frame buffer(/dev/fb)

    Raspberry Pi

    Espressif ESP32

    Nordic nrf52

    Quectell M66

    可以看到,我们常见的单片机几乎都支持(16bit及以上),之所以能够同时支持这么多平台是因为littlevGL对硬件的要求没有太高,一般来说只要能驱动显示屏且Flash大于64KB,RAM大于20KB的单片机都可以使用。

    三 优势与特点

    说了这么多,那么有哪些特点值得我们去学习呢,看看有没有哪一点可以打动你:

    强大的构建块按钮,图表,列表,滑块,图像等。

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

    支持各种输入设备,包括触摸屏,鼠标,键盘,编码器,按钮等。

    支持单色和彩色等多种同时显示方式

    支持UTF-8编码的多语言

    完全可定制的图形元素

    不限定MCU平台

    可扩展以在很少的内存下运行(64 kB闪存,10 kB RAM)

    支持操作系统,支持外部存储器和GPU

    单帧缓冲区操作,先进的图形效果

    用C语言编写以实现最大的兼容性

    无需嵌入式硬件即可在PC上开发的模拟器

    有着丰富的教程,示例,主题

    文档和API参考

    可以看到littlevGL相比现在经常听说的几个图形库还是具有相当大的优势的,并且这个项目也是十分的热门,截至写这篇文章的时候Github已经收获2.6K个star了,足可以看出大家对这个项目的热爱。

    还有最重要的一点就是,开源!免费!不用担心任何版权问题。

    四 为什么要学习

    众所周知,随着生活生平的提高,还有各种单片机的性能提高,大家也对带有显示屏的产品越发的热爱,毕竟一个产品有着非常绚丽的交互界面肯定会吸引人的眼球,所以开发一款带有炫酷的界面的产品也是非常有必要的,但是同时带来的就是版权问题,因为很多图形库并不是完全开源的,或者是使用特定的单片机可以免费使用,但是使用littlvGL就完全不用担心了,下面我们看一下一个好的图形界面对一个产品有多重要:

    相信大家一眼就知道自己喜欢哪一个了吧~

    五 官网Demo示例

    说了这么多,大家心里肯定想,无图无真相!那么下面我们来看一下littlvGL的几个Demo,相信一定能让你惊叹:

    1.官方主页的展示Demo:

    2.一个简单的色环Demo:

    更多Demo请访问官网网站查看。

    六 项目主页

    链接:

    OK,对littlevGL的简单了解就到这里,更多内容请大家自行访问官网网站和Github上的项目主页,我们下一篇文章教大家如何在树莓派 4B上搭建开发环境,基于Buster(最新系统)+qtcreator+SDL2。我们下期再见!

    展开全文
  • 一、What is littlevGL?  LittlevGL是一个免费的开源图形库,提供了创建嵌入式GUI所需的一些必备组件,具有易于使用的图形元素,美观的视觉效果和非常低的内存占用。  LittlevGL最大的优点是MIT开源协议,使用...

    一、What is littlevGL?

      LittlevGL是一个免费的开源图形库,提供了创建嵌入式GUI所需的一些必备组件,具有易于使用的图形元素,美观的视觉效果和非常低的内存占用。

      LittlevGL最大的优点是MIT开源协议,使用LittlevGL不用考虑代码开源的问题。所有代码采用C实现,代码体积约400K,能解决许多轻量级的UI绘制问题。

     

    二、How to get the source code?

      1、访问官方网站:https://littlevgl.com/

      2、从GitHub中获取:https://github.com/littlevgl/lvgl

     

    三、How to porting littlevGL?

      porting LittlevGL在官网中有详细的过程,按照https://docs.littlevgl.com/en/html/porting/index.html上面的方法即可完成,下面我把我的porting过程描述一下。

      1、概述。

        LittlevGL的driver层非常简洁,非常方便连接我们的display driver,littlevGL仅仅向driver层传递一个display buff。我们也可以直接在Application层修改LittlevGL的buff达到进一步修改显示的目的。

                                                    

     

     

      2、修改config文件。

         LittlevGL的配置文件为lv_conf.h,通过修改#if ... #endif的方式可以选择我们需要打开与禁用的功能。
        我们需要根据我们panel来配置分辨率与颜色深度:

     

        1、LV_HOR_RES_MAX 显示器的宽分辨率

     

     

        2、LV_VER_RES_MAX 显示器的高分辨率

     

                3、LV_COLOR_DEPTH 显示器的颜色深度,当前有8/16/32三种配置(24需要用32来替代,最后修改display buff)。

      3、创建callback函数。

       a. callback函数。

    void flush_panel_cb(lv_disp_drv_t * disp_drv, const lv_area_t * area, lv_color_t * color_p)
    {
        /*The most simple case (but also the slowest) to put all pixels to the screen one-by-one*/
        int32_t x, y;
        for(y = area->y1; y <= area->y2; y++) {
            for(x = area->x1; x <= area->x2; x++) {
                put_px(x, y, *color_p)
                color_p++;
            }
        }
    
        /* IMPORTANT!!!
         * Inform the graphics library that you are ready with the flushing*/
        lv_disp_flush_ready(disp_drv);
    }

       b. 把callback函数给全局panel对象。

    static lv_disp_drv_t disp_drv;
    
    void vlgl_init()
    {
          lv_init();
          lv_disp_buf_init(...);
          lv_disp_drv_init(&disp_drv);
          disp_drv.buffer = &disp_buf;
          disp_drv.flush_cb =  flush_panel_cb;
          disp = lv_disp_drv_register(&disp_drv);
    }

     

     

    转载于:https://www.cnblogs.com/smilingsusu/p/11463454.html

    展开全文
  • LittleVGL】移植LittleVGL-V7

    千次阅读 2020-08-01 23:09:42
    LittleVGL最新已经更新到V7系列,上一篇帖子LPC54628 UI开发 3-littlvgl介绍的是NXP官方MCUXpresso SDK 中移植好的LittleVGL,这个版本比较老,很多特性没有,界面也不够酷炫。而原子最近更新的 LittleVGL 教程则是...

    虽然是转载,但其实也是本人的帖子。

    (一)LittleVGL-V7

    LittleVGL最新已经更新到V7系列,上一篇帖子 LPC54628 UI开发 3-littlvgl 介绍的是NXP官方MCUXpresso SDK 中移植好的LittleVGL,这个版本比较老,很多特性没有,界面也不够酷炫。而原子最近更新的 LittleVGL 教程则是基于V6版本的,基本上搬过来全是报错,无法参考,因此想要移植最新版本
     
    当然最最新的版本是V7.3.0,可以从wiki页面看到,但我还没找到V7.3.0的源码,wiki页面release的也是V7.1.0。
     

    (二)资料

    源码:
    github(由于M国对开源糟糕的态度,暂时无法直接登上去):https://github.com/lvgl/lvgl
    gitee(我看了下跟github进度是一样的):https://gitee.com/mirrors/lvgl?_from=gitee_search
    WIKI(里面有API手册下载地址):https://docs.lvgl.io/v7/en/html/
    手册下载地址:https://docs.lvgl.io/v7/en/html/_downloads/39cea4971f327964c804e4e6bc96bfb4/LVGL.pdf
    上传一份V7.1.0的API手册备份:
    [attach]489165[/attach]
    中文网站(基本没用,只用于宣传,没有建设好,点啥都是进那个页面):https://littlevgl.cn/
     

    (三)移植

    过程并不复杂:
    1-把原本的littlevgl文件夹删掉,把Git下来的src里面的文件全部拷进去
    2-替换掉source下面的lv_config.h,并进行一些基本配置,比如
    设置纵宽像素:
    #define LV_HOR_RES_MAX (LCD_WIDTH)
    #define LV_VER_RES_MAX (LCD_HEIGHT)

     

    设置开辟内存的宏定义:

    /* 1: use custom malloc/free, 0: use the built-in `lv_mem_alloc` and `lv_mem_free` */
    #define LV_MEM_CUSTOM 1
    #if LV_MEM_CUSTOM == 0
    /* Size of the memory used by `lv_mem_alloc` in bytes (>= 2kB)*/
    # define LV_MEM_SIZE (32U * 1024U)
    
    /* Complier prefix for a big array declaration */
    # define LV_MEM_ATTR
    
    /* Set an address for the memory pool instead of allocating it as an array.
    * Can be in external SRAM too. */
    # define LV_MEM_ADR 0
    
    /* Automatically defrag. on free. Defrag. means joining the adjacent free cells. */
    # define LV_MEM_AUTO_DEFRAG 1
    #else /*LV_MEM_CUSTOM*/
    # define LV_MEM_CUSTOM_INCLUDE "FreeRTOS.h" /*Header for the dynamic memory function*/
    # define LV_MEM_CUSTOM_ALLOC pvPortMalloc /*Wrapper to malloc*/
    # define LV_MEM_CUSTOM_FREE vPortFree /*Wrapper to free*/
    #endif /*LV_MEM_CUSTOM*/

     

    把GPU禁用掉:

    /* 1: Enable GPU interface*/
    #define LV_USE_GPU 0 /*Only enables `gpu_fill_cb` and `gpu_blend_cb` in the disp. drv- */
    #define LV_USE_GPU_STM32_DMA2D 0
    /*If enabling LV_USE_GPU_STM32_DMA2D, LV_GPU_DMA2D_CMSIS_INCLUDE must be defined to include path of CMSIS header of target processor
    e.g. "stm32f769xx.h" or "stm32f429xx.h" */
    #define LV_GPU_DMA2D_CMSIS_INCLUDE

     

    其他可以继续探究,还能修改为深夜模式呢!

     

    3-在AppTask里面(一个freertos的用户定义任务)添加自己UI
    这里不贴代码了,有兴趣看我后面的gitee链接
     
    4-修改littlevgl_support.c
    主要是lv_port_disp_init、lv_port_indev_init及其回调函数,至于lv_port_pre_init就不要再调用了,详见我的工程分享
    lv_port_disp_init:
    void lv_port_disp_init(void)
    {
    /*-------------------------
    * Initialize your display
    * -----------------------*/
    DEMO_InitLcd();
    
    /*-----------------------------------
    * Register the display in LittlevGL
    *----------------------------------*/
    
    lv_disp_drv_t disp_drv; /*Descriptor of a display driver*/
    lv_disp_drv_init(&disp_drv); /*Basic initialization*/
    
    /*Set up the functions to access to your display*/
    static lv_disp_buf_t disp_buf;
    memset((void *)DEMO_BUFFER0_ADDR, 0, LCD_WIDTH * LCD_HEIGHT * LCD_FB_BYTE_PER_PIXEL*2);
    memset((void *)DEMO_BUFFER1_ADDR, 0, LCD_WIDTH * LCD_HEIGHT * LCD_FB_BYTE_PER_PIXEL*2);
    lv_disp_buf_init(&disp_buf, DEMO_BUFFER0_ADDR, DEMO_BUFFER1_ADDR, LCD_WIDTH * LCD_HEIGHT * LCD_FB_BYTE_PER_PIXEL);
    disp_drv.buffer = &disp_buf;
    
    disp_drv.hor_res = LCD_WIDTH;
    disp_drv.ver_res = LCD_HEIGHT;
    
    /*Used in buffered mode (LV_VDB_SIZE != 0 in lv_conf.h)*/
    disp_drv.flush_cb = DEMO_FlushDisplay;
    
    /*Finally register the driver*/
    lv_disp_drv_register(&disp_drv);
    }

     

    其中的 DEMO_FlushDisplay 也要改一下声明:

    static void DEMO_FlushDisplay(lv_disp_drv_t * disp_drv, const lv_area_t * area, lv_color_t * color_p)

     

    lv_port_indev_init:
    void lv_port_indev_init(void)
    {
    lv_indev_drv_t indev_drv;
    
    /*------------------
    * Touchpad
    * -----------------*/
    
    /*Initialize your touchpad */
    DEMO_InitTouch();
    
    /*Register a touchpad input device*/
    lv_indev_drv_init(&indev_drv);
    indev_drv.type = LV_INDEV_TYPE_POINTER;
    indev_drv.read_cb = DEMO_ReadTouch;
    lv_indev_drv_register(&indev_drv);
    }

     

     

    (四)PC仿真

    1-PC仿真就更简单了,原子建议用code那个啥,不过我建议用Qt,因为有现成工程可用:
    http://www.openedv.com/thread-312875-1-1.html
     
    2-除了下载这个工程,还要下载SDL2,这个在Ubuntu下就是apt的事,windows下比较麻烦:
    https://my.oschina.net/u/580100/blog/613760
    总之就是进入http://www.libsdl.org/
    下个 http://SDL2-devel-2.0.12-mingw.tar.gz (MinGW 32/64-bit)
    应该大家的Qt都是用mingw的吧,不会有另辟蹊径用微软那套吧……
     
    3-然后一般都是64位的,那就需要再改一下
    把x86_64-w64-mingw32下面的lib、include靠到仿真工程的目录下,代替原本的lib、include
     
    4-编译运行之后你会发现没有界面出来
    不要慌
    x86_64-w64-mingw32下面还有个bin文件夹,把SDL2.dll拷到Qt编译出来的二进制文件放置的文件夹下,譬如:
    build-Lvgl_Simulator-Desktop_Qt_5_12_0_MinGW_64_bit-Debug\debug
    再运行就有了
     

    (五)工程

    记得切换到V7分支,master分支还是V5版本的
    工程分享:https://gitee.com/tinnu/EXC_Sreen_LittelVGL_LPC54628.git
    展开全文
  • littleVGL学习笔记0——初探littleVGL

    千次阅读 2020-07-01 23:56:55
    littleVGL的介绍   littleVGL可以说是这2年才刚开始流行的一个小型开源嵌入式GUI库,具有界面精美,消耗资源小,可移植度高,响应式布局等特点,全库采用纯C语言开发。笔者打算学习他的原因可以用一个字概括:帅。   ...

    littleVGL的介绍

      littleVGL可以说是这2年才刚开始流行的一个小型开源嵌入式GUI库,具有界面精美,消耗资源小,可移植度高,响应式布局等特点,全库采用纯C语言开发。笔者打算学习他的原因可以用一个字概括:帅。
      笔者曾用EMWIN图形界面做项目,由于没有太多时间耗费在GUI界面的制作上,最后的作品界面只能算是凑合,科技感较为欠缺,简言之就是B格不够。看到littleVGL的官方效果图后,就被吸引了。
    在这里插入图片描述
    littleVGL的主要特性:
    • 具有非常丰富的内置控件,像 buttons, charts, lists, sliders, images 等
    • 高级图形效果:动画,反锯齿,透明度,平滑滚动
    • 支持多种输入设备,像 touchpad, mouse, keyboard, encoder 等
    • 支持多语言的 UTF-8 编码
    • 支持多个和多种显示设备,例如同步显示在多个彩色屏或单色屏上
    • 完全自定制的图形元素
    • 硬件独立于任何微控制器或显示器
    • 可以缩小到最小内存 (64 kB Flash, 16 kB RAM)
    • 支持操作系统、外部储存和 GPU(非必须)
    • 仅仅单个帧缓冲设备就可以呈现高级视觉特效
    • 使用 C 编写以获得最大兼容性(兼容 C++)
    • 支持 PC 模拟器
    • 为加速 GUI 设计,提供教程,案例和主题,支持响应式布局
    • 提供了在线和离线文档
    • 基于自由和开源的 MIT 协议

    littleVGL的要求如下:
    • 16、 32 或 64 位的单片机(微控制器)或处理器
    • 微处理器的主频最好高于 16MHZ
    • Flash/ROM:如果只用 littleVGL 核心组件的话,则至少需要 64kB 的容量,如果想完整使用的话,最好保证 180kB 以上的容量
    • C99 或更新的编译器,如果是用 keil 开发的话,一定得勾选”c99”模式,否则编译会报错的

    官方网站:
    littleVGL 的官方网址为: https://littlevgl.com
    littleVGL 的 github 网址为: https://github.com/littlevgl/lvgl
    littleVGL 的在线文档网址为: https://docs.littlevgl.com/zh-CN/html/index.html

    笔者用正点原子的STM32F407开发板试跑了一下官方例程,效果如下:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    本文仅作简要介绍以及官方例程的演示,之后的文章将正式进入我们的学习笔记内容。

    展开全文
  • 目录前言第一章littlevgl简介与开发环境搭建1.1littlevgl简介1.2windows开发环境搭建1.3Linux上开发环境搭建1.4本章小结第二章littlevgl的目录结构与基本框架2.1目录结构2.2基本框架2.3本章小结第三章基本对象类型...
  • VGL先生成字库文件,可以用官方在线工具图片转换: https://littlevgl.com/image-to-c-array字体转换: https://littlevgl.com/ttf-font-to-c-array也可以用下面的字体生成工具。...
  • littlevgl有几个线程,作用是什么?三个,主线程一个,和在主线程的hal_init函数中创建的另两个sdl线程。主线程完成一系列初始化工作后,循环每10ms调用在lv_init函数中注册的三个任务,indev_proc_task,lv_refr_...
  • LittlevGL_v6.0.pdf

    2020-07-08 09:11:21
    这个是littleVGL图形开源库的帮助文档,其中包括littleVGL的介绍,littleVGL的移植和API的使用; 这个是littleVGL图形开源库的帮助文档,其中包括littleVGL的介绍,littleVGL的移植和API的使用; 这个是littleVGL...
  • littlevgl使用

    千次阅读 2019-06-26 20:10:47
    分享的在littlevgl 调用freetye显示文字, 而不用通过字模软件生成 Online TTF to C Array Unicode Font Converter Littlevgl 显示汉字 设置字体 How to use the generated fonts in LittlevGL? Copy the result C ...
  • LittlevGL是一个免费的开放源代码图形库,它提供创建嵌入式GUI所需的一切,它具有易于使用的图形元素,精美的视觉效果和低内存占用;没错,它是一个开源的图像库,旨在为嵌入式设备提供一个精美的界面,当然嵌入式...
  •   1、在学习使用LittleVGL构架搭建GUI图形界面时,使用CodeBlocks IDE集成开发环境来配置和测试GUI系统。   2、解决在搭建LittleVGL环境时遇到的问题 本章内容:  1、CodeBlocks的安装下载与工程的创建  2、...
  • GUI-LittlevGL教程

    2020-12-10 15:32:20
    littleVGL 可以说是这 2 年才刚开始流行的一个小型开源嵌入式 GUI 库,具有界面精美,消耗资源小,可移植度高,响应式布局等特点,全库采用纯 c 语言开发,以实现最大的兼容性,模拟器可在没有嵌入式硬件的PC上启动嵌入式...
  • VGL使用各种嵌入式GUI时,总会遇到“汉字显示”“字体”这些关卡。...1.内置字体littlevGL内置了好几种字体。在lv_conf.h中开关相关字体/*==================* FONT USAGE*===================*//* More...
  • littleVGL教程集.zip

    2021-02-21 23:08:03
    littleVGL代码量少但界面效果不错,适合刚入门的朋友快速上手GUI,这里包含入门时常查阅的一些教程,方便大家查阅littleVGL的API功能。
  • LittlevGL中英文档

    2019-03-26 01:33:43
    LittlevGL是一个免费的开源图形库,提供了创建嵌入式GUI所需要的一切易于使用的图形元素,具有漂亮的视觉效果和低内存占用。具有功能强大的单元块,对输入设备支持较完善,同时具有低内存,采用C编写具有比较好的...
  • LittlevGL 开源图形库

    千次阅读 2020-04-29 00:21:25
    LittlevGL 项目作者是来自匈牙利首都布达佩斯的 Gábor Kiss-Vámosi 。Kiss 在2009年开始写 LittlevGL,2016年重写并发布在 GitHub 上。 官网:https://littlevgl.com/ 文档:...
  • littlevgl4linux

    2018-09-12 17:09:34
    LittlevGL提供了在嵌入式系统上创建图形用户界面(GUI)所需的一切,具有易于使用的图形元素,美观的视觉效果和低内存占用。
  • littleVGL 移植章节中,为了减少移植的难度,我们是采用处理器内部的 sram 给littleVGL 的显示缓冲区分配了一个 10*LV_HOR_RES_MAX 小空间 1.使用性能更好的处理器 2.使用 GPU 或者 DMA 进行 littleVGL 显示缓冲...
  • Qt 编译 littlevGL

    2020-05-27 11:10:43
    LittlevGL是一个免费的开源图形库,提供了创建嵌入式GUI所需的一切,具有易于使用的图形元素、漂亮的视觉效果和低内存占用。 https://lvgl.io/ 在windows环境下利用Qt编译littlevGL,模拟图形开发。需要提前安装Qt!...
  • LittleVGL_PC_SIM.zip

    2020-04-10 23:46:17
    LittleVGL的CodeBlock20模拟,工程我再cb20中运行没有错误,直接就出LittleVGL的界面了。
  • littlevgl技术参考手册.rar
  • LittlevGL GuideLittlevGL 简介LittlevGL 是一个免费的开源图形库,可构建全功能嵌入式 GUI。LittlevGL 有易于使用的图形元素以及良好的视觉效果和内存占用低等特点。LittlevGL 是一个完整的图形框架,您不需要考虑...
  • Linux LittlevGL 使用

    2020-11-02 20:27:20
    Linux LittlevGL 使用 LittlevGL 是一个开源免费的GUI,支持触摸屏操作,移植简单方便,开发者一直在不断完善更新。LittlevGL 自带了丰富的控件:窗口、按键、标签、list、图表等,还可以自定义控件;支持很多特效...
  • LittleVGL_CodeBlocks.rar

    2021-02-04 22:40:59
    littleVGL测试工程,可以用CodeBlocks直接打开编译运行。Linux下没测试,Windows下可以。如果编译不过的话,需要调整编译器的搜索路径。
  • littlevgl图形库基础应用

    千次阅读 2020-02-03 18:46:35
    littlevgl图形库基础应用 LittlevGL 是一个免费的开放源代码图形库, 它提供创建嵌入式 GUI 所需的 一切, 它具有易于使用的图形元素, 精美的视觉效果和低内存占用。 LittlevGL 官网: https://littlevgl.com/ ...
  • <div><p>Added support for LittlevGL GUI library. <p>From <a href="https://littlevgl.com/">LittlevGL</a> website <p>LittlevGL is a free and open-source graphics library providing everything you need ...
  • ART-PI移植LittleVGL7.9

    2021-01-07 14:07:12
    ART-PI,野火5寸电容屏800*480,LittleVGL7.9,双帧缓冲模式,STM32H750
  • cj_littlevgl.rar

    2020-03-25 15:45:41
    正点原子L475潘多拉开发板ST7789v2 spi接口TFT运行littlevgl图形系统,程序能够正常运行,编译环境为keil5,运行速度比较慢,供各位参考

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 835
精华内容 334
关键字:

littlevgl