FreeRTOS+LVGL|Freertos+lvgl如何配置lvgl的心跳和任务管理器
lvgl需要系统滴答声(心跳)才能知道动画和其他任务的经过时间,所以我们必须要配置好lvgl的心跳。
要处理lvgl的任务我们需要定期调用 lv_task_handler(任务管理器),及时我们没有使用到lvgl的任务也需要配置好lvgl的任务管理器,因为lvgl库本身就用到了任务管理器,除非我们对lvgl进行了精简裁剪,否则默认情况下都需要配置好任务管理器。
配置lvgl心跳(Tick)
参考lvgl中文文档中的说明:http://lvgl.100ask.net/documentation/02_porting/05_tick.html
实现freertos中的 Tick滴答钩子函数:void vApplicationTickHook() :
- 该函数在Tick中断函数中调用,所以该函数的运行时间越短越好,不能加任何delay。
- 该函数调用的周期性很强(1MS),一些定时器计数器(自定义的计数器)可以在该函数里面实现
- 在
FreeRTOSConfig.h
中配置configUSE_IDLE_HOOK
为1
- 运行周期:由
configTICK_RATE_HZ
决定, 一般都设置为 1MS - 实现 void vApplicationTickHook()
void vApplicationTickHook()
{
// 告诉lvgl已经过去了1毫秒
lv_tick_inc(1);
}
配置lvgl任务管理器(Task Handler)
参考lvgl中文文档中的说明:http://lvgl.100ask.net/documentation/02_porting/06_task-handler.html
- 设置任务并分配普通任务的最高优先级,堆栈建议设为 512;
5ms
周期执行vTaskDelayUntil
函数即可。
#define LVGL_TASK_HANDLER_PRIORITY (tskIDLE_PRIORITY + 3) // lvgl task handel
#define LVGL_TASK_HANDLER_STACK_SIZE (512)
xTaskCreate( lv_100ask_task_handler, "lvgl_task_handler", LVGL_TASK_HANDLER_STACK_SIZE, NULL, LVGL_TASK_HANDLER_PRIORITY, (TaskHandle_t *) NULL );
static portTASK_FUNCTION( lv_100ask_task_handler, pvParameters )
{
TickType_t xLastWakeTime;
const TickType_t xPeriod = pdMS_TO_TICKS( 5 );
// 使用当前时间初始化变量xLastWakeTime ,注意这和vTaskDelay()函数不同
xLastWakeTime = xTaskGetTickCount();
for(;;)
{
/* 调用系统延时函数,周期性阻塞5ms */
vTaskDelayUntil( &xLastWakeTime,xPeriod );
lv_task_handler();
}
vTaskDelete(NULL);
}
LVGL中文手册
lvgl官方的教程是英文的,这个是我在做项目时顺便做出来的中文教程站点(持续更新维护),不仅仅只是照搬lvgl官方文档的翻译,同时总结了我们在实际开发中遇到的各种细节,让这个文档更加适合我们在实际开发中的需求。
- lvgl官方原版教程: https://docs.lvgl.io
- lvgl中文教程(中文手册):http://lvgl.100ask.net
FreeRTOS+LVGL|Freertos+lvgl如何配置lvgl的心跳和任务管理器的更多相关文章
- Linux下配置 Keepalived(心跳检测部署)
首先呢,我想先给大家简单介绍一下什么是keepalived: Keepalived的作用是检测服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的服务器 ...
- MySQL配置HeartBeat实现心跳监控和浮动IP
1. 初始化环境配置 /sbin/chkconfig --add mysqld /sbin/chkconfig mysqld on ln -s /usr/local/mysql/bin/mysql / ...
- 调试 lvgl 的一个例子
发现一个新的 vector graphic 的库,用 C 写的,效果丰富,接口简单,而且是 MIT License,所以想试一试.因为它支持 framebuffer,所以,在 linux 上先走一个. ...
- LVGL库入门教程01-移植到STM32(触摸屏)
LVGL库移植STM32 LVGL库简介 LVGL(Light and Versatile Graphics Library)是一个免费.开源的嵌入式图形库,可以创建丰富.美观的界面,具有许多可以自定 ...
- LVGL 入门使用教程
一.准备资料 开发板:ESP32-S3 开发环境:VS Code + PlatformIO 串口屏驱动 TFT-eSPI:https://github.com/Bodmer/TFT_eSPI 触摸驱动 ...
- LVGL|lvgl中文手册(lvgl中文文档教程)
lvgl官方的教程是英文的,这个是我在做项目时根据lvgl官方文档做出来的lvgl中文文档(持续更新维护),不仅仅只是生硬照搬lvgl官方文档的翻译,同时总结了我们在实际开发中遇到的各种细节,让这个文 ...
- lvgl移植—Linux fbdev&evdev(基于LVGL v7)
虽然lvgl官方提供了有关linux framebuffer操作的库函数,但是我决定自己试一下能否自己实现这部分操作 实际项目中应优先采用官方库函数,官方实现代码位于文件夹lv_drivers/dis ...
- Arduino+ESP32 之 驱动GC9A01圆形LCD(二),移植LVGL,跑示例程序,显示自制图片
在前文Arduino+ESP32 之 驱动GC9A01圆形LCD(一), 我们已经移植好了arduino GFX库, 该库的示例程序内,还有LVGL的示例程序哦. arduino环境下移植lvgl是很 ...
- LVGL 模拟仿真(Windows+CodeBlocks)
一.准备材料 Code Blocks官网:https://www.codeblocks.org/ Code Blocks 汉化包:链接: https://pan.baidu.com/s/12zB5bD ...
随机推荐
- 通过 DLPack 构建跨框架深度学习编译器
通过 DLPack 构建跨框架深度学习编译器 深度学习框架,如Tensorflow, PyTorch, and ApacheMxNet,快速原型化和部署深度学习模型提供了强大的工具箱.不幸的是,易用性 ...
- CPU性能PK
CPU性能PK AMD vs Intel 2020: Who Makes the Best CPUs? 英文原文链接:https://www.tomshardware.com/features/amd ...
- TensorFlow单层感知机实现
TensorFlow单层感知机实现 简单感知机是一个单层神经网络.它使用阈值激活函数,正如 Marvin Minsky 在论文中所证明的,只能解决线性可分的问题.虽然限制了单层感知机只能应用于线性可分 ...
- CVPR2020:利用图像投票增强点云中的三维目标检测(ImVoteNet)
CVPR2020:利用图像投票增强点云中的三维目标检测(ImVoteNet) ImVoteNet: Boosting 3D Object Detection in Point Clouds With ...
- CVPR2020:基于自适应采样的非局部神经网络鲁棒点云处理(PointASNL)
CVPR2020:基于自适应采样的非局部神经网络鲁棒点云处理(PointASNL) PointASNL: Robust Point Clouds Processing Using Nonlocal N ...
- 现代传感器的接口:中断驱动的ADC驱动程序
现代传感器的接口:中断驱动的ADC驱动程序 Interfacing with modern sensors: Interrupt driven ADC drivers 研究了如何编写一个阻塞的模数转换 ...
- day05对象和类
day06作业: 第一题:分析以下需求,并用代码实现 手机类Phone 属性: 品牌brand 价格price 行为: 打电话call() 发短信sendMessage() 玩游戏playGame() ...
- VRRP协议的原理与配置
VRRP出现的原因: 局域网中的用户终端通常采用配置一个默认网关的形式访问外部网络,如果此时默认网关设备发生故障,将中断所有用户终端的网络访问,这很可能会给用户带来不可预计的损失. VRRP的优点: ...
- Django基础之自定义分页器
自定义分页器 针对批量插入的数据,我们在前端展示的时候发现一个很严重的问题,一页展示了所有的数据,数据量太大,查看不方便 针对数据量大但又需要全部展示给用户观看的情况下,我们统一做法都是做分页处理 分 ...
- DHCP原理与配置
一.DHCP应用场景 DHCP服务器能够为大量主机分配lp地址,并能够集中管理 二.DHCP报文类型 微软操作系统的DHCP服务是四个广播报文 三.地址池 主机-------------------- ...