GitHub上有一个项目叫做esp-iot-solution里面包含了常用的屏幕,按键,编码器,音频等。其中gui使用的是lvgl7。仓库使用git获取下来之后,可以直接cd切换到examples/hmi/lvgl/example中,使用idf.py menuconfig配置完成之后,更改引脚配置之后。idf.py build,然后windows上idf.py -p com4 flash烧录即可。
由于它使用的是lvgl7。但是最新的lvgl已经是8.1。既然要学习lvgl,就拿最新的好了。在lvgl的官网。esp32地方,推荐使用esp-idf v4下,把lvgl 和 lvgl_esp32_drivers作为组件使用。lvgl使用git submodule add命令加入esp-idf。但是lvgl_esp32_drivers
里面的驱动大部分是spi,iic之类,并没有我特殊要求的iis驱动的8位并口。所以我并不打算把它加入组件。只需要加入需要的lvgl就好了。
对了,要提一下。如果你不想折腾,使用lvgl7就足够了,那么使用esp-iot-solution这个库的时候,他下载lvgl作为esp-iot-solution的组件也是最新的,最新的并不能使用,需要使用git checkout切换分支到指定的分支
这个分支在仓库里面会有一个哈希值指向。切记!!
esp-idf V4使用的是cmake管理的项目。这个cmake经过乐鑫的重新包装,一言难尽啊。好用也不太好用,原生的cmake命令,有时候出问题。
我们需要新创建一个工程,使用idf.py create-projects(具体命令参考官网)
得到一个main文件夹和一个同级目录下的cmakelists.txt文件
我们需要把esp-iot-solution目录下的components文件夹复制过来,作为工程自己的组件。
因为esp-idf里已经有了lvgl组件,我们需要把复制过来的组件里lvgl_gui里的lvgl删除,同时删除kconfig和lv_conf.h
把其他文件里包含lv_conf.h的行注释掉。
修改lvgl_gui下cmakelists.txt,因为我们删除了lvgl。所以把set包含头文件的列表里删除"lvgl" 和 "lvgl/src"
同时,idf_component_register的REQUIRES中增加lvgl
现在使用idf.py build应该可以正常编译。但是运行后会一直出错。需要找到错误位置。
我们使用idf.py monitor来调试找到问题。
使用方法如下
原来旧版本的lvgl和新版这里有了问题
至此,lvgl应该就可以正常使用了。
最主要的是学会monitor的使用,可以快速定位到问题点。