概要

网上大多数参考资料是移植LVGL v8版本, 本篇介绍LVGL v9.3.0最新版本的移植问题总结,并提供github代码供参考。

移植环境与准备工作

  • STM32H750硬件平台
    这里使用的是淘宝上购买的stm32H750VBT6开发板,并购买了240*280大小的st7789液晶屏和OV5640摄像头,商家提供了很多示例代码,上手很快;
  • LVGL v9.3.0
  • 开发环境搭建(
    CubeMX配置
    IDE:keil

移植步骤与关键配置

常见问题与解决方案

  • 编译不过报空间不够问题:No space in execution regions with .ANY
    root cause:工程添加LVGL后整体编译大小超过stm32h750的128k flash空间,所以会报错;
    solution:使用片外flash运行程序,这种方式需要重新配置keil,和烧写boot到内部flash;
  • 运行lvgl白屏
    root cause: 白屏有很多原因,加打印跟踪代码,发现主要跟两种问题有关,
    1.time定时器未正确启动。需要注意配置完time后加 HAL_TIM_Base_Start_IT(&htim2); 启动定时器
    2.lcd驱动有问题:官方样例驱动中会加入如下代码
hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
        HAL_SPI_Init(&hspi1);

这里重新初始化了hspi,这里会导致之前配置的中断和其他设置失效,导致访问硬件出问题。

  • 屏幕边缘花屏
    root cause:屏幕一般都需要做offset调整,例如我手上这块屏幕在y方向有20左右的offset,才能正常使用
    solution:在如下位置添加offset设置:
    在这里插入图片描述
  • 运行lvgl Music、Widgets等demo时报Error,打开log发现out of memory问题
    root cause:lvgl 官方提供的demo会消耗较多内存
    solution:增大LV_MEM_SIZE 配置
    #define LV_MEM_SIZE (128 * 1024U)

小结

完整代码可以参看如下github:
https://github.com/dijiujun/FreeRTOS_demo
该示例代码集成了LVGL v9.3.0 和 FreeRTOS,后续会持续调试其他功能并扩展。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐