文章目录
- 效果
- 有用链接
- 要求
- 创建工程
- 屏幕驱动以及触屏驱动
- 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或更新 |
创建工程
创建一个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
widgets
中calendar、chart、btn、dropdown、label、win、tabview、btnmatrix、switch、img、colorwheel、list、menu、tabview、table、roller、spinbox、textarea、slider、bar、keyboard、checkbox、meter、led、line、msgbox、spinner、arc、titleview、imgbtn
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文件的移植,其它都没有变动,主要就是将交互以及显示接口给写好就是了,这里为了方便,用了霸道野火哥写的驱动。