stm32霸道-lvgl移植学习(一)

文章介绍了如何在STM32F10X平台上移植LVGL图形库,包括创建工程、配置内存、添加库文件、编写屏幕和触屏驱动,以及运行Widgetsdemo。提到移植关键在于lv_port_disp.c和lv_port_indev.c的适配,同时指出由于硬件限制,某些LVGL演示无法运行。
摘要由CSDN通过智能技术生成

效果

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

在这里插入图片描述

有用链接

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文件的移植,其它都没有变动,主要就是将交互以及显示接口给写好就是了,这里为了方便,用了霸道野火哥写的驱动。

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一WILLPOWER一

你的鼓励是我创作最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值