首页 > 其他分享 >t113-c-lcd_lvgl篇

t113-c-lcd_lvgl篇

时间:2023-08-07 18:47:10浏览次数:47  
标签:LVGL library LV lcd t113 CONF lvgl DIR

之所以用lvgl,是因为lvgl实在是太轻便了,只用库就能够做处图形管理页面,非常方便。当然,主要是我不想再下载qtcreate了,虽然qt被运用的很广泛,但是目前我对lvgl的掌握程度还是更深一点

1.从github下载

https://github.com/lvgl/lvgl

2.为下载的lvgl源码创建例程

需要注意的是lvgl所使用的不是makefile而是cmake,所以要用cmakelist

3.编写cmakelists

先来看一下lvgl里面的cmakelists

再.cmake中有:

# Option to define LV_LVGL_H_INCLUDE_SIMPLE, default: ON
option(LV_LVGL_H_INCLUDE_SIMPLE
       "Use #include \"lvgl.h\" instead of #include \"../../lvgl.h\"" ON)

# Option to define LV_CONF_INCLUDE_SIMPLE, default: ON
option(LV_CONF_INCLUDE_SIMPLE
       "Simple include of \"lv_conf.h\" and \"lv_drv_conf.h\"" ON)

# Option to set LV_CONF_PATH, if set parent path LV_CONF_DIR is added to
# includes
option(LV_CONF_PATH "Path defined for lv_conf.h")
get_filename_component(LV_CONF_DIR ${LV_CONF_PATH} DIRECTORY)

# Option to build shared libraries (as opposed to static), default: OFF
option(BUILD_SHARED_LIBS "Build shared libraries" OFF)

file(GLOB_RECURSE SOURCES ${LVGL_ROOT_DIR}/src/*.c)
file(GLOB_RECURSE EXAMPLE_SOURCES ${LVGL_ROOT_DIR}/examples/*.c)
file(GLOB_RECURSE DEMO_SOURCES ${LVGL_ROOT_DIR}/demos/*.c)

if (BUILD_SHARED_LIBS)
  add_library(lvgl SHARED ${SOURCES})
else()
  add_library(lvgl STATIC ${SOURCES})
endif()

add_library(lvgl::lvgl ALIAS lvgl)
add_library(lvgl_examples STATIC ${EXAMPLE_SOURCES})
add_library(lvgl::examples ALIAS lvgl_examples)
add_library(lvgl_demos STATIC ${DEMO_SOURCES})
add_library(lvgl::demos ALIAS lvgl_demos)

target_compile_definitions(
  lvgl PUBLIC $<$<BOOL:${LV_LVGL_H_INCLUDE_SIMPLE}>:LV_LVGL_H_INCLUDE_SIMPLE>
              $<$<BOOL:${LV_CONF_INCLUDE_SIMPLE}>:LV_CONF_INCLUDE_SIMPLE>)

# Include root and optional parent path of LV_CONF_PATH
target_include_directories(lvgl SYSTEM PUBLIC ${LVGL_ROOT_DIR} ${LV_CONF_DIR})

# Include /examples folder
target_include_directories(lvgl_examples SYSTEM
                           PUBLIC ${LVGL_ROOT_DIR}/examples)
target_include_directories(lvgl_demos SYSTEM
                           PUBLIC ${LVGL_ROOT_DIR}/demos)

target_link_libraries(lvgl_examples PUBLIC lvgl)
target_link_libraries(lvgl_demos PUBLIC lvgl)

# Lbrary and headers can be installed to system using make install
file(GLOB LVGL_PUBLIC_HEADERS "${CMAKE_SOURCE_DIR}/lv_conf.h"
     "${CMAKE_SOURCE_DIR}/lvgl.h")

if("${LIB_INSTALL_DIR}" STREQUAL "")
  set(LIB_INSTALL_DIR "lib")
endif()
if("${INC_INSTALL_DIR}" STREQUAL "")
  set(INC_INSTALL_DIR "include/lvgl")
endif()

install(
  DIRECTORY "${CMAKE_SOURCE_DIR}/src"
  DESTINATION "${CMAKE_INSTALL_PREFIX}/${INC_INSTALL_DIR}/"
  FILES_MATCHING
  PATTERN "*.h")

set_target_properties(
  lvgl
  PROPERTIES OUTPUT_NAME lvgl
             ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
             LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
             RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
             PUBLIC_HEADER "${LVGL_PUBLIC_HEADERS}")

install(
  TARGETS lvgl
  ARCHIVE DESTINATION "${LIB_INSTALL_DIR}"
  LIBRARY DESTINATION "${LIB_INSTALL_DIR}"
  RUNTIME DESTINATION "${LIB_INSTALL_DIR}"
  PUBLIC_HEADER DESTINATION "${INC_INSTALL_DIR}")

option

https://blog.csdn.net/lhl_blog/article/details/123553686

 根据上面这篇文章我们可以知道option的作用相当于定义,遵守以下几点

  • 1.第三格参数只要不是on都是off
  • 2.可以再cmake的时候修改定义的值,例如用-d....=ON or OFF
  • 3.子项目以父项目的定义为标准

 add_library

https://blog.csdn.net/mataojie/article/details/121466125

这个指令时cmake常用的指令,用来添加静态库和动态库的,或者时模块库参数如下

  • name 名字
  • STATIC|SHARED|MOUDLE:库的类型
  • EXCLUDE_FROM_ALL:加了EXCLUDE_FROM_ALL属性的target在默认编译的时候,不会被编译,如果要编译它们,需要手动编译
  • source:构建库的文件

例如:add_library(hello_library STATIC src/Hello.cpp )

target_compile_definitions

 

标签:LVGL,library,LV,lcd,t113,CONF,lvgl,DIR
From: https://www.cnblogs.com/recodemo/p/17611368.html

相关文章

  • 国产MCU-CW32F030开发学习-圆形GC9A01_LCD模块
    国产MCU-CW32F030开发学习-圆形GC9A01_LCD模块硬件平台CW32_48F大学计划板CW32_IOT_EVA物联网开发评估套件1.28寸圆形彩色TFT显示屏高清IPS模块240X240SPI接口GC9A01产品介绍1.28寸圆形IPS彩屏,支持RGB65K色显示,显示色彩丰富240X240分辨率,显示清晰IPS全视角面板,超宽可视范围采用......
  • t113-c-i2s设备设置尝试
    记录一下i2s设备设置,由于没买麦克风阵列所以结果应该是一个虚拟的设备显示1.设置设备树,板级设备树:由于我的板子上只有PB4567,所以只能设置PB4复用为in和out,不知道这样可不可以用,在学i2s的时候明明说是可以dat用一条线的。设置状态为okay2.menuconfig的设置3.烧录验证直接......
  • Undefined symbol HAL_SRAM_Init (referred from lcd.o) 报错无法使用HAL_SRAM_Init
    前言最近在使用HAL库配置FSMC的时候,发现在使用CubeMX生成的fsmc的配置文件,编译不会报错:UndefinedsymbolHAL_SRAM_Init(referredfromlcd.o)而自己移除CubeMX生成的配置文件,一步步自己配置,就会出现上诉报错,并且将stm32f4xx_hal_sram.h文件包括进去后,仍然报错,奇怪的是MDK编......
  • t113-c-i2s学习篇(cards)
    学习一下t113的i2s驱动1.模块功能规格介绍一堆看不懂的名词,处于半看懂半看不懂的状态2.模块源码结构介绍又是一堆看不懂的文件名字,还是不懂怎么用3.模块配置介绍3.1DeviceTree配置介绍什么是dmic?硬件接口之DMIC 举例,以i2s为例子:3.2board.dts板级配置介绍......
  • 温控表LCD驱动液晶屏驱动芯片VK1625
    产品品牌:永嘉微电/VINKA产品型号:VK1625封装形式:LQFP100/QFP100/DICE/COG产品年份:新年份  产品简介:VK1625是一个点阵式存储映射的LCD驱动器,可支持最大512点(64EGx8COM)的LCD屏。 单片机可通过3/4线串行接口配置显示参数和发送显示数据,也可通过指令进入省电模式。Z23+10 ......
  • v831-T113-c-udp发送篇
    又来分析udp,目标是从v831中获取到的图片信息发送给t113然后再屏幕上显示出来挫折一t113作为服务端,再接收到客户端发来的数据后会自动设置clinetaddr,那么我们就不再需要取从新aton这个ip地址了,直接使用clientaddrintudp_send(void){ //if(0==inet_aton("192.168.1.118",......
  • 国产MCU-CW32F030开发学习-圆形GC9A01_LCD模块
    国产MCU-CW32F030开发学习-圆形GC9A01_LCD模块硬件平台CW32_48F大学计划板CW32_IOT_EVA物联网开发评估套件1.28寸圆形彩色TFT显示屏高清IPS模块240X240SPI接口GC9A01产品介绍1.28寸圆形IPS彩屏,支持RGB65K色显示,显示色彩丰富240X240分辨率,显示清晰IPS全视角面板,超......
  • t113-c-framebuffer-画点篇
    本来今天是要结合udp的例子传输数据的,但是被一个数学逻辑搞了半天,记录一下避坑吧。代码#include<stdio.h>#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#include"linux/fb.h"#include<sys/ioctl.h>#include<sys/mman.h>#include<......
  • VK1623LCD液晶屏显示驱动芯片,适用各种LCD面板显示
    产品品牌:永嘉微电/VINKA产品型号:VK1623S封装形式:LQFP100/QFP100/DICE/COG产品年份:新年份  产品简介:VK1623S是一个点阵式存储映射的LCD驱动器,可支持最大384点(48EGx8COM)的LCD屏。单片机可通过3/4线串行接口配置显示参数和发送显示数据,也可通过指令进入省电模式。Z20+167 ......
  • t113-c-udp篇
    之前学习了tcp发送数据,但是效果很不理想,那么试一下用udp会怎么样,学习一下udp是怎么用用的吧看例子例子是在百问网下载的,serverclient这个有点奇怪,有点看不懂#include<sys/types.h>/*SeeNOTES*/#include<sys/socket.h>#include<string.h>#include<sys......