首页 > 其他分享 >LVGL--无操作系统移植

LVGL--无操作系统移植

时间:2024-08-13 16:18:48浏览次数:11  
标签:disp lvgl 操作系统 -- 缓冲 templ lv LVGL port

1、添加lvgl库到mdk工程

①在工程中建立文件结构,如下:

 

 

②把lvgl_v8.2库中需要的文件copy到“LVGL_test\Middlewares\LVGL\GUI\lvgl”下

 

③“lv_conf.h”文件的条件编译指令 #if 0 修改成 #if 1

 

④打开mdk工程先编译,然后新建Groups,把前面copy的文件添加到工程中

然后添加相关的C文件,具体如下:

 

⑤添加头文件路径

 

⑥需要关注“C99 Mode”有没有勾上,必须勾上!

 

2、配置输出(屏幕)

①“lv_port_disp_templ.c”&“lv_port_disp_templ.h”将条件编译指令#if 0 改成 #if 1。然后把输出设备的头文件包含到lv_port_disp_templ.c中(就是把“lcd.h”include进去啦)

编译,发现会有宏没有进行define

把define补上:

(我这是竖屏)

 

②在void lv_port_disp_init(void)中设置屏幕的缓冲方式,选择单缓冲。(不需要的部分注释掉)

Tips:屏幕的缓冲方式有3种:单缓冲、双缓冲、双屏缓冲。单缓冲刷新最慢,双缓冲较快,双屏缓冲是最丝滑的,但是双屏缓冲占用的空间非常大。在lvgl_v8.2版本中,单缓冲和双缓冲的速度差别不大,为了节省空间,可以使用单缓冲。试验用的是单缓冲。

 

③设置屏幕分辨率(这个在void lv_port_disp_init(void)中)

 

④实现屏幕填充(本质就是一个个画点最终形成面)

LCD_Color_Fill()是原子哥实现的函数,正常是需要自己来实现的。

 

3、配置输入(触摸屏)

①“lv_port_indev_templ.c”&“lv_port_indev_template.h” 将条件编译指令#if 0 改成 #if 1。然后把输入设备的头文件包含到lv_port_indev_templ.c中(就是把touch.h包进去!)

 

②实现触摸检测

 

③实现坐标获取

    

4、为lvgl提供时基,功能测试

①在定时器驱动C文件包含:#include "lvgl.h",并在定时器回调函数中调用:#include "lvgl.h"

原子哥选择用timer来提供时基,我用systick。在中断C文件中“include lvgl.h”,在SysTick_Handler()函数中调用:lv_tick_inc(x);

Systick中断是1ms执行一次,所以lv_tick_inc(x)的x写1(进入中断的时间间隔 = x 毫秒)。lv_tick_inc的作用实际上就是告诉lvgl库现在距上一次时间过了多久。

 

②main.c文件中要添加的部分

         包含需要的头文件

   

         LVGL库、输入输出设备的初始化

  

③在while中每隔5ms调用一次lv_timer_handler();

 

隔多少ms调用一次都行,看你喜欢。

④编写测试代码(while循环前调用即可)

 

 

标签:disp,lvgl,操作系统,--,缓冲,templ,lv,LVGL,port
From: https://www.cnblogs.com/Kim-blog/p/18357170

相关文章

  • 咖啡电子秤pcba方案设计与开发
    这是一款5KG量程,0.1g分度值的烘培咖啡秤芯片方案,该方案主控芯片采用SIC8833QFN32。它是一个带24bitADC的8位RISCMCU,内置8k×16Bits的OTP程序存储器,是一个同时带有488字节数据存储器(SRAM)的芯片。它是一个专应用于精度测量场景的芯片,具有上电复位(POR)、上电复位延迟定时器(典型......
  • NOI Linux VSCode使用指北
    NOILinuxVSCode使用指北安装NOILinux不是已经帮你做好这一步了吗?准备首先在这里对VSC的界面做一个介绍。1.终端VSC相对于其他的编辑器的优势是有一个非常直观的内置终端,这也让我们可以专心在这一个窗口内编辑和调试代码。召唤终端的快捷键是Ctrl+Shift+P!召唤终......
  • Linux应用程序重启:优雅实现应用程序的自动重启
    简介:在Linux服务器运行应用程序时,如果应用程序出现崩溃或异常终止,为保证服务的可靠性,自动重启是一种常见的应对措施。本文将介绍Linux下实现应用程序自动重启的方法,并提供代码实现例子,帮助读者优雅地处理应用程序的崩溃和重启。1.使用init或systemd管理器Linux系统中通常有i......
  • D42 2-SAT+二进制枚举 P3825 [NOI2017] 游戏
    视频链接: P3825[NOI2017]游戏-洛谷|计算机科学教育新生态(luogu.com.cn)//2-SAT+二进制枚举O(2^8*(n+m))#include<iostream>#include<cstring>#include<algorithm>usingnamespacestd;constintN=100005;inthead[N],to[N<<1],ne[N<<1],idx;......
  • 基于PaddleNLP信息抽取,uie微调打造自己专属的信息抽取模型
    基于PaddleNLP信息抽取,uie微调打造自己专属的信息抽取模型UIE模型简介UIE优势应用示例UIE开箱即用UIE适用抽取示例命名实体识别(NamedEntityRecognition,简称NER)关系抽取(RelationExtraction,简称RE)事件抽取(EventExtraction,简称EE)评论观点抽取情感倾向分类......
  • 汇率波动下的企业生存之道:汇率风险管理策略解析
    在全球化经济的浪潮中,企业如同航行在波涛汹涌的大海上的船只,不仅要面对市场的竞争,还要应对汇率波动带来的风险。汇率风险,一个在国际贸易中不可忽视的挑战,对跨境交易的企业尤为关键。本文将带您深入了解汇率风险的种类及其对企业的影响,并探讨企业如何有效应对这一挑战。汇率风险:企......
  • 随用随取的无旋Treap板子!
    使用说明及注意事项:使用命名空间+结构体进行封装,使用时只需jser::Treap或usingnamespacejser即可。例如:/*way1*/usingnamespacejser;Treaptree;/*way2*/jser::Treaptree;随机数生成采用random_device和mt19937,在某些评测姬上可能不适用,可以换用rand(注意数......
  • centos 配置或安装国内yum源
    前言:本文先讲述配置yum,再讲述安装yum,因为一般系统会已经安装有yum了的,可以直接输入指令yum-回车确认(如下述安装-第6点)。一、配置yum1、查看看是否存在yum[root@localhost~]#rpm-qa|grepyumyum-langpacks-0.4.2-7.el7.noarchyum-3.4.3-168.el7.centos.noarchPackage......
  • PCB敷地铜皮距离板框间距:推荐15mil
    整个电路板一般敷地铜皮设置间距应该多少合适呢?有木有什么大厂的指导书之类的?或者理论指导类的书籍可以学习参考Altiumdesigner官方给的建议是>=0.03mm或12mil。带电铜皮与PCB板边的间距最好不小于0.3mm。如上图所示,在Design-Rules-Boardoutline页面来设置该项间距规......
  • AP5126 降压恒流IC 5-100V 1.5A 内置MOS 手电筒 电动车灯与汽车灯方案
    产品描述AP5126是一款PWM工作模式,高效率、外围简单、内置功率管,适用于输入的高精度降压LED恒流驱动芯片。输出最大功率可达15W,最大电流1.5A。AP5126可实现全亮/半亮功能切换,通过MODE切换:全亮/半亮/循环模式。AP5126工作频率固定在140KHZ,同时内置抖频电路,可以降低对其他设......