当前位置: 首页 > news >正文

【Mini-F5265-OB开发板试用测评】基于ST7735STFT屏幕的LVGL9移植

最近,我很幸运受邀参加MM32F5260开发板的测评活动。一直以来我对于图形化界面包有很高的热忱,LVGL是一款优秀的开源嵌入式图像界面库,它拥有丰富的组件和样式。但是由于涉及到图像的渲染,需要消耗大量的RAM空间。
在这里插入图片描述

MM32F5260是一款搭载了基于 Arm v8-M 架构 32 位 Star-MC1 内核(兼容 Cortex-M33)的 MCU 产品,其工作频率可达 120MHz,同时拥有256KB Flash和128KB RAM,达到了LVGL官方的推荐配置,所以本次测评活动决定移植LVGL9到MM32F5260平台上。
在这里插入图片描述

本次移植参考了很多网络的文章,此处仅列出几个较为重要的
1.LVGL 移植到 STM32 通法 ( 例:LVGL 9.2.2 到 STM32F429 )
https://www.cnblogs.com/Huae/p/18621614
2.LVGL官方手册的移植部分
https://docs.lvgl.io/9.2/porting

本次的移植工作主要分为4步

1、获取最新的LVGL代码并进行裁剪
2、在Keil工程中添加对应的.c和.h文件
3、实现st7735s的驱动
4、修改LVGL的display_flush函数中的画点函数修改为st7735s的画点函数

1、获取最新的LVGL代码并进行裁剪

我们从github中可以拉取最新的代码
在gitbash中执行git clone https://github.com/lvgl/lvgl.git
在这里插入图片描述

只保留如下的文件
在这里插入图片描述

2、在Keil工程中添加对应的.c和.h文件

本次移植选择的是”MM32F5260库函数与例程”中的GPIO_LED_Toogle工程作为模板
在这里插入图片描述

在GPIO_LED_Toggle文件夹中创建两个新的文件夹(lvgls、User)用于存储LVGL代码与用户代码
在这里插入图片描述

lvgls的目录结构如下
在这里插入图片描述

lvgls/lvgl的目录结构如下
在这里插入图片描述

lvgls/lvgl_app为空(后续用来存储自己的ui文件)
User用来存储自己写的代码(spi配置代码,st7735s驱动代码)
在这里插入图片描述

在keil中按照src中的文件夹创建Group,并导入该文件夹下的所有.c文件
在这里插入图片描述

在keil中添加Include路径
在这里插入图片描述

3、实现st7735s的驱动

主要实现以下几个函数
void SPI2_Init(void); //配置SPI2并初始化
void TFT_Init(void); //初始化LCD
void lcd_write_command(uint8_t cmd); //使用SPI2发送指令
void lcd_write_data(uint8_t data); //使用SPI2发送8位数据
void lcd_write_data_u16(uint16_t data); //使用SPI2发送16位数据
void lcd_write_address(uint8_t x_start,uint8_t y_start,uint8_t x_end,uint8_t y_end); 设置颜色数据写入地址

4、修改LVGL的lv_port_disp_init函数与disp_flush中的画点函数

lv_port_disp_init函数中,注释掉Example 2与Example 3部分

disp_flush函数中,将原有的示例画点函数替换为自己的
在这里插入图片描述

5、最后在main函数中初始化LVGL并测试一些基础组件是否正常渲染

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

重点!
在例程LibSamples_MM32F5260_V0.11.3\Device\MM32F5260\Source目录下MM32F5260.sct文件中修改heap与stack的大小为0x2000,LVGL的某些组件才能正常渲染!!
在这里插入图片描述

总结:
本次的移植工作暂时告一段落了,在debug的过程中,我学习了解了mcu的编译、连接与启动的过程,这应该才是嵌入式软件开发的魅力之处吧!
事物的发展总是螺旋式上升的,最后感谢灵动微电子和极术社区提供的平台与硬件开发板,祝国产mcu越做越好!

相关文章:

  • 【Linux驱动开发 ---- 1.1_Linux 基础操作入门】
  • 苍穹外卖--添加购物车
  • Websocket 数据实时更新(消息提醒功能)异步+事件发布
  • 我是如何使用Claude Code
  • 基于NAS与内网穿透技术的远程访问架构设计及安全实现
  • 浏览器实现跨系统交互
  • 【寻找Linux的奥秘】第十章:基础文件IO(上)
  • 华为流程体系拆解系列:L1-L6分层拆解逻辑
  • CentOS 7 环境下 Visual Studio Code 安装与部署
  • 分布式系统全链路监控之一:分布式全链路监控基础概念和OpenTelemetry
  • 5.安装IK分词器
  • 鸿蒙组件通用事件开发全攻略:从基础交互到工程实践
  • 华大TAU1114-1216A00四系统GNSS定位模块,车载/穿戴/IoT全适配!-165dBm高灵敏度,定位快人一步!“
  • 基于nacos和gateway搭建微服务管理平台详细教程
  • 安宝特案例丨突破传统手术室,Vuzix AR 眼镜圆满助力全膝关节置换术
  • 【力扣 中等 C】912. 排序数组
  • 高级网络中间人攻击与加密防护机制
  • 安宝特方案丨AR破解带电配网作业困局!全方位解决方案赋能电力运维新变革
  • 日志混乱与数据不一致问题实战排查:工具协同调试记录(含克魔使用点)
  • java 数组排序算法
  • 提高网站加载速度iis/营销与销售的区别
  • 做ebay需要的图片外链网站/考研培训班哪个机构比较好
  • 景县网站建设/网站设计公司建设网站
  • 徐州网站建设方案开发/免费推广产品的网站
  • dedecms做企业网站/免费合作推广
  • 福州 网站开发公司/百度风云榜游戏排行榜