LVGL学习记录

LVGL学习系列

第一章 基于VS2019 的VS仿真



提示:本文LVGL版本为LVGL8系列。


一、LVGL简介

LVGL(轻量级和通用图形库)是一个免费和开源的图形库,它提供了创建嵌入式GUI所需的一切,具有易于使用的图形元素,美丽的视觉效果和低内存占用。

Key features (主要特性)
强大的构建块,如按钮,图表,列表,滑块,图像等。

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

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

多语言支持与UTF-8编码

多显示器支持,即使用更多的TFT,单色显示器同时

完全可定制的图形元素与css类样式

硬件独立与任何微控制器或显示器使用

可扩展,使用少量内存(64kb Flash, 16kb RAM)

支持操作系统、外部内存和GPU,但不是必需的

单帧缓冲操作,甚至与高级图形效果

用C编写的最大兼容性(c++兼容)

模拟器在没有嵌入式硬件的PC上开始嵌入式GUI设计

绑定到MicroPython

教程,例子,快速GUI设计的主题

文档可以在线和PDF格式获取

Requirements(配置要求)
基本上,每个现代控制器(能够驱动显示器)都适合运行 LVGL。最低要求是:

16、32 或 64 位微控制器或处理器

建议使用 16 MHz 时钟速度
闪存/ROM: > 64 kB 用于非常重要的组件 (> 建议使用 180 kB)
RAM:
静态 RAM 使用量:~2 kB,取决于使用的功能和对象类型
堆: > 2kB (> 建议使用 8 kB)
动态数据(堆): > 2 KB (> 如果使用多个对象,建议使用 16 kB). 在 lv_conf.h 文件中配置 LV_MEM_SIZE 生效。
显示缓冲区:> “水平分辨率”像素(推荐> 10 × 10ד水平分辨率”)
MCU 或外部显示控制器中的一个帧缓冲器
C99 或更新的编译器
具备基本的 C(或 C++)知识: pointers, structs, callbacks
请注意,内存使用量可能因架构、编译器和构建选项而异。

二、环境配置

1.使用git下载仿真代码

此命令将在一个步骤中克隆 lv_sim_visual_studio 存储库和所有子模块。
代码如下(示例):

git clone --recurse-submodules https://github.com/lvgl/lv_sim_visual_studio.git

克隆主存储库使用如下命令:

git clone https://github.com/lvgl/lv_sim_visual_studio.git

克隆主存储库后,使用下面命令克隆子模块:

cd lv_sim_visual_studio
git submodule update --init --recursive

更新保持最新版本,使用下面的命令:

git pull
git submodule update --init --recursive

2.运行测试代码

代码如下(示例):

    // ----------------------------------
    // Demos from lv_examples
    // ----------------------------------

     lv_demo_widgets();           // 运行的演示demo
    // lv_demo_benchmark();
    // lv_demo_keypad_encoder();    // ok
    // lv_demo_music();             // removed from repository
    // lv_demo_printer();           // removed from repository
    // lv_demo_stress();            // ok

演示demo效果
在这里插入图片描述
还可以在主函数中设置显示的像素

if (!lv_win32_init(
        GetModuleHandleW(NULL),
        SW_SHOW,
        320,   //定义显示区域的宽度
        240,   //定义显示区域的高度
        LoadIconW(GetModuleHandleW(NULL), MAKEINTRESOURCE(IDI_LVGL))))
    {
        return -1;
    }


3.定义自己的LVGL

只是运行演示Demo是,没有任何意义的,需要开发自己的界面才是真正的玩转LVGL,加入自己的LVGL可以参在下面的步骤:

(1)在主界面加入mylvgl.h文件,在其中加入如下代码:

#ifndef MYLVGL_H
#define MYLVGL_H

#ifdef __cplusplus
extern "C" {
#endif

    /*********************
     *      INCLUDES
     *********************/

     /*********************
      *      DEFINES
      *********************/

      /**********************
       *      TYPEDEFS
       **********************/

       /**********************
        * GLOBAL PROTOTYPES
        **********************/
    void lv_mylvgl_demo(void);    //自定义demo的主函数

    /**********************
     *      MACROS
     **********************/

#ifdef __cplusplus
} /* extern "C" */
#endif

#endif /*LV_DEMO_STRESS_H*/#pragma once

(2)在主界面加入mylvgl.cpp文件,在其中加入如下代码:


/*********************
 *      INCLUDES
 *********************/
#include "../LVGL.Simulator/lv_demos/src/lv_demo.h"  //lv_demo头文件,根据自己工程中的文件位置修改

#if MY_LVGL

void lv_mylvgl_demo(void)
{
		自定义显示内容
}


#endif /* LV_USE_DEMO_STRESS */

(3)在lv_demo_conf.h中加入宏定义:

#define MY_LVGL 1

(4)在lv_dem.h中加入自定义demo的头文件:

#include "../mylvgl.h"            //添加的LVGL头文件

4.定义LVGL Demo演示

设置320*240像素的显示区域,并设置背景为红色。

在主界面加入mylvgl.cpp文件,在其中加入如下代码:

void lv_mylvgl_demo(void)
{
    static lv_style_t style;  
    lv_style_init(&style);
    lv_style_set_bg_color(&style, lv_palette_lighten(LV_PALETTE_RED, 1));   
     
    lv_obj_t* obj = lv_obj_create(lv_scr_act());   //创建显示屏幕
    lv_obj_add_style(obj, &style, 0);
    lv_obj_center(obj); 
    
    lv_obj_set_x(obj, 0);//设置X轴起点
    lv_obj_set_y(obj, 0);//设置Y轴起点
    lv_obj_set_size(obj, 320, 240);//设置覆盖大小
}

显示效果
在这里插入图片描述


总结

这就是LVGL使用VS2019仿真的主要内容,设置仿真环境还是十分容易的。如果遇到问题,可以参照VS的错误提示进行修改。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值