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

LVGL移植(STM32)

源码裁剪

源码所需要的内容如下:

  • 【文件夹】demos、examples(里面只保留porting)、src
  • 【.h文件】lv_conf_template.h、lvgl.h
    其中,以下文件需要进行改名:
  • lv_conf_template.h -> lv_conf.h
  • lv_port_disp_template -> lv_port_disp(位于example->porting)
  • lv_port_indev_template -> lv_port_indev(位于example->porting)

插入代码

在STM32工程文件夹中,在“Middlewares”下新建"LVGL”文件夹存放LVGL代码。"LVGL”下面再新建两个文件夹:

  • LVGL_SRC:再新建“lvgl”文件夹,用于存放lvgl裁剪后的代码,原因是源码中的头文件引用表述
  • APPs:用于存放官方demos或自己已写的app
    image

在MDK工程配置中,Group配置如下:(其中的 “所有.c文件” 包含其子目录)
image

添加头文件路径:
image

此外,魔术棒中Target->ARM Compiler要选择v5,并在C/C++中勾选C99

修改堆栈

CubeMX默认生成的堆栈不够,直接执行会卡死在HardFault_Handler,要修改堆栈大小(上次移植修改为:stack:0x1000,heap:0x4000)。具体修改方式如下:image

配置显示

主要是lv_port_disp的内容,先把一些#if 0改为#if 1,然后配置以下内容:

  1. 配置图像数据缓冲模式,有三种模式,保留一种,注释掉不用的两种模式的代码(这一板块在lv_port_disp_init内)
  2. disp_init函数,配置屏幕初始化和设置横向显示
  3. 配置屏幕尺寸:MY_DISP_HOR_RESMY_DISP_VER_RES
  4. disp_flush函数,配置区域描点操作,注释掉官方if(disp_flush_enabled)内的,用自己的代码

配置输入

主要是lv_port_indev的内容,先把一些#if 0改为#if 1,然后配置以下内容:

  1. 注释掉lv_port_indev_init中无用设备初始化代码;
  2. touchpad_init函数,初始化触屏;
  3. 配置触摸检测touchpad_is_pressed
  4. 配置读取坐标函数touchpad_get_xy

配置时基

创建一个1ms的时基单元,每1ms执行lv_tick_inc(1)

测试

image

参考链接 :
[2-01]LVGL移植前的准备工作_哔哩哔哩_bilibili
STM32堆栈的大小及内存四 日(五)区的分析

http://www.dtcms.com/a/359477.html

相关文章:

  • 【开题答辩全过程】以 付费自习室系统小程序为例,包含答辩的问题和答案
  • 鸿蒙Next文本组件全解析:输入框、富文本与属性字符串开发指南
  • 智能合约安全全解析:常见漏洞、真实案例与防范实践
  • Sequelize ORM - 从入门到进阶
  • LabVIEW电力系统自动化仿真实验教学系统
  • 鸿蒙Next媒体展示组件实战:Video与动态布局全解析
  • Java全栈开发面试实录:从基础到微服务的实战解析
  • VideoPoet:Google发布的用于视频生成的大语言模型
  • Python 开发 Web 应用“最高效”的框架有哪些?
  • 赵玉平《向诸葛亮借智慧》读书笔记
  • LangChain实战(六):Document Transformers - 文本分割与处理
  • python调用豆包大模型给人脸生成卡通图像
  • 【Linux系统】线程互斥
  • 自动驾驶中的传感器技术37——Lidar(12)
  • 大话 IOT 技术(2) -- 配网篇
  • unity tilemap grid 的中心轴
  • 8.31【A】scons,带宽,语义semantic,读论文颜色规范,系统运行命令
  • 【lua】元表、元方法 详解及应用
  • 从 ETL 到 ELT 再到 EAI:AI 如何重塑数据处理
  • 【Bluedroid】A2DP Source 音频传输停止流程及资源管理机制(btif_a2dp_source_stop_audio_req)
  • Opencv的数据结构
  • Marco:阿里国际推出的商用翻译大模型,支持15种语言,效果超越谷歌、GPT-4
  • 在win服务器部署vue+springboot + Maven前端后端流程详解,含ip端口讲解
  • 编程与数学 03-004 数据库系统概论 10_数据库的实施
  • 音量增强器APP:提升手机音量的实用工具
  • 【openGauss】Oracle与openGauss/GaussDB数据一致性高效核对方案
  • 虚幻引擎技术开放日!facecar分享3D HMI设计与UE开发经验
  • 数学运算符号:跨越千年的智慧结晶与文明印记
  • [软考中级]嵌入式系统设计师—核心知识点速记
  • C++ STL之哈希封装实现unordered_map/set