*移植芯片要求⬇
*16,32或64位微控制器或处理器
*主控频率:>16Mhz
*Flash/ROM:>64kb,建议180kb以上
*RAM:>8kb,建议24kb以上
*图形缓冲区:>水平分辨率像素,建议>1/10屏幕总像素
玻珠用了正点原子stm32f407m144最小系统板,满足要求(具体可查看对应硬件开发手册)
*lvglv8.2文件下载⬇
*地址:LVGL的GitHub仓库:https://github.com/lvgl/lvgl
*步骤:1:master选择自己需要的版本
2:点击code
3:下载zip文件
*裁剪文件如图:
————开始实操(带触摸,裸机,内部SRAM,LVGL自带内存管理)————
准备:1.对应型号《触摸屏实验》源码
2.《基本定时器中断实验》源码
3.LVGL库文件(注意版本,玻珠使用v8.2)
⬇修改文件名和条件编译指令
⬇找到自己的定时器TIMER文件 ,工程名自取能找到即可
⬇添加完如图,TIMER到Drivers/BSP路径
⬇除demos的文件都放到GUI/lvgl路径
⬇添加完如图
⬇demos放到GUI_APP路径
⬇左红框:命名为LVGL
⬇中间红框:按右图添加group
⬇按右图添加.c文件(有点繁琐,注意不要漏掉文件夹里的
⬇魔术棒按右图添加头文件路径
⬇魔术棒开启C99
⬇不建议!屏蔽MDK警告
⬇添加完编译一下,下图正常情况
⬇已经完成了的步骤
⬇开始配置输出(用的LCD屏幕)
⬇对应步骤开始操作
⬇图形缓冲区大小设置,按自己屏幕的分辨率直接给MY_DISP_HOR_RES(屏幕width),MY_DISP_VER_RES(屏幕height)宏定义也行 ,我的是800*480
*注意:v8.2小范围双缓冲优化程度和单缓冲差不多,反而占内存更大,用单缓冲就行
⬇选用哪种方式就注释另两种
⬇用了正点原子的动态识别横竖屏分辨率(推荐)。lcddev.width和lcddev.height 直接填对应分辨率长/宽也行(注意横竖屏)
⬇如图写函数
⬇触摸屏只涉及touchpad相关,删除无关( mouse,keypad,encoder,button)(标蓝)
⬇再在lv_port_indev_template.c包含驱动头文件 ,初始化触摸屏,配置触摸检测函数
⬇在BSP里add定时器.c文件,在其中包含 lvgl路径
⬇main里删去while里原有的不相关函数
⬇编译,如果遇到errorL6218E
如果遇到errorL6200E可能是某.c文件被重复添加了,删去即可
⬇如图添加代码switch_obj是开关名,lv_switch_creat()创建开关,lv_scr_act()显示在屏幕上
lv_obj_set_size设置图标大小,lv_obj_align设置图标坐标,LV_ALIGN_CENTER表示以屏幕正中间为坐标原点,可以go to definition 找其他位置对应宏更改原点
——————————完成————————————————————————
⬇做好如图,开关可触摸(未对应添加诸如开关控制led等功能,仅显示)
⬇如果觉得按钮反应比较慢可以改下图示地方,原本是30我改成5了
*优化LVGL运行效果的方法⬇
*学习参考视频⬇
【【正点原子】手把手教你学LVGL图形界面编程】 https://www.bilibili.com/video/BV1CG4y157Px/?share_source=copy_web&vd_source=18c0bce2f6a02448a4cff49a1f8fcff1