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

  • 5
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值