LVGL 定时器
LVGL 8.0 以后好像取消了自定义任务模块,想要使用多线程只能使用系统的线程。
一、定时器结构体
typedef struct _lv_timer_t {
uint32_t period; // 定时器运行的频率
uint32_t last_run; // 定时器上次运行的时间
lv_timer_cb_t timer_cb; // 定时器注册的回调函数
void * user_data; // 用户自定义数据
int32_t repeat_count; // 重复次数,-1为永久重复,0为关闭,大于0为重复次数。
uint32_t paused : 1; // 定时器运行状态
} lv_timer_t;
二、常用函数
/* 创建定时器 */
lv_timer_t * lv_timer_create(lv_timer_cb_t timer_xcb, uint32_t period, void * user_data);
/* 删除定时器 */
void lv_timer_del(lv_timer_t * timer);
/* 使定时器挂起 */
void lv_timer_pause(lv_timer_t * timer);
/* 使定时器进入运行状态 */
void lv_timer_resume(lv_timer_t * timer);
/* 设置定时器的回调函数 */
void lv_timer_set_cb(lv_timer_t * timer, lv_timer_cb_t timer_cb);
/* 设置定时器的运行频率 */
void lv_timer_set_period(lv_timer_t * timer, uint32_t period);
/* 这里应该是读取定时器上次运行的时间 */
void lv_timer_ready(lv_timer_t * timer);
/* 设置定时器运行的次数 */
void lv_timer_set_repeat_count(lv_timer_t * timer, int32_t repeat_count);
/* 重置定时器运行的频率 */
void lv_timer_reset(lv_timer_t * timer);
/* 启用或禁用整个定时器处理 */
void lv_timer_enable(bool en);
/* 获取定时器空闲百分比 */
uint8_t lv_timer_get_idle(void);
/* 遍历定时器 */
lv_timer_t * lv_timer_get_next(lv_timer_t * timer);
注意: 这里定时器使用的滴答时钟是移植时运行lv_tick_inc()的时间,比如我10ms运行一次lv_tick_inc(),那么lvgl的周期设置为100时,对应的是 100*10ms = 1s。
三、使用案例
案例一
重复运行定时器lv_timer_t * lvgl_task1 = NULL; void lvgl_task1_cb(lv_timer_t * tmr)
{
LV_LOG_USER("timer test ......");
} void lvgl_gui_test(void)
{
lv_obj_t *test_label = lv_label_create(lv_scr_act());
lv_label_set_text(test_label, LV_SYMBOL_OK); // 正常显示,则应显示一个 ✓ 字符。
lv_obj_align(test_label, LV_ALIGN_CENTER, 0, 0); lvgl_task1 = lv_timer_create(lvgl_task1_cb, 1000, 0); // 运行周期为lvgl的1000个滴答时钟
}
案例二
运行指定次数的定时器lv_timer_t * lvgl_task1 = NULL; void lvgl_task1_cb(lv_timer_t * tmr)
{
LV_LOG_USER("timer test ......");
} void lvgl_gui_test(void)
{
lv_obj_t *test_label = lv_label_create(lv_scr_act());
lv_label_set_text(test_label, LV_SYMBOL_OK); // 正常显示,则应显示一个 ✓ 字符。
lv_obj_align(test_label, LV_ALIGN_CENTER, 0, 0); lvgl_task1 = lv_timer_create(lvgl_task1_cb, 1000, 0); // 运行周期为lvgl的1000个滴答时钟
lv_timer_set_repeat_count(lvgl_task1, 5);
}
LVGL 定时器的更多相关文章
- FreeRTOS+LVGL|Freertos+lvgl如何配置lvgl的心跳和任务管理器
目录 配置lvgl心跳(Tick) 配置lvgl任务管理器(Task Handler) LVGL中文手册 lvgl需要系统滴答声(心跳)才能知道动画和其他任务的经过时间,所以我们必须要配置好lvgl的 ...
- LVGL库入门教程01-移植到STM32(触摸屏)
LVGL库移植STM32 LVGL库简介 LVGL(Light and Versatile Graphics Library)是一个免费.开源的嵌入式图形库,可以创建丰富.美观的界面,具有许多可以自定 ...
- AIR32F103(十) 在无系统环境和FreeRTOS环境集成LVGL
目录 AIR32F103(一) 合宙AIR32F103CBT6开发板上手报告 AIR32F103(二) Linux环境和LibOpenCM3项目模板 AIR32F103(三) Linux环境基于标准外 ...
- Objective-C三种定时器CADisplayLink / NSTimer / GCD的使用
OC中的三种定时器:CADisplayLink.NSTimer.GCD 我们先来看看CADiskplayLink, 点进头文件里面看看, 用注释来说明下 @interface CADisplayLin ...
- 微信小程序中利用时间选择器和js无计算实现定时器(将字符串或秒数转换成倒计时)
转载注明出处 改成了一个单独的js文件,并修改代码增加了通用性,点击这里查看 今天写小程序,有一个需求就是用户选择时间,然后我这边就要开始倒计时. 因为小程序的限制,所以直接选用时间选择器作为选择定时 ...
- [Java定时器]用Spring Task实现一个简单的定时器.
今天做一个项目的的时候需要用到定时器功能.具体需求是: 每个月一号触发一次某个类中的方法去拉取别人的接口获取上一个月份车险过期的用户.如若转载请附上原文链接:http://www.cnblogs.co ...
- Node+fs+定时器(node-schedule)+MySql
目标:将本人写博客时候的截图保存到桌面的图片 执行保存到指定文件进行整理 并写入数据库 先看最终的目录结构: package.json文件: { "name": "zqz ...
- 深入理解定时器系列第一篇——理解setTimeout和setInterval
× 目录 [1]setTimeout [2]setInterval [3]运行机制[4]作用[5]应用 前面的话 很长时间以来,定时器一直是javascript动画的核心技术.但是,关于定时器,人们通 ...
- 前端开发:setTimeout与setInterval 定时器与异步循环数组
前端开发:setTimeout与setInterval 定时器与异步循环数组 前言: 开通博客园三个月以来,随笔记录了工作中遇到的大大小小的难题,也看过无数篇令人启发的文章,我觉得这样的环境是极好的, ...
- 转载---javascript 定时器总结
转载:http://www.jb51.net/article/40193.htm JS里设定延时: 使用SetInterval和设定延时函数setTimeout 很类似.setTimeout 运用在延 ...
随机推荐
- 记录--前端项目中运行 npm run xxx 的时候发生了什么?
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 npm 是 node 捆绑的依赖管理器,常用程度可想而知.那么你每天都在 npm/yarn run 的命令到底是如何运行项目的呢? 前端项 ...
- KingbaseES 避免表的重写与数据类型二进制兼容
一.关于KingbaseES变更表结构表的重写: 1.修改表结构可能会导致表进行重写(表OID发生变化). 2.修改表结构带有索引或者字段类型长度或者精度操作时,会触发索引重建. 3.不修改列内容且旧 ...
- 【Java面试题】Struts2
七.Struts2 54)Struts2 执行流程 客户端发送请求,请求到达服务端,由 struts 的核心控制器ActionServlet拦截请求. 核心控制器调⽤ action 映射器匹配请求路径 ...
- 实现一个简单的echarts柱状图PythonFlask
bar.html 1 <!DOCTYPE html> 2 <html style="height: 100%"> 3 <head> 4 < ...
- 鸿蒙HarmonyOS实战-ArkUI组件(Button)
一.Button Button(按钮)是一种常见的用户界面控件,通常用于触发操作或提交数据.Button 拥有文本标签和一个可点击的区域,用户点击该区域即可触发相应的操作或事件. Button 的主要 ...
- 基于文件语义实现S3接口语义的注意事项
本文标题中提到的文件语义,指的是POSIX规范. S3指的是AWS提供的对象存储服务以及相关接口.为方便描述,下文中以对象语义替代S3接口语义. 文件语义和对象语义存在比较多的差异. 对象语义不支持文 ...
- OpenHarmony Meetup 2023 广州站圆满举办,城市巡回全面启航
"OpenHarmony正当时--技术开源"OpenHarmony Meetup 2023城市巡回活动,旨在通过meetup线下交流形式,解读OpenHarmony作为下一代智 ...
- OpenHarmony社区运营报告(2022年12月)
本月快讯 • 本月新增22款产品通过兼容性测评,累计220款产品通过兼容性测评. • 12月28日,OpenAtom OpenHarmony(以下简称"OpenHarmony")凭 ...
- MySQL基本手册
MySQL配置文件 MySQL软件使用的配置文件名为my.ini,在安装目录下. MySQL常用配置参数: 1.default-character-set:客户端默认字符集. 2.character- ...
- C++调用Python-1:hello world
#include "Python.h" #include <iostream> using namespace std; int main(int argc, char ...