1、概况
LVGL能让你在嵌入式平台(stm32)相对容易的搞出比较绚丽的UI交互效果。也就是在LVGL制定的游戏规则下去开发UI界面,活好事少。为此硬件设备需要做一些适配,以达到:LVGL能够使用STM32的硬件资源;同时,在STM32编程后,效果又能落地到LVGL。(以下截图来是正点原子:LVGL开发指南_V1.5.pdf)
LVGL用起来需要四个资源:
1、心跳时钟,stm32提供给LVGL;
2、stm32驱动好的显示屏;
3、stm32驱动好的输入设备(触摸屏);
4、stm32的内存资源;
上面四个资源都需要与LVGL对接上(按照LVGL源码提供的规则接口对接),LVGL才能在stm32平台上正常使用。
2、LVGL的裁剪
LVGL源码目录:
与 LVGL移植相关的有 examples文件夹(examples里面的porting文件是输出和输入设备驱动)、src文件夹、lv_conf_template.h和 lvgl.h,其他的部分均与移植无关,用户可以忽略
以下是stm32工程的文件目录,GUI_APP也可以忽略(细节参考正点原子例程):这里主要是再次加强一下印象,主要就是把examples文件(里面只有porting有用)和src文件放入STM32的工程,lv_conf_template.h(改名为lv_conf.h)和 lvgl.h也一起放在。
综上就是从LVGL的源码里面,拿出:examples、src、lv_conf.h、lvgl.h,放到Middlewares/LVGL/GUI/lvgl目录下
3、LVGL启动流程
lv_task_handler就是lv_timer_handler
3、LVGL与MCU资源
(1)时钟:就是在STM32每定时1ms的间隔里面调用一下函数lv_tick_inc:
(2)显示屏:LVGL如何识别到屏,以及如何使用屏
1、初始化:处理屏的硬件的驱动
lcddev是自己定义的类型,与LVGL没有关系;
disp_init()是LVGL接口,里面的lcd_init()与lcd_display_dir是自己实现的代码;主要完成的工作是:调通LCD硬件驱动,并且填充好了lcddev,lcddev结构体方便自己使用;
2、屏的缓存区设置:
lv_disp_draw_buf_t、lv_color_t、函数lv_disp_draw_buf_init,它们都是LVGL的接口
这一步把draw_buf_dsc_1缓存搞好了(下一步会把它个设备绑定一起)
3、在LVGL中注册显示设备: LVGL只认注册设备disp_drv
以上主要填充disp_drv的内容(disp_drv属于LVGL的类型lv_disp_drv_t)
包含属性有:分辨率、缓存区、显示刷新操作等
注册完后,LVGL只认disp_drv,disp_drv也就是屏幕。
最关键的显示刷新disp_flush函数:LVGL把数据显示到屏是通过disp_flush。
LVGL会间隔的调用disp_flush以刷新屏幕。disp_flush、lcd_draw_fast_rgb_color、lv_disp_flush_ready这三个函数都是LVGL的函数,
我们要在lcd_draw_fast_rgb_color里面实现对屏的具体操作(也就是在这里实现自己的代码)。lcd_set_window、lcd_write_ram_prepare、lcd_wr_data这三个函数是本例程LCD屏的控制函数(也就是自己写的函数)。
综上:
屏幕的大小:disp_drv.hor_res = lcddev.width; disp_drv.ver_res = lcddev.height;
屏幕的缓存也有了:disp_drv.draw_buf = &draw_buf_dsc_1;、
也知道如何使用屏幕:disp_drv.flush_cb = disp_flush;
LCD屏能够正常被LVGL使用。
(3)触摸屏
1、touchpad_init()这是LVGL的接口,里面实现了(根据具体情况自己完成)触摸屏的驱动;
2、touchpad_read是LVGL的接口,它需要获取是否按下,按下的坐标多少;
touchpad_read调用了touchpad_is_pressed、touchpad_get_xy它们都是LVGL的接口,按照它们的需求,把内容给它们即可。
5、配置文件lv_conf.h
文章来源:https://www.toymoban.com/news/detail-817385.html
这个文件主要就是开启某些功能,结合具体硬件配置一些宏。详细看正点原子的相关资料或者视频。文章来源地址https://www.toymoban.com/news/detail-817385.html
到了这里,关于LVGL与STM32的理解(基于正点原子资料)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!