基于STM32F407的LVGL工程模板(MSP3526屏幕),包含FreeRTOS版和裸机版
内容提要
本文介绍了在STM32F407上移植LVGL图形库的方法,以及LCD屏幕的型号和驱动程序的修改。LVGL是一个免费开源的图形库,提供了创建嵌入式GUI所需的一切。它具有丰富的图形组件和高级的图形引擎,支持多种输入设备和多显示设备。LVGL不依赖特定的硬件平台,可以在任何显示屏上运行。文章还提供了接线说明和代码下载地址。
延伸解读
SPI屏幕的刷新率表现
文章提到,在STM32F407超频后,全屏刷新帧率约为9FPS,局部刷新超过30FPS。对于SPI接口的屏幕,这一表现属于正常范围。SPI的带宽有限,全屏刷新时数据量大,帧率较低;局部刷新时数据量小,帧率显著提升。因此,在SPI屏幕上使用LVGL时,应尽量采用局部刷新以优化流畅度。
硬件连接注意事项
接线表中特别指出,开发板的PB4引脚位于JTAG接口而非两侧排针,这可能导致接线不便。读者在连接SPI的MISO线时需注意此细节,避免因找不到引脚而困惑。此外,触摸屏的I2C引脚(PB8、PB9)和中断引脚(PB6)也需正确连接,否则触摸功能无法使用。
工程版本与开发环境
项目提供FreeRTOS版和裸机版,最新开源版本为FreeRTOS版,裸机版在发行版0.1.3中。工程使用STM32CubeMX生成,开发环境为Keil5、VScode和EIDE。FreeRTOS版的基本功能已实现,但作者表示仍需优化。用户可根据需求选择版本,若使用FreeRTOS版,代码应写在freertos.c中,便于CubeMX重新生成时不覆盖用户代码。
LVGL配置与资源要求
LVGL对硬件有一定要求:建议MCU主频大于16MHz,Flash大于64kB(推荐180kB),RAM静态使用约2kB,堆至少2kB(推荐8kB),显示缓冲区建议大于水平分辨率像素。在lv_conf.h中可配置LV_MEM_SIZE等参数。文章还说明如何关闭帧率和内存显示,以及注释掉Demo程序,方便用户自定义界面。
Q&A
如何在STM32F407上移植LVGL图形库?
可以通过修改LCD驱动程序并使用SPI+DMA驱动屏幕来实现移植。
MSP3526屏幕的分辨率和接口是什么?
MSP3526屏幕的分辨率为320x480,接口为SPI。
LVGL图形库有哪些主要特性?
LVGL具有丰富的图形组件、高级图形引擎、支持多种输入设备和多显示设备等特性。
在使用LVGL时,最低的硬件配置要求是什么?
最低要求是16位或32位微控制器,建议时钟速度大于16 MHz。
如何编译和下载LVGL代码?
将代码下载后直接编译并下载即可使用,具体步骤可参考使用说明。
如何关闭LVGL的帧率和内存占用显示?
在lv_conf.h文件中将相关宏定义的1改为0即可关闭显示。