> 文章列表 > stm32霸道-lvgl移植学习(一)

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

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

文章目录

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

效果

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

在这里插入图片描述

有用链接

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移植学习(一)

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