LVGL task任务系统(3)

lv_task.h

lvgl自带任务管理系统,类似于软件定时器,并且支持优先级,相关API在lv_task.h

例子

创建任务task,周期1000ms,优先级LV_TASK_PRIO_MID,回调里变量自加,加到10删除此任务。

uint8_t test_data = 0;
static void task_cb(lv_task_t* task)
{
	uint8_t *dat = (uint8_t*)task->user_data;
	printf("tick: %d test_data %d\n",lv_tick_get(),*dat);
	(*dat)++;
	if(*dat == 10)
		lv_task_del(task);
}

void lv_ex_task(void)
{
    lv_task_t * task = lv_task_create(task_cb,1000,LV_TASK_PRIO_MID, &test_data);
}

仿真结果
在这里插入图片描述

可以看出时间不是很准确,其中lv_task_handler()是这样调用的

    while (1) {
        /* Periodically call the lv_task handler.
        * It could be done in a timer interrupt or an OS task too.*/
        lv_task_handler();
        Sleep(10);       /*Just to let the system breathe */
    }

还有如下常用API

使任务回调函数只运行一次
void lv_task_once(lv_task_t * task);
复位任务
void lv_task_reset(lv_task_t * task);
设置任务回调周期
void lv_task_set_period(lv_task_t * task, uint32_t period);
使任务立即准备就绪
void lv_task_ready(lv_task_t * task);
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值