完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
什么是任务系统
LittlevGL具有内置的任务系统。您可以注册一个函数以使其定期被调用。任务是在lv_task_handler()中处理和调用的,需要每隔几毫秒定期调用一次。 任务是非抢占式的,这意味着一个任务无法中断另一个任务,您可以在任务中调用任何与LittlevGL相关的功能。 其实就跟我们常用的定时任务差不多,我们需要定时调用这个lv_task_handler()函数,确保时间到了以后任务会被执行,其实也就是在这个handler里面是不断轮询哪些任务到期。 |
|
|
|
任务都有哪些API
void lv_task_core_init(void) //初始化任务系统模块lv_task_t *lv_task_create_basic(void) //创建一个空任务,没有设置周期和回调函数的任务lv_task_t *lv_task_create(lv_task_cb_ttask_xcb, uint32_t period, lv_task_prio_tprio, void *user_data) //创建一个任务,推荐大家使用这个APIvoid lv_task_del(lv_task_t *task) //删除一个任务void lv_task_set_prio(lv_task_t *task, lv_task_prio_tprio) //设置优先级void lv_task_set_period(lv_task_t *task, uint32_t period) //设置周期void lv_task_ready(lv_task_t *task) //设置任务处于准备好的状态void lv_task_once(lv_task_t *task) //设置运行一次void lv_task_reset(lv_task_t *task) //重置任务PingFang SC", Helvetica, Tahoma, Arial, "Hiragino Sans GB", "Microsoft YaHei", 微软雅黑, SimSun, 宋体, Heiti, 黑体, sans-serif;'>文章,将以下Demo代码复制到Demo工程test.c文件空白处.然后在test.c文件的create_test()函数中增加task_test()函数测试。 static uint8_t count = 0;void my_task(lv_task_t * task){ char buffer[32]; count++; sprintf(buffer, "task count: %d", count); lv_label_set_text(task_label, buffer);}void task_test(void){ static uint32_t user_data = 10; task_label = lv_label_create(lv_scr_act(), NULL); /* 创建标签 */ lv_obj_align(task_label, NULL, LV_ALIGN_CENTER, -40, 0); /* 设置相对位置 */ lv_label_set_text(task_label, " "); lv_task_t * task = lv_task_create(my_task, 500, LV_TASK_PRIO_MID, &user_data);} 上面这个例子就是每隔500ms运行一次my_task这个任务,然后窗口不断打印任务执行次数,然后打印一下我们传进去的值,如果你只想运行一次,可以在创建完任务后,使用下面的函数进行设置: lv_task_once(task); 这样就可以只运行一次了,比如你有时候需要延时执行,但是又不想使用delay这种阻塞的函数,就可以考虑使用这种方式来达到延时执行的效果。 那假如我们创建完了任务后又想修改周期时间怎么办?其实上面的列出的API列表中也都给大家给出了: lv_task_set_period(task, 1000); 只需要一句函数我们就可以修改这个任务的执行周期了。 当然我们也可以修改任务的回调函数: lv_task_set_cb(task, my_new_task); OK,本节课就到这里,任务系统相对来说比较简单,它不依赖与任何控件,与控件的事件回调有一定区别,大家可以多多尝试并使用! |
|
|
|
只有小组成员才能发言,加入小组>>
709 浏览 0 评论
1116 浏览 1 评论
2494 浏览 5 评论
2833 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2675 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
661浏览 9评论
672浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
789浏览 6评论
636浏览 5评论
679浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 15:24 , Processed in 1.092341 second(s), Total 82, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号