IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 在STM32F4上移植LVGL8.2 -> 正文阅读

[嵌入式]在STM32F4上移植LVGL8.2

一、为什么选择LVGL8.2版本

因为想使用NXP的GUI Guider进行开发,而目前他的版本支持只有7.10.1和8.2.0两个。
在这里插入图片描述

二,获取LVGL并移植

到下列地址下载:
LVGL的GITHUB仓库
选择8.2版本
在这里插入图片描述

三、新建工程

1.要求
有一个显示屏(分辨率大于100*100,后续GUI Guider要求),单片机能正常驱动。并有一个填充点函数,类似于LCD_Fill(uint16_t x,uint16_t y,uint16_t color);
最好编写一个色块填充函数,有利于提高速度。
2.复制LVGL驱动
2.1 单片机工程文件夹下面建立lvgl文件夹,用来存放驱动;
在这里插入图片描述

2.2将下载的8.2版本LVGL解压后,复制下列文件到单片机工程文件
在这里插入图片描述
2.3复制完成后,文件列表如下,注意删除文件名的“_template”后缀,porting文件夹里面的也要删除这个后缀:
在这里插入图片描述
2.4在单片机工程管理里面,建立管理目录:
在这里插入图片描述
其中GUI/LVGL,添加lvgl->src下的所有C文件。这个比较考验耐心,很多文件。
GUI/Porting,添加lvgl->porting文件夹里面的C文件。
GUI/APP,添加lv_config.h和lvgl.h头文件,添加完效果如下:
在这里插入图片描述
其中GUI/Generated先不管。
2.5修改lv_port_disp.c文件内容:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
同时更新此文件包含的刷屏函数

/*Flush the content of the internal buffer the specific area on the display
 *You can use DMA or any hardware acceleration to do this operation in the background but
 *'lv_disp_flush_ready()' has to be called when finished.*/
static void disp_flush(lv_disp_drv_t * disp_drv, const lv_area_t * area, lv_color_t * color_p)
{
    /*The most simple case (but also the slowest) to put all pixels to the screen one-by-one*/
	
//    int32_t x;
//    int32_t y;
//    for(y = area->y1; y <= area->y2; y++) {
//        for(x = area->x1; x <= area->x2; x++) {
//            /*Put a pixel to the display. For example:*/
//            /*put_px(x, y, *color_p)*/
//						ILI9163B_draw_dot(x,y,color_p->full);
//            color_p++;
//        }
//    }

		ILI9163B_FillColor(area->x1,area->y1,area->x2,area->y2,(uint16_t *)color_p);

    /*IMPORTANT!!!
     *Inform the graphics library that you are ready with the flushing*/
    lv_disp_flush_ready(disp_drv);
}

其中被注释的是默认描点函数,比较慢,可以考虑自己编写色块填充函数来提高速度。
2.6.修改lv_port_indev.c文件
在这里插入图片描述
2.7修改lv_config.h文件
此文件除了按照2.5里面修改分辨率之外,还可以启用CPU占用率观察,这样就可以不加入demo文件,直接观察lvgl是否正常启动了。
在这里插入图片描述
2.8,初始化main程序
首先包含所需头文件
在这里插入图片描述
初始化。
在这里插入图片描述
2.9启动lvgl
在freertos里面开设一个任务,周期刷新即可,记得freertos包含lvgl的头文件。

/* USER CODE END Header_StartLvglTask */
void StartLvglTask(void const * argument)
{
  /* USER CODE BEGIN StartLvglTask */
  /* Infinite loop */
  for(;;)
  {
		osDelay(5);
		lv_task_handler();
  }
  /* USER CODE END StartLvglTask */
}

至此,lvgl即可驱动,里面会有比较多的警告,可以忽略。

注意

1、lvgl的头文件包含如果报错,可以在keil里面设置简易包含:
在这里插入图片描述
2色块填充函数
在lv_port_disp.c文件里面,推荐使用色块填充函数;

static void disp_flush(lv_disp_drv_t * disp_drv, const lv_area_t * area, lv_color_t * color_p)
{

	ILI9163B_FillColor(area->x1,area->y1,area->x2,area->y2,(uint16_t *)color_p);

lv_disp_flush_ready(disp_drv);

}

注意这个函数的color_p是一个指向某一区块(设置缓存一般是1/10屏幕高度)颜色的指针。

看一下实际效果吧:
在这里插入图片描述
忽略上面的3个控件,那是用gui guider生成的。
下面的cpu占用率和fps是此次项目生成的。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-10-31 12:14:20  更:2022-10-31 12:18:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 20:42:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码