目录
一、定时器结构体
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);
三、示例
demo01 重复运行定时器
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个滴答时钟
}
demo02 运行指定次数的定时器
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);
}