STM32h750移植 LVGL v9.3.0问题总结
本文介绍了LVGL v9.3.0在STM32H750平台移植的经验总结。硬件使用淘宝购买的STM32H750VBT6开发板搭配240*280 ST7789液晶屏,开发环境为Keil+CubeMX。文章重点分析了移植过程中的常见问题:包括编译空间不足的片外Flash解决方案、白屏问题的定时器和SPI配置要点、屏幕偏移调整方法以及内存不足的优化措施。作者提供了GitHub示例代码(集成LVGL v9.
·
概要
网上大多数参考资料是移植LVGL v8版本, 本篇介绍LVGL v9.3.0最新版本的移植问题总结,并提供github代码供参考。
移植环境与准备工作
- STM32H750硬件平台
这里使用的是淘宝上购买的stm32H750VBT6开发板,并购买了240*280大小的st7789液晶屏和OV5640摄像头,商家提供了很多示例代码,上手很快; - LVGL v9.3.0
- 开发环境搭建(
CubeMX配置
IDE:keil
移植步骤与关键配置
- LVGL官网提供了st7789移植方法,可参考:
https://docs.lvgl.io/master/details/integration/driver/display/st7789.html
https://docs.lvgl.io/master/details/integration/driver/display/lcd_stm32_guide.html#lcd-stm32-guide
常见问题与解决方案
- 编译不过报空间不够问题: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,后续会持续调试其他功能并扩展。
更多推荐



所有评论(0)