LVGL学习-timer组件的API了解及使用
Posted 沉默的小宇宙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LVGL学习-timer组件的API了解及使用相关的知识,希望对你有一定的参考价值。
LVGL 自带了一个软件定时器组件,可以灵活支持函数的回调。定时器的句柄如下
typedef struct _lv_timer_t
uint32_t period; /**< How often the timer should run*/
uint32_t last_run; /**< Last time the timer ran*/
lv_timer_cb_t timer_cb; /**< Timer function*/
void * user_data; /**< Custom user data*/
int32_t repeat_count; /**< 1: One time; -1 : infinity; n>0: residual times*/
uint32_t paused : 1;
lv_timer_t;
period:回调周期
timer_cb:回调函数
user_data:用户数据,做函数的入参用
repeat_count:重复次数,-1为永久重复,0为关闭,>0为重复次数。
其他参数一般不需要关心
主要的api接口
//创建
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_set_repeat_count(lv_timer_t * timer, int32_t repeat_count);
//复位回调周期的时间
void lv_timer_reset(lv_timer_t * timer);
主要的就是以上几个,其他的一般也用不到,主要还是理解下定时器的句柄,以及配合api就可以方便的使用。
这里需要注意两点:
1. 移植后需要调用lv_init接口,这个接口里面会初始化定时器的相关内容。
2. LVGL的时基需要配置好,配置有不同方式可以实现。这里我使用的是用户自定方式。
//lv_config.h文件
#define LV_TICK_CUSTOM 1
#if LV_TICK_CUSTOM
#define LV_TICK_CUSTOM_INCLUDE "bsp_systick.h" /*Header for the system time function*/
#define LV_TICK_CUSTOM_SYS_TIME_EXPR (millis()) /*Expression evaluating to current system time in ms*/
#endif /*LV_TICK_CUSTOM*/
//滴答定时器实现
/** @fn u32 millis(void)
* @brief 获取系统运行时间
* @param none
* @return 系统运行时间:ms单位
* @note rollover in 49 days
*/
u32 millis(void)
return sysTickUptime;
测试例程:
lv_timer_t * task1 = NULL;
void task1_cb(lv_timer_t * tmr)
DEBUG_INFO("111111111156565656556\\n");
void test(void)
lv_init();
lv_port_disp_init();
// lv_port_indev_init();
task1 = lv_timer_create(task1_cb, 500, 0);
lv_timer_set_repeat_count(task1,10);
while(1)
lv_task_handler();
delay_ms(10);
运行结果:
By Urien 2022.5
以上是关于LVGL学习-timer组件的API了解及使用的主要内容,如果未能解决你的问题,请参考以下文章
STM32+LittleVgl(LVGL)文件系统API使用