简介
背景:
本文使用的是主控IC为stm32f103zet6, 显示IC为ST7735s,它是128*160的像素,色深为RGB565颜色。
官方虽然说LVGL移植平台只需 64kB 闪存和 8kB RAM 就足以满足简单的用户界面。但我移植到stm32f103c8t6,不管怎么修改配置,一直显示内存不够。
LVGL 可以驱动单色OLED、TFT 显示器、监视器或任何其他显示器。c 代码使其可在任何平台上使用,例如 NXP LPC 或 iMX、STM32、PIC、Arduino、ESP32、Raspberry 等。
准备
下载lvgl 8.2.0版本源码下载地址:https://github.com/lvgl/lvgl
使用stm32cube编写驱动
移植LVGL和屏幕驱动
- 在lvgl_stm32f103ze_demo项目中新建Middlewares/LVGL文件夹
- LVGL文件夹下创建GUI/lvgl和GUI_APP文件夹
- 拷贝lvgl下的examples文件夹和src文件夹以及lv_conf_template.h和lvgl.h到Middlewares/LVGL/GUI/lvgl目录下注意:拷贝之后将lv_conf_tempalate.h修改为lv_conf.h
- 把lv_conf.h的条件编译指令#if 0修改成#if 1
LVGL主要配置
驱动IC的色深和当前硬件支持的内存资源大小。
在lv_port_disp.c中选择三个模式中的一种,
本人选择第一种,大家看情况
划重点
这里必须重写打点函数,用自己的屏画点或划区域的函数替代一下。
屏幕宽高也需改成自己真实屏幕大小。
main.c主函数实现
在main()函数的循环内调用lv_tick_inc(1);函数来提供心跳。并且调用lv_timer_handler()来使得LVGL正常运行(建议在定时器内调用更加方便)。
如果在编译代码,报错是#include“lvgl.h”这个出问题了,将#inclde"./././lvgl.h"这种改成#include“lvgl.h”就行了
.
编译运行