嵌入式Linux下LVGL的移植与配置
一.sdk源码下载路径
1.官方源码下载路径如下:
https://github.com/lvgl/lvgl
git下载方式 git clone https://github.com/lvgl/lvgl.git
2.个人移植好的源码8.2版本下载路径:
链接:https://pan.baidu.com/s/1jyqIennsQpv-RB4RyKvZyg?pwd=c68e
提取码:c68e
注意: 以下的配置均基于个人移植的sdk上修改.
二.编译方法
解压sdk源码后修改Makefile文件,修改如下
直接修改编译器(编译器需要添加进系统的环境变量中)

修改完Makefile文件后直接 make编译
三.配置文件修改说明
配置文件位于sdk根目录下lv_conf.h
1.图层背景透明配置
有些平台的视频层位于UI图层的下方,会导致视频被UI遮挡的情况,此时需要将UI的图层背景设置成透明即可看见视频画面。
配置方法如下:
#define LV_COLOR_SCREEN_TRANSP 1 // 将此选项打开//代码设置部件背景透明
lv_style_t tTempStyle;
lv_style_init(&tTempStyle);
v_style_set_bg_opa(&tTempStyle, LV_OPA_TRANSP);
lv_obj_add_style(lv_scr_act(), &tTempStyle, 0);
lv_obj_set_size(lv_scr_act(), 1024, 600);
2.本地图片解码显示实现
修改配置如下:
选择系统类型,开启对应的图片解码库
/*API for open, read, etc*/
#define LV_USE_FS_POSIX 1
#if LV_USE_FS_POSIX#define LV_FS_POSIX_LETTER 'A' /*Set an upper cased letter on which the drive will accessible (e.g. 'A')*/#define LV_FS_POSIX_PATH "" /*Set the working directory. File/directory paths will be appended to it.*/#define LV_FS_POSIX_CACHE_SIZE 0 /*>0 to cache this number of bytes in lv_fs_read()*/
#endif// 打开图片的解码配置
/*PNG decoder library*/
#define LV_USE_PNG 1/*BMP decoder library*/
#define LV_USE_BMP 1/* JPG + split JPG decoder library.* Split JPG is a custom format optimized for embedded systems. */
#define LV_USE_SJPG 1/*GIF decoder library*/
#define LV_USE_GIF 1
默认情况下使用的是固定内存的分配,解码大图片的时候会出错,需要修改配置文件如下:
// 打开如下配置,使用系统动态分配
/*1: use custom malloc/free, 0: use the built-in `lv_mem_alloc()` and `lv_mem_free()`*/
#define LV_MEM_CUSTOM 1
显示的图片的代码案例:
lv_obj_t *pTempImg = lv_img_create(lv_scr_act());
// lv_img_set_src(pTempImg, "A:./png_decoder_test.png"); // 加载png图片
lv_img_set_src(pTempImg, "A:/customer/bg1024_600.jpg");// 加载jpg图片
lv_img_t *img = (lv_img_t *)pTempImg;
printf("Jamon ==>> img w=%d, h=%d\n", img->w, img->h);
lv_obj_set_size(pTempImg, img->w, img->h);
lv_obj_set_pos(pTempImg, 0, 0);
3.打开log调试,并使用printf输出
修改配置如下:
/*Enable the log module*/
#define LV_USE_LOG 1 // 开启log
#if LV_USE_LOG/*How important log should be added:*LV_LOG_LEVEL_TRACE A lot of logs to give detailed information*LV_LOG_LEVEL_INFO Log important events*LV_LOG_LEVEL_WARN Log if something unwanted happened but didn't cause a problem*LV_LOG_LEVEL_ERROR Only critical issue, when the system may fail*LV_LOG_LEVEL_USER Only logs added by the user*LV_LOG_LEVEL_NONE Do not log anything*/#define LV_LOG_LEVEL LV_LOG_LEVEL_WARN // 输出级别 /*1: Print the log with 'printf';*0: User need to register a callback with `lv_log_register_print_cb()`*/#define LV_LOG_PRINTF 1 // 使用系统函数printf输出/*Enable/disable LV_LOG_TRACE in modules that produces a huge number of logs*/#define LV_LOG_TRACE_MEM 1#define LV_LOG_TRACE_TIMER 1#define LV_LOG_TRACE_INDEV 1#define LV_LOG_TRACE_DISP_REFR 1#define LV_LOG_TRACE_EVENT 1#define LV_LOG_TRACE_OBJ_CREATE 1#define LV_LOG_TRACE_LAYOUT 1#define LV_LOG_TRACE_ANIM 1#endif /*LV_USE_LOG*/
相关文章:
嵌入式Linux下LVGL的移植与配置
一.sdk源码下载路径 1.官方源码下载路径如下: https://github.com/lvgl/lvgl git下载方式 git clone https://github.com/lvgl/lvgl.git 2.个人移植好的源码8.2版本下载路径: 链接:https://pan.baidu.com/s/1jyqIennsQpv-RB4RyKvZyg?pwdc68e 提取…...
leetcode每日一练-第70题-爬楼梯
一、思路 动态规划 二、解题方法 使用一个动态规划数组 dp 来记录到达每个台阶的不同方法数。初始情况下,当台阶数为 1 时,方法数为 1,当台阶数为 2 时,方法数为 2。然后,我们从第 3 阶开始逐步计算每一阶的方法数&…...
设备使用RTMP推流到安防监控EasyCVR视频汇聚平台,为何只有FLV格式无法播放?
TSINGSEE青犀视频安防监控视频汇聚平台EasyCVR基于云边端一体化架构,具有强大的数据接入、处理及分发能力,可提供视频监控直播、云端录像、云存储、录像检索与回看、智能告警、平台级联、云台控制、语音对讲、智能分析等功能。 智能视频监控平台EasyCVR可…...
arcgis宗地或者地块四至权利人信息提取教程
ARCGIS怎样将图斑四邻的名称及方位加入其属性表 以前曾发表过一篇《 如何把相邻图斑的属性添加在某个字段中》的个人心得,有些会员提出了进一步的要求,不但要相邻图斑的名称,还要求有方位,下面讲一下自己的做法。 基本思路是:连接相邻图斑质心,根据连线的角度确定相邻图斑…...
乐鑫首创|使用 ESP RainMaker® 私有云定制 Matter 生态
ESP RainMaker 是乐鑫的 AIoT 云平台,支持客户自主部署私有物联网云,从而全面掌握数据所有权和管理权,实现定制功能与服务。ESP RainMaker 云后端采用 AWS 无服务器架构,拥有开源的 iOS 和 Android 移动端 APP、第三方语音助手集成…...
【算法|数组】快慢指针
算法|数组——快慢指针 引入 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你…...
C++字符串:使用 std::string
C字符串:使用 std::string 初始化方法一 std::string 变量名称 { “字符串”}; std::string str { " 这是一个字符串" };std::cout << str; std::cin >> str;初始化方法二 std::string 变量名称 { “字符串”&#x…...
目前Java后端就业前景怎么样?
前言 并不乐观,看看现在的就业形式就知道了,基本上是僧多粥少的情况,你可能会看到很多编程语言排行榜或者流行榜中Java的排名很高,如同下面这种: 看排名确实可以粗略的得知语言当下的流行度、使用率,但是它…...
C语言基础(持续更新)
常用函数 strrchr 描述 C 库函数 char *strrchr(const char *str, int c) 在参数 str 所指向的字符串中搜索最后一次出现字符 c(一个无符号字符)的位置。测试代码 #include "stdio.h" #include "string.h"int main() {printf(&q…...
从源码层面深度剖析Spring循环依赖 | 京东云技术团队
以下举例皆针对单例模式讨论 图解参考 https://www.processon.com/view/link/60e3b0ae0e3e74200e2478ce 1、Spring 如何创建Bean? 对于单例Bean来说,在Spring容器整个生命周期内,有且只有一个对象。 Spring 在创建 Bean 过程中࿰…...
Distance 2023牛客暑期多校训练营6 B
登录—专业IT笔试面试备考平台_牛客网 题目大意:给出两个长度为n的数组a,b,每次操作可以令一个数1,将a的一个子集A变成和b的一个子集B变成完全相同需要的最少操作数为C(A,B),求对于a的所有子集对所有b的子集的C(A,B)的…...
【Pandas】学习笔记之groupby()、agg()、transform()
在数据分析过程中经常需要对数据集进行分组,并且统计均值,最大值等等。那么 groupby() 的学习就十分有必要了 groupby(): 分组 官方文档: DataFrame.groupby(byNone, axis0, levelNone, as_indexTrue, sortTrue, group_keysTrue, observedF…...
使用正则表达式 移除 HTML 标签后得到字符串
需求分析 后台返回的数据是 这样式的 需要讲html 标签替换 high_light_text: "<span stylecolor:red>OPPO</span> <span stylecolor:red>OPPO</span> 白色 01"使用正则表达式 function stripHTMLTags(htmlString) {return htmlString.rep…...
Java中String方法魔性学习
这里写目录标题 先进行专栏介绍String详解常用构造方法代码演示常用成员方法代码示例总结 先进行专栏介绍 本专栏是自己学Java的旅途,纯手敲的代码,自己跟着黑马课程学习的,并加入一些自己的理解,对代码和笔记 进行适当修改。希望…...
Smartbi 权限绕过漏洞复现(QVD-2023-17461)
0x01 产品简介 Smartbi大数据分析产品融合BI定义的所有阶段,对接各种业务数据库、数据仓库和大数据分析平台,进行加工处理、分析挖掘和可视化展现;满足所有用户的各种数据分析应用需求,如大数据分析、可视化分析、探索式分析、复杂…...
springboot自定义错误消息
为了提供自定义错误消息提示,springboot在resources目录下,有一个文件ValidationMessages.properties 用于存储 验证错误的消息提示: 比如: 这样一个ValidationMessage.properties username.notempty用户名不能为空 username.len…...
微信小程序申请步骤
微信公众平台链接:https://mp.weixin.qq.com/ 1、进到微信公众平台,点一下“点击注册”,挑选账号申请种类“小程序”,填好微信小程序用户信息,包含电子邮箱、登陆密码等。 2、微信公众平台会发送一封电子邮件…...
嘉楠勘智k230开发板上手记录(四)--HHB神经网络模型部署工具
按照K230_AI实战_HHB神经网络模型部署工具.md,HHB文档,RISC-V 编译器和模拟器安装来 一、环境 1. 拉取docker 镜像然后创建docker容器并进入容器 docker pull hhb4tools/hhb:2.4.5 docker run -itd --namehhb2_4 -p 22 "hhb4tools/hhb:2.4.5"…...
微信小程序的自定义TabBar及Vant的使用
一、安装Vant 1、在 资源管理器 空白位置,点右键打开 在外部终端窗口打开 2、初始化NPM npm init -y 3、安装命令 npm i vant/weapp1.3.3 -S --production 4、构建NPM包 在 工具 里选择构建NPM包 5、删除style:v2 在app.json里,删除"style"…...
canvas实现代码雨
学习抖音: 渡一前端必修课 效果图: 全部代码: <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge">&…...
OpenClaw任务链设计:千问3.5-35B-A3B-FP8复杂流程自动化
OpenClaw任务链设计:千问3.5-35B-A3B-FP8复杂流程自动化 1. 为什么需要任务链自动化 上周我遇到一个典型的工作场景:需要从20份PDF报告中提取关键数据,整理成Excel表格,再根据这些数据生成分析图表,最后通过邮件发送…...
NonBlockingDelay:嵌入式非阻塞延时库原理与实践
1. 项目概述NonBlockingDelay 是一个专为嵌入式系统设计的轻量级、零依赖、单头文件(.hpp)非阻塞延时库。其核心目标是彻底替代delay()这类会挂起 CPU、阻塞所有任务执行的同步延时函数,使开发者能够在维持主循环(loop()ÿ…...
飞书机器人接入OpenClaw指南:千问3.5-27B实现智能问答助手
飞书机器人接入OpenClaw指南:千问3.5-27B实现智能问答助手 1. 为什么选择OpenClaw飞书机器人组合 去年我接手了一个技术文档整理项目,每天需要处理上百份飞书文档的归类与摘要生成。手动操作不仅效率低下,还经常漏掉关键更新。直到发现Open…...
L293D电机驱动库:嵌入式直流电机控制实战指南
1. L293D电机驱动库深度解析:面向嵌入式工程师的工程实践指南L293D是TI(德州仪器)推出的双H桥直流电机驱动芯片,广泛应用于Arduino、ESP32等微控制器平台的中小功率直流电机控制场景。本库并非简单封装GPIO操作,而是针…...
CH32X035 USB MIDI免驱库:RISC-V嵌入式音乐硬件开发指南
1. 项目概述CH32X035_USBMIDI 是一款专为沁恒电子(WCH)CH32X035 系列 RISC-V 微控制器设计的高性能 USB MIDI 设备库。该库并非基于通用 CDC ACM 框架的简单封装,而是深度绑定 CH32X035 片上 USBFS(USB Full-Speed)硬件…...
基于MATLAB平台PCA的人脸识别:开启识别新征程
基于MATLAB平台PCA的人脸识别,程序已调通,可将自己的数据替换进行识别。 得到识别准确率结果。最近在研究人脸识别技术,基于MATLAB平台利用PCA(主成分分析)实现了一个人脸识别程序,现在跟大家分享分享。 PC…...
驾校招生断崖式下跌?这3个数据驱动的获客策略,让报名量翻倍
驾校招生断崖式下跌?这3个数据驱动的获客策略,让报名量翻倍最近和几位驾校校长聊天,听到最多的感慨是:“以前学员排队等车,现在教练排队等学员。”这不是个别现象。某地驾培协会数据显示,2023年区域性驾校平…...
【FastAPI】 响应类型详解:从默认 JSON 到自定义响应
FastAPI 响应类型详解:从默认 JSON 到自定义响应(HTML/文件/流/重定向) 一、FastAPI 响应机制概述 FastAPI 默认会将路径操作函数返回的 Python 对象(如 dict、list、Pydantic Model)自动转换为 JSON 格式,…...
Health Agent开放平台:企业级健康医疗AI Agent基础设施
在人工智能加速渗透各行各业的今天,健康医疗领域正迎来由智能体驱动的深刻变革。面向专业场景的健康医疗AI Agent,正成为企业提升服务效能、优化运营流程、构建差异化竞争力的核心引擎。而集专业性、灵活性与可扩展性于一体的企业级智能体平台࿰…...
WaveTools:解决鸣潮玩家性能优化与数据管理痛点的开源工具
WaveTools:解决鸣潮玩家性能优化与数据管理痛点的开源工具 【免费下载链接】WaveTools 🧰鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools WaveTools是一款专为《鸣潮》PC玩家设计的开源辅助工具,集成性能优化、账…...
