LVGL 是一个优秀的嵌入式图形库在网上也有很多移植资料特别是百问网https://lvgl.100ask.net/master/intro/introduction.html的翻译文档是非常好的中文资料。本次介绍一种新的、高效的移植方法。1、常见移植方案简介常见的移植方法是基于官方的介绍最少需要6个步骤就可以实现移植关键是第4步Display Interface其中核心是实现 Flush Callbackh函数在指定的区域显示位图上图是个说明是最简单、最直接的实现方式。也非常容易从现有驱动实现 LVGL 的移植因为现成的驱动里肯定具备“画点”的函数。2、一个新的移植思路不知道从哪个版本开始LVGL 源码就提供了 st7789 等几个常见显示驱动芯片的驱动程序。我尝试在自己的硬件上运行但是非常遗憾不能运行。在阅读这部分驱动程序的过程中我发现了一个新的移植方法。先贴一下源码中关于 st7789 的驱动的文件 lvgl\src\drivers\display\st7789\lv_st7789.c 的主要部分从源码可以看到 lv_st7789_creat这个函数是关键内容就3行创建一个 lcd_generic_mipi 类型的 display发送一系列命令返回第一步创建的 display。仔细观察init_cmd_list可以发现它是一些用于初始化 st7789 的参数。对比我手上的屏幕这些参数不合适所以显示屏不能正常显示。基于此一个移植 LVGL 的新方法就出现了。为了不影响源码树把lv_st7789.c/.h 复制到项目目录修改文件名。然后修改其中init_cmd_list里的参数使之符合我们拥有的硬件参数。当然第一部分关键的6步骤里其他内容还是需要的。可以参考代码仓库的 main.c 文件运行官方的 benchmark 示例看看实际运行的情况可以看到APM32F427 的性能还是不错的。除了最后一个缩放文字示例的帧率只有 14FPS其他的示例帧率都在 20FPS 以上~这还是没有开启优化的情况下优化空间不少。这种新的移植方法借鉴了官方实现的 driver 程序只需要修改初始化参数就可以移植到新的显示控制器。对于遵循 mipi接口的显示驱动可移植性非常不错。我所知道的可以采用此移植方法的控制器类型有ili9341nv3007st7735st7789st7796gc9a01都是常见的显示控制器。3、结语APM32F427 这颗 MCU 的主频能上到 240MHz、Flash、SRAM 容量也都非常大编译 LVGL 官方的示例毫无压力推荐使用~可以从Gitee 的代码仓库获取基于 APM32F427 开发板的工程代码https://gitee.com/quincyzh/lvgl-demo工程使用 keil 开发除了 APM32F4xx 的package 外还需要LVGL::lvgl, 版本9.4.0 (2025-10-16)最后吐槽一下APM32F427Z-Tiny 开发板的Arduino 接口第一居然用的是排针而不是排母第二用排针也就罢了我自己换成排母也不需要太多功夫可是板载的接口与标准 Arduino 接口不一样导致我的Arduino 接口的显示模块只能用杜邦线使用也就是上面图片中的样子极海的硬件工程师赶紧改版吧~~~---------------------作者wangqy_ic链接https://bbs.21ic.com/icview-3501013-1-1.html来源21ic.com此文章已获得原创/原创奖标签著作权归21ic所有任何人未经允许禁止转载。