【LVGL快速入门】LVGL开源框架入门教程之框架移植(四)

简介: 【LVGL快速入门】LVGL开源框架入门教程之框架移植(四)

三.设置心跳

在main.c文件中添加头文件:


#include "lvgl.h"//LVGL头文件引用

#include "lv_port_disp.h"//LVGL显示支持

#include "lv_port_indev.h"// LVGL的触摸支持

然后就可以在主函数中写入初始化代码了:


lv_init();                             // LVGL 初始化

lv_port_disp_init();                   // 注册LVGL的显示任务

lv_port_indev_init();                  // 注册LVGL的触屏检测任务

心跳:lv_tick_inc(),LVGL内一个时基函数,它的所有任务调度都要依靠这个函数,所以这个函数必须要被间隔精确地调用。


增加LVGL的内部时间戳。

该时间戳用于计算动画的进度、定时器触发、任务调度等。

任务处理函数:lv_timer_handler()。


执行所有已注册的定时器回调函数。

处理 LVGL 的内部任务,例如动画、定时器重绘等。

1.赋予LVGL心跳

       首先我们使用TIM创建一个定时器,以中断来为LVGL赋予心跳。笔者的开发平台是STM32F407,这里选择TIM6基本定时器。

 由于TIM6挂载在APB1总线上,所以最高频率为84MHz, 所以PSC设置为84-1,同时ARR设置为1000-1,计算出来定时周期为1ms。

同时使能中断,并设置优先级为0(最高优先级):

然后生成文件,更新工程。在mian()主函数中,LVGL初始化之后调用定时器启动函数HAL_TIM_Base_Start_IT(&htim6)。


在main.c下面的用户代码区添加中断回调函数:


void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)

{

if(htim->Instance == TIM6)

{

 lv_tick_inc(1);//心跳函数

}

}

在回调函数中,我们调用lv_tick_inc(1)即设置1ms的心跳。


如果设置TIM产生2ms的中断,也可以写lv_tick_inc(2)。

2.开启任务调度

向main()主函数的while循环中添加5ms轮询调用:


while (1)

 {

  #ifdef USE_LVGL

 static uint8_t LVGL_Timer_5ms = 0;//任务调度函数的5ms定时

 

 

 

 HAL_Delay(1-1);

 if(LVGL_Timer_5ms++ >= 5)

 {

  lv_timer_handler();//任务调度函数

  LVGL_Timer_5ms = 0;

 }

  #else

 

  #endif

 

   /* USER CODE END WHILE */


   /* USER CODE BEGIN 3 */

 }

这里为什么在主函数中调用而不在定时器中断里调用呢?主要是因为 lv_timer_handler()这个函数十分消耗资源,若在定时器中调用的话可能会霸占整个中断资源,我们初学时就知道不能在中断中处理过于复杂的任务,所以我们不在中断里去处理LVGL的任务调用。


编译后无错误:


至此,我们整个移植过程完全结束,接下来就可以进行功能地编写调试,开启真正的LVGL框架学习。




相关文章
|
7月前
|
JSON 机器人 Linux
推荐一款嵌入式Linux开源框架与封装-cpp-tbox
推荐一款嵌入式Linux开源框架与封装-cpp-tbox
133 3
|
2月前
【LVGL快速入门】LVGL开源框架入门教程之框架使用(三)
【LVGL快速入门】LVGL开源框架入门教程之框架使用(三)
【LVGL快速入门】LVGL开源框架入门教程之框架使用(三)
|
2月前
【LVGL快速入门】LVGL开源框架入门教程之框架移植(二)
【LVGL快速入门】LVGL开源框架入门教程之框架移植(二)
133 2
|
2月前
【LVGL快速入门】LVGL开源框架入门教程之框架移植(三)
【LVGL快速入门】LVGL开源框架入门教程之框架移植(三)
|
2月前
|
C语言 图形学 芯片
【LVGL快速入门】LVGL开源框架入门教程之框架移植(一)
LVGL开源框架入门教程之框架移植(一)
375 2
|
2月前
|
容器
【LVGL快速入门】LVGL开源框架入门教程之框架使用(二)
【LVGL快速入门】LVGL开源框架入门教程之框架使用(二)
|
2月前
【LVGL快速入门】LVGL开源框架入门教程之框架使用(一)
【LVGL快速入门】LVGL开源框架入门教程之框架使用(一)
102 1
|
2月前
【LVGL快速入门】SquareLine Studio安装教程(LVGL官方工具)
【LVGL快速入门】SquareLine Studio安装教程(LVGL官方工具)
343 0
|
3月前
|
API 开发工具 Android开发
从安装到打包,手把手教你如何在Uno Platform上部署跨平台应用——一篇详尽的开发者指南
【9月更文挑战第7天】Uno Platform 是一个跨平台应用开发框架,利用UWP API构建Web、iOS、Android等多平台应用。本文详述了安装Uno Platform SDK、配置项目支持跨平台、添加主方法以及使用命令行工具进行应用打包的过程,助您快速上手 Uno Platform 并部署应用。通过简单的代码示例,让开发者轻松掌握从安装到发布的核心步骤。
192 2
|
6月前
|
编解码 Linux
FFmpeg开发笔记(二十八)Linux环境给FFmpeg集成libxvid
XviD是开源的MPEG-4视频编解码器,曾与DivX一起用于早期MP4视频编码,但现在已被H.264取代。要集成XviD到Linux上的FFmpeg,首先下载源码,解压后配置并编译安装libxvid。接着,在FFmpeg源码目录中,重新配置FFmpeg以启用libxvid,然后编译并安装。成功后,通过`ffmpeg -version`检查是否启用libxvid。详细步骤包括下载、解压libxvid,使用`configure`和`make`命令安装,以及更新FFmpeg配置并安装。
95 2
FFmpeg开发笔记(二十八)Linux环境给FFmpeg集成libxvid