硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1449|回复: 9
收起左侧

[LVGL] 有没有办法打开关闭(使能/失能)LVGL

[复制链接]

5

主题

21

回帖

36

积分

新手上路

积分
36
发表于 2024-7-24 14:31:11 | 显示全部楼层 |阅读模式
不知道大家开发中有没有尝试过LVGL跟单纯的画点显示进行混合使用?现在我这使用LVGL的roller实现滑动对象,然后其他的ui还是用画点函数在屏幕显示,我想通过一个途径能实现开关LVGL来显示roller对象并且不会影响画点函数画出的ui。但是我发现好像没有人有做过类似的方案,所以很迷茫。直接用lv_deinit()去关掉好像可以,但是我在电脑模拟器上如果这样操作的话,只会退出应用程序框,在资源管理器上还是能看到main程序在运行,我担心这个在单片机上运行会导致内存泄露等一些问题导致单片机运行崩溃,想看看大家有没有什么好方法。我移植在MCU上的是LVGL8.3,模拟器用的是LVGLv9。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115896
QQ
发表于 2024-7-25 11:57:03 | 显示全部楼层
帮顶。
回复

使用道具 举报

0

主题

13

回帖

13

积分

新手上路

积分
13
发表于 2024-7-27 16:36:59 | 显示全部楼层
方法1:LVGL好像可以绘制透明背景,如果你的硬件支持多图层,可以绘制在不同的图层上。
方法2:把你的UI绘制到缓冲区,然后LVGL支持Canvas控件,可以把你的UI缓冲区载入到Canvas。
回复

使用道具 举报

5

主题

21

回帖

36

积分

新手上路

积分
36
 楼主| 发表于 2024-7-29 09:55:57 | 显示全部楼层
xiaoleizii 发表于 2024-7-27 16:36
方法1:LVGL好像可以绘制透明背景,如果你的硬件支持多图层,可以绘制在不同的图层上。
方法2:把你的UI绘 ...

我有可能没说清楚奥,抱歉。我的LVGL做的是一个窗口,不是全屏幕的LVGL,只用了ROLLER,想通过一个方法 可以把LVGL的窗口打开/关闭,把那块区域放出来我以及用那块区域用我后面说的这个UI,LVGL外面的界面是单独画点的UI,是通过图片转C数组做的UI
回复

使用道具 举报

23

主题

331

回帖

400

积分

高级会员

积分
400
发表于 2024-7-29 10:45:51 | 显示全部楼层
cmz 发表于 2024-7-29 09:55
我有可能没说清楚奥,抱歉。我的LVGL做的是一个窗口,不是全屏幕的LVGL,只用了ROLLER,想通过一个方法  ...

失能的时候能不能把底层屏幕驱动的那些接口让它们直接返回,不操作屏幕,但是lvgl的软件还是让它正常跑。
回复

使用道具 举报

5

主题

21

回帖

36

积分

新手上路

积分
36
 楼主| 发表于 2024-7-29 11:28:23 | 显示全部楼层
tovinz 发表于 2024-7-29 10:45
失能的时候能不能把底层屏幕驱动的那些接口让它们直接返回,不操作屏幕,但是lvgl的软件还是让它正常跑。

这可能是一个方法?目前我是通过在裸机上定时器中关掉lv_tick_inc之后清除屏幕,发现是可以清除的,而且也能重新显示lvgl的界面,不过可能没那么完美。我的这个程序还得跑FOC,可能lvgl一直跑是不行的,会影响FOC
回复

使用道具 举报

0

主题

13

回帖

13

积分

新手上路

积分
13
发表于 2024-7-29 17:37:14 | 显示全部楼层
cmz 发表于 2024-7-29 11:28
这可能是一个方法?目前我是通过在裸机上定时器中关掉lv_tick_inc之后清除屏幕,发现是可以清除的,而且 ...

LVGL的绘制是在lv_task_handler()中,你只要主循环里不调用这个,它就完全不工作了,需要的时候再调用就行
回复

使用道具 举报

5

主题

21

回帖

36

积分

新手上路

积分
36
 楼主| 发表于 2024-7-30 09:18:13 | 显示全部楼层
xiaoleizii 发表于 2024-7-29 17:37
LVGL的绘制是在lv_task_handler()中,你只要主循环里不调用这个,它就完全不工作了,需要的时候再调用就 ...

这样的吗,感谢。那么lv_tick_inc()需不需要关呀,需要的时候再打开是不是不占用单片机的资源了
回复

使用道具 举报

0

主题

13

回帖

13

积分

新手上路

积分
13
发表于 2024-7-31 09:17:02 | 显示全部楼层
cmz 发表于 2024-7-30 09:18
这样的吗,感谢。那么lv_tick_inc()需不需要关呀,需要的时候再打开是不是不占用单片机的资源了

lv_tick_inc()的作用是提供时钟用的,其实就是变量+1操作,然后LVGL的lv_conf.h文件里设置了页面刷新的间隔,时间到了后lv_task_handler()就绘制页面。要不要屏蔽看你需求。
回复

使用道具 举报

5

主题

21

回帖

36

积分

新手上路

积分
36
 楼主| 发表于 2024-8-1 08:39:39 | 显示全部楼层
xiaoleizii 发表于 2024-7-31 09:17
lv_tick_inc()的作用是提供时钟用的,其实就是变量+1操作,然后LVGL的lv_conf.h文件里设置了页面刷新的间 ...

明白了,感谢。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-25 16:59 , Processed in 0.342878 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表