当前位置: 首页 > news >正文

lvgl基础

一、lvgl简介

LVGL(Light and Versatile Graphics Library)是一个免费的轻量级开源图形库。LVGL 是一款具有丰富部件,具备高级图形特性,支持多种输入设备和多国语言,独立于硬件之外的开源图形库。LVGL 官方网址为:https://lvgl.io/。LVGL 源代码网址为:https://github.com/lvgl/lvgl/。

图形用户界面(GUI)是指采用图形方式显示的计算机操作用户界面,允许用户使用鼠标等输入设备操纵屏幕上的图标或菜单选项。图形用户界面由多种控件及其相应的控制机制构成,在各种新式应用程序中都是标准化的,即相同的操作总是以同样的方式来完成,在图形用户界面,用户看到和操作的都是图形对象,应用的是计算机图形学的技术。

二、运行

lvgl只是一个库,需要定期调用lv_timer_handler()以使库相关事件或函数调用。

image

要驱动 LVGL 的定时器,需要在以下情况之一中定期调用 lv_timer_handler() 函数: - 在 main() 函数的 while(1) 循环中,或者 - 在操作系统任务中定期调用。

while(1) {uint32_t time_till_next = lv_timer_handler();my_delay_ms(time_till_next);
}while(1) {...lv_timer_handler_run_in_period(5); /* run lv_timer_handler() every 5ms */...
}while(1) {...lv_timer_periodic_handler();...
}

三、集成

参考linux下工程

1、vscode

LVGL is available for VSCode, a well-known cross-platform code editor.

It uses SDL to open a window, show the rendered content, and manage mouse and keyboard.

A ready-to-use LVGL project for VSCode is available at https://github.com/lvgl/lv_port_pc_vscode.

2、Generic Linux Port

The lv_port_linux project is typically meant to be used for embedded hardware, but it runs perfectly on PC as well.

3、embedded

# user_cross_compile_setup.cmake
# Usage:
# cmake -DCMAKE_TOOLCHAIN_FILE=./user_cross_compile_setup.cmake -B build -S .
# cmake -DCMAKE_TOOLCHAIN_FILE=../user_cross_compile_setup.cmake  ..
# make  -C build -jset(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR riscv64)set(CMAKE_SYSROOT /opt/resource/lc/sysroot)set(TOOLCHAIN_PATH /opt/toolchain/Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.6.0/bin)
set(TOOLCHAIN_PREFIX ${TOOLCHAIN_PATH}/riscv64-unknown-linux-gnu-)
set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}gcc)
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}g++)set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -rdynamic -funwind-tables")# If necessary, set STAGING_DIR
# if not work, please try(in shell command): export STAGING_DIR=/home/ubuntu/Your_SDK/out/xxx/openwrt/staging_dir/target
#set(ENV{STAGING_DIR} "/home/ubuntu/Your_SDK/out/xxx/openwrt/staging_dir/target")
set(ENV{PKG_CONFIG_SYSROOT_DIR} ${CMAKE_SYSROOT})
set(ENV{PKG_CONFIG_PATH}"${CMAKE_SYSROOT}/usr/lib/pkgconfig:${CMAKE_SYSROOT}/usr/share/pkgconfig")include_directories(${CMAKE_SYSROOT}/usr/include/)
include_directories(${CMAKE_SYSROOT}/usr/include/drm)set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

四、常用widgets

  • Animation Image (动画图像) (lv_animimg)
  • Arc(圆弧 ) (lv_arc)
  • Bar (进度条)(lv_bar)
  • Button(按钮) (lv_button)
  • Button matrix(矩阵按钮) (lv_buttonmatrix)
  • Calendar(日历) (lv_calendar)
  • Canvas(画布)(lv_canvas)
  • Chart(图表) (lv_chart)
  • Checkbox(复选框) (lv_checkbox)
  • Drop-down list(下拉列表)(lv_dropdown)
  • Image (图象)(lv_image)
  • Image button (图像按钮)(lv_imagebutton)
  • Keyboard(键盘) (lv_keyboard)
  • Label (标签)(lv_label)
  • LED(指示灯) (lv_led)
  • Line (线条)(lv_line)
  • List(列表) (lv_list)
  • Lottie动画 (lv_lottie)
  • Menu (菜单)(lv_menu)
  • Message box(消息框) (lv_msgbox)
  • Roller (滚轮)(lv_roller)
  • Scale (标尺)(lv_scale)
  • Slider (滑动条)(lv_slider)
  • Span(富文本) (lv_span)
  • Spinbox (微调框)(lv_spinbox)
  • Spinner(环形加载器) (lv_spinner)
  • Switch (开关)(lv_switch)
  • Table(表格) (lv_table)
  • Tabview(选项卡) (lv_tabview)
  • Text area(文本框) (lv_textarea)
  • Tile view(平铺视图) (lv_tileview)
  • Window (窗口)(lv_win)

参考:

1、官方文档

2、中文文档

3、lvgl初识 博客

4、lvgl demos 官网

http://www.jsqmd.com/news/721284/

相关文章:

  • python basedpyright
  • 别再只会addItem了!PyQt5 QComboBox的增删改查与事件绑定保姆级教程
  • AI降本工具哪个好?多平台需求选嘎嘎降AI一份订单管9平台! - 我要发一区
  • 深度解析RePKG:Wallpaper Engine资源解包与纹理转换技术实现
  • EasyAnimateV5-7b-zh-InP实现Web端视频编辑器:前端技术解析
  • AI降本工具哪个好?率零维普万方专精+95.7%降到3.7%实测揭秘! - 我要发一区
  • FilePizza终极指南:如何在浏览器中实现真正的P2P文件传输
  • 别只盯着目录!理工科论文写作前,先把这70%的图表搞定(附Visio/Origin技巧)
  • 从Llama 2到GPT-4:聊聊MHA、MQA、GQA这些注意力机制到底该怎么选?
  • Windows+CUDA 12.2+Anaconda环境:手把手教你从创建虚拟环境到成功验证PyTorch安装
  • electron-vue-music API集成方案:网易云音乐接口的完整封装与调用
  • 20243410 实验三《Python程序设计》实验报告
  • JEngine实战教程:从零开始构建可热更新的Unity游戏
  • 20260429 紫题训练
  • Win旧版或win10部分版本如何解除260字符长路径名限制?
  • 上饶GEO优化公司专业度排行 本土服务商实测对比 - 奔跑123
  • 终极Android倒计时方案对比:CountdownView与自定义CountDownTimer如何选择?
  • 如何快速掌握Quivr样式系统:从设计令牌到主题实现的完整指南
  • 如何用 Dask 替代 Pandas 进行高效 Excel 数据处理
  • 2026年3月有名的轻骨料混凝土生产厂家哪家便宜,LC5.0轻集料混凝土,轻骨料混凝土公司哪家便宜 - 品牌推荐师
  • 14.json数据格式认识
  • HyprPanel天气与时钟模块:多时区支持与实时气象数据集成
  • AI降本工具哪个好?嘎嘎降AI双引擎应对知网v2.13算法升级实测! - 我要发一区
  • PPTist终极指南:3分钟掌握免费在线PPT制作工具,告别PowerPoint依赖
  • 腾讯校招 C++ 考试题到底怎么考?后台、客户端、游戏三条线拆开讲
  • AI降本工具哪个好?比话降AI把84.9%降到1.4%的Pallas引擎揭秘! - 我要发一区
  • GMTSAR实战:从相位缠绕图到地表形变图,一步步解读D-InSAR输出结果
  • 从3D到4D:手把手教你用4D Gaussian Splatting重建跳舞小人(CVPR 2024新方法)
  • 美团校招 C++ 考试题到底怎么考?它不是独立 C++ 卷,更像业务系统题
  • Faster-Whisper-GUI:让音频视频转文字变得前所未有的简单