效果

目前显示驱动显示较慢,后续会优化。
请添加图片描述

在这里插入图片描述

有用链接

LVGL官网

代码下载

要求

要求最低要求 建议要求
架构16、32、64位微控制器或微处理器
时钟 > 16 MHz > 48 MHz
Flash/ROM > 64 kB > 180 kB
Static RAM > 16 kB > 48 kB
Draw buffer > 1 × hor. res. pixels > 1/10屏幕大小
编译器C99或更新

创建工程

在这里插入图片描述

创建一个main.c文件,并添加进去

在这里插入图片描述
新建组CMSIS以及LIB,将内核相关与外设相关的固件库c文件添加,并且添加启动文件
在这里插入图片描述
在启动文件中,可以看到堆栈的大小,栈是1024Byte, 堆是512Byte
在这里插入图片描述
在keil配置中,可以看到SRAM有64K, Flash有512K
在这里插入图片描述
因此默认的大小不符合LVGL的要求,需要调整一下:

在这里插入图片描述

添加include路径
在这里插入图片描述
添加宏STM32F10X_HD, USE_STDPERIPH_DRIVER
在这里插入图片描述
选择版本5,以及勾选微库
在这里插入图片描述
先写一个demo,然后编译通过
在这里插入图片描述
克隆LVGL项目到项目文件夹
git clone https://github.com/lvgl/lvgl.git

在这里插入图片描述

在lvgl文件夹下新建lv_conf.h文件,然后复制lv_conf_template.h文件的内容。将其中的宏定义0改为1

在这里插入图片描述

在这里插入图片描述
新建分组LVGL_Lib,将lvgl/src中的core misc hal中所有添加到里面,其余的如下:
font中的
在这里插入图片描述
theme中的lv_theme_default.c

widgetscalendarchartbtndropdownlabelwintabviewbtnmatrixswitchimgcolorwheellistmenutabviewtablerollerspinboxtextareasliderbarkeyboardcheckboxmeterledlinemsgboxspinnerarctitleviewimgbtn

layouts中的flex以及grid

draw中所有以及其sw文件下所有

添加完后,编译
在这里插入图片描述

创建分组LVGL_Conf,将lv_conf.h头文件添加进来,方便修改。

新建Wigets以及Driver分组,下面添加屏幕驱动以及触屏驱动

屏幕驱动以及触屏驱动

在这里插入图片描述

LVGL Port

新建LVGL_Port分组,在lvgl/example/porting中创建lv_port_disp.c以及lv_port_indev.c文件,并添加到工程中
在这里插入图片描述

在这里插入图片描述

Widgets demo

将demo文件夹中的widgets里的文件加入工程中,取消lv_conf中LV_USE_DEMO_WIDGETS注释,并且添加LV_USE_DEV_VERSION定义,防止waring

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

#include "stm32f10x.h"
#include "bsp_ili9341_lcd.h"
#include "bsp_xpt2046_lcd.h"
#include "lv_port_disp.h"
#include "lv_port_indev.h"
#include "lv_demo_widgets.h"


int main()
{
	//LCD 初始化
	ILI9341_Init();  
	
	//触摸屏初始化
	XPT2046_Init();
	
	ILI9341_GramScan ( 6 );
	
	lv_init();          	//lv 系统初始化
    lv_port_disp_init();    //lvgl 显示接口初始化,放在lv_init后面
	lv_port_indev_init();   //lvgl 输入接口初始化,放在 lv_init后面
    lv_demo_widgets();
	while(1)
	{
		lv_tick_inc(1);
		lv_task_handler();
	}
}

##最终工程的相关配置

在这里插入图片描述

其它

stm32103 ram和flash小,其中benchmark以及music的demo都运行不了的。总的说来,移植lvgl要点主要就是lv_port_disp.c以及lv_port_indev.c文件的移植,其它都没有变动,主要就是将交互以及显示接口给写好就是了,这里为了方便,用了霸道野火哥写的驱动。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐