****MinGW版本选择:8.1.0
***demo是完整的工程,example 是一个小的案例
***宏定义没打开就会是灰色的
也会报这个错误
如果使用需要打开宏定义在lv_conf.h文件下打开
***vscode运行出错分析
这种情况如果源文件如果存在,还报错,就是没有添加进入CMakeLists.txt,
加入
***LVGL原理:
把绘制常用的图形封装成类或,c,c++,绘制成子单元
GUI框架是凌驾于不同的显示屏之上的,不同显示屏描点实现的方法可能不一样,但是不影响,只需要把描点的函数按照GUI、lvgl的框架给出,在绘制时只需要按照需要去调用点的绘制函数。
1、软件模拟时执行文件中要加SDL2.dll图形处理文件,不然不会显示图片
2、CMakeLists.txt的作用
project(lvgl) :指定当前项目的名字
add_executable(main main.c mouse_cursor_icon.c ${SOURCES} ${INCLUDES}) :指定源文件生成可执行程序main
include_directories(${SDL2_INCLUDE_DIRS}) :源文件生成过程中需要搜索的头文件目录
2.1、生成Makefile文件(构建规则),在使用make构建工具根据Makefile里面的规则去构建当前的项目(编译并生成可执行程序)
3、main函数中的
lv_init(); :初始化lvgl库
hal_init(); :硬件,显示、输入设备、tick初始化(替换为自己的硬件设备)
lvgl每隔5ms跳一次
while(1) {
/* Periodically call the lv_task handler.
* It could be done in a timer interrupt or an OS task too.*/
lv_timer_handler();
usleep(5 * 1000);
}
4、lv_conf.h的配置
颜色配置
刷新时间配置
是否开启
字体设置
5、
6、
给按钮添加单机事件
7、
主页面上绑定->按钮 , 按钮上在绑定->文字 , 绑定按钮触发的->事件(事件有类型)(跳转函数)(传入参数),
8、***注意
不同电脑生成的Build路径不一样,所以要卸载,重新生成
9、在 lv_obj_t 的基础上封装一些功能 lv_obj_t * btn=lv_btn_create(screen);
10、拿出来一个对象,在对对象做相应的设置
11、矩阵键盘
12、获取矩阵对应按键值:
13、文本框输入
14、图片
**** 注意生成图片使用的名字
1、在LVGL的网站进行转换
2、添加转换后的文件到工程
3、添加到
4、注意图片的名字
5、代码编写
15、gif动图显示
**注意图片要足够小
16、创建布局
布局九宫格显示
17、page页面跳转
18、按钮页面设置
19、显示表格数据(动态显示有一点问题,他自己写的)
20、环境
vscode下面一行的配置是根据文件夹里面的内容来的
别人的工程build文件夹下面的内容有路径,所以需要删除
21、移植
1、添加文件
2、数据不匹配
在lv_conf.h中修改
22、温度显示界面
1、
工程图形分辨率设置
RGB565,
lvgl版本
到处路径
2、界面创建方法
2.1、单价Screen
2.2选中Screen单击Image
2.3加入图片
2.4添加label,修改参数
给控件写名字,在代码中寻找,通过这个名字修改
给screen添加事件
screen1左滑到screen2
screen2右滑到screen1
23、屏幕移植
1、寄存器描述
2、芯片手册
3、液晶屏手册
引脚1-18
Pin - 1 GND
Pin - 2 背光
Pin - 3 电源3.3v
Pin - 4 输出IO 连接到3.3v
Pin - 5-6 GND
Pin - 7-10 SPI引脚
Pin - 11 重置引脚
Pin - 12 GND
Pin - 13 触摸部分的 scl - I2C
Pin - 14 触摸部分的 sda - I2C
Pin - 15 触摸部分的重置引脚
Pin - 16 触摸部分的中断引脚
Pin - 17 触摸部分的供电
Pin - 18 触摸部分的GND
4、D/C引脚说明
:DC这个引脚是单片机控制OLED写入命令还是数据,因为它的数据线和命令线共用一根线MOSI即主机输出从机接收端口,这块屏的通信协议是一个没有MISO只有MOSI的SPI协议,即通过SPI连接MCU和OLED,DC接MCU,如果要向OLED写入命令,拉高DC,如果要向OLED写入数据,拉低DC(这是LCD5110的SPI协议,不知道和你这块屏是不是一样的,但是接口是一样的,可以参考5110)!
24、其他教程的移植方法
24.1keil工程配置
24.2缓存设置
使用一级缓存
两级缓存
全缓存
LV_VER_RES_MAX参数缺失的,自己写
24.3打开日志
24.4输入设备刷新时间配置
****************************************************************************************************
正点原子部分的LVGL配置
****双缓冲模式可以同时传递和刷新数据,各用一个缓冲
****DMA2D基于:
课程代码4基于课程代码2
*****FreeRTOS配置:
代码的临界段也称为临界区,指处理时不可分割的代码区域,一旦这部分代码开始执行,则不允许任何中断打断
***使用官方的demo需要置一
***移植完LVGL和FreeRTOS内存不够的处理方法
如果LVGL控件太多分配的内存不够也会报错
越大显示效果越好
***RGB图像一个像素点要16个bit才能表示它的颜色
***sizeof实际上是获取了数据在内存中所占用的存储空间,以字节为单位来计数。