更多源码分析请访问:LVGL 源码分析大全
1、问题描述
由于lv_timer_create
的执行实现方式为 后进先出
的栈执行方式,这导致在添加一些需要顺序执行的延时任务时会很麻烦,因此,需要实现一个 先进先出
接口。
2、源码分析
2.1、ESP32中UI操作的安全保证
以ESP32中 examples/factory_demo
为例:ESP32上的LVGL是采用多任务(相当于Linux上的多线程)的方式来实现,这样导致在多数情况下,操作UI需要使用UI线程的锁,来保证操作的安全性。凡是保护在 ui_acquire
和 ui_release
中的操作UI接口,都是在UI线程非工作状态下进行的,这样不会产生冲突(LVGL本身是不支持多线程操作)。在 ui_main.c
中初始化LVGL工作任务如下