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

文章目录

    • 效果
    • 有用链接
    • 要求
    • 创建工程
    • 屏幕驱动以及触屏驱动
    • LVGL Port
    • Widgets demo
    • 其它

效果

目前显示驱动显示较慢,后续会优化。

stm32霸道-lvgl移植学习(一)_第1张图片

有用链接

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或更新

创建工程

stm32霸道-lvgl移植学习(一)_第2张图片

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

stm32霸道-lvgl移植学习(一)_第3张图片
新建组CMSIS以及LIB,将内核相关与外设相关的固件库c文件添加,并且添加启动文件
stm32霸道-lvgl移植学习(一)_第4张图片
在启动文件中,可以看到堆栈的大小,栈是1024Byte, 堆是512Byte
stm32霸道-lvgl移植学习(一)_第5张图片
在keil配置中,可以看到SRAM有64K, Flash有512K
stm32霸道-lvgl移植学习(一)_第6张图片
因此默认的大小不符合LVGL的要求,需要调整一下:

stm32霸道-lvgl移植学习(一)_第7张图片

添加include路径
stm32霸道-lvgl移植学习(一)_第8张图片
添加宏STM32F10X_HD, USE_STDPERIPH_DRIVER
stm32霸道-lvgl移植学习(一)_第9张图片
选择版本5,以及勾选微库
stm32霸道-lvgl移植学习(一)_第10张图片
先写一个demo,然后编译通过
stm32霸道-lvgl移植学习(一)_第11张图片
克隆LVGL项目到项目文件夹
git clone https://github.com/lvgl/lvgl.git

stm32霸道-lvgl移植学习(一)_第12张图片

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

stm32霸道-lvgl移植学习(一)_第13张图片

stm32霸道-lvgl移植学习(一)_第14张图片
新建分组LVGL_Lib,将lvgl/src中的core misc hal中所有添加到里面,其余的如下:
font中的
stm32霸道-lvgl移植学习(一)_第15张图片
theme中的lv_theme_default.c

widgetscalendarchartbtndropdownlabelwintabviewbtnmatrixswitchimgcolorwheellistmenutabviewtablerollerspinboxtextareasliderbarkeyboardcheckboxmeterledlinemsgboxspinnerarctitleviewimgbtn

layouts中的flex以及grid

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

添加完后,编译
stm32霸道-lvgl移植学习(一)_第16张图片

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

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

屏幕驱动以及触屏驱动

stm32霸道-lvgl移植学习(一)_第17张图片

LVGL Port

新建LVGL_Port分组,在lvgl/example/porting中创建lv_port_disp.c以及lv_port_indev.c文件,并添加到工程中
stm32霸道-lvgl移植学习(一)_第18张图片

stm32霸道-lvgl移植学习(一)_第19张图片

Widgets demo

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

stm32霸道-lvgl移植学习(一)_第20张图片

stm32霸道-lvgl移植学习(一)_第21张图片

stm32霸道-lvgl移植学习(一)_第22张图片

#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();
	}
}

##最终工程的相关配置

stm32霸道-lvgl移植学习(一)_第23张图片

其它

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

你可能感兴趣的:(lvgl,STM32,stm32,学习,单片机)