【案例讲解】LVGL 向UI任务发送顺序执行的延时任务方法

本文针对LVGL库在ESP32上遇到的UI延时任务执行问题进行探讨,通过源码分析,提出一种修改lv_timer_create的方法,确保在多任务环境下UI操作的安全。文章详细阐述了ESP32中UI操作的安全保证机制,并展示了如何通过队列实现延时任务的顺序执行。
摘要由CSDN通过智能技术生成

更多源码分析请访问:LVGL 源码分析大全


1、问题描述

由于lv_timer_create 的执行实现方式为 后进先出 的栈执行方式,这导致在添加一些需要顺序执行的延时任务时会很麻烦,因此,需要实现一个 先进先出 接口。

2、源码分析

2.1、ESP32中UI操作的安全保证

以ESP32中 examples/factory_demo 为例:ESP32上的LVGL是采用多任务(相当于Linux上的多线程)的方式来实现,这样导致在多数情况下,操作UI需要使用UI线程的锁,来保证操作的安全性。凡是保护在 ui_acquireui_release 中的操作UI接口,都是在UI线程非工作状态下进行的,这样不会产生冲突(LVGL本身是不支持多线程操作)。在 ui_main.c 中初始化LVGL工作任务如下࿱

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bigan(安)

打赏100可获技术支持一次

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值