stm32霸道-lvgl移植学习(一)

news2025/1/22 12:55:33

文章目录

    • 效果
    • 有用链接
    • 要求
    • 创建工程
    • 屏幕驱动以及触屏驱动
    • LVGL Port
    • Widgets demo
    • 其它

效果

目前显示驱动显示较慢,后续会优化。
请添加图片描述

在这里插入图片描述

有用链接

LVGL官网

代码下载

要求

要求最低要求 建议要求
架构16、32、64位微控制器或微处理器
时钟 > 16 MHz > 48 MHz
Flash/ROM > 64 kB > 180 kB
Static RAM > 16 kB > 48 kB
Draw buffer > 1 × hor. res. pixels > 1/10屏幕大小
编译器C99或更新

创建工程

在这里插入图片描述

创建一个main.c文件,并添加进去

在这里插入图片描述
新建组CMSIS以及LIB,将内核相关与外设相关的固件库c文件添加,并且添加启动文件
在这里插入图片描述
在启动文件中,可以看到堆栈的大小,栈是1024Byte, 堆是512Byte
在这里插入图片描述
在keil配置中,可以看到SRAM有64K, Flash有512K
在这里插入图片描述
因此默认的大小不符合LVGL的要求,需要调整一下:

在这里插入图片描述

添加include路径
在这里插入图片描述
添加宏STM32F10X_HD, USE_STDPERIPH_DRIVER
在这里插入图片描述
选择版本5,以及勾选微库
在这里插入图片描述
先写一个demo,然后编译通过
在这里插入图片描述
克隆LVGL项目到项目文件夹
git clone https://github.com/lvgl/lvgl.git

在这里插入图片描述

在lvgl文件夹下新建lv_conf.h文件,然后复制lv_conf_template.h文件的内容。将其中的宏定义0改为1

在这里插入图片描述

在这里插入图片描述
新建分组LVGL_Lib,将lvgl/src中的core misc hal中所有添加到里面,其余的如下:
font中的
在这里插入图片描述
theme中的lv_theme_default.c

widgetscalendarchartbtndropdownlabelwintabviewbtnmatrixswitchimgcolorwheellistmenutabviewtablerollerspinboxtextareasliderbarkeyboardcheckboxmeterledlinemsgboxspinnerarctitleviewimgbtn

layouts中的flex以及grid

draw中所有以及其sw文件下所有

添加完后,编译
在这里插入图片描述

创建分组LVGL_Conf,将lv_conf.h头文件添加进来,方便修改。

新建Wigets以及Driver分组,下面添加屏幕驱动以及触屏驱动

屏幕驱动以及触屏驱动

在这里插入图片描述

LVGL Port

新建LVGL_Port分组,在lvgl/example/porting中创建lv_port_disp.c以及lv_port_indev.c文件,并添加到工程中
在这里插入图片描述

在这里插入图片描述

Widgets demo

将demo文件夹中的widgets里的文件加入工程中,取消lv_conf中LV_USE_DEMO_WIDGETS注释,并且添加LV_USE_DEV_VERSION定义,防止waring

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

#include "stm32f10x.h"
#include "bsp_ili9341_lcd.h"
#include "bsp_xpt2046_lcd.h"
#include "lv_port_disp.h"
#include "lv_port_indev.h"
#include "lv_demo_widgets.h"


int main()
{
	//LCD 初始化
	ILI9341_Init();  
	
	//触摸屏初始化
	XPT2046_Init();
	
	ILI9341_GramScan ( 6 );
	
	lv_init();          	//lv 系统初始化
    lv_port_disp_init();    //lvgl 显示接口初始化,放在lv_init后面
	lv_port_indev_init();   //lvgl 输入接口初始化,放在 lv_init后面
    lv_demo_widgets();
	while(1)
	{
		lv_tick_inc(1);
		lv_task_handler();
	}
}

##最终工程的相关配置

在这里插入图片描述

其它

stm32103 ram和flash小,其中benchmark以及music的demo都运行不了的。总的说来,移植lvgl要点主要就是lv_port_disp.c以及lv_port_indev.c文件的移植,其它都没有变动,主要就是将交互以及显示接口给写好就是了,这里为了方便,用了霸道野火哥写的驱动。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/414135.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《低代码PaaS驱动集团企业数字化创新白皮书》-平台化加低代码提供破解之道(1)

平台化加低代码提供破解之道 大型企业亟需通过下一代平台开发技术实现软件创新,实现对海量数据的采集加工,以及企业内部数据的互联互通,帮助客户以低成本、短周期、高效率的方式实现数字化应用,进而赋能业务创新。基于此&#xf…

408--计算机网络--网络层总结1

目录 一、网络层概述: 1、网络层的主要任务: 2、网络层向上提供两种服务: 二、IPV4地址分类与子网划分: 1、分类编址: 一、网络层概述: 1、网络层的主要任务: 络层的主要任务就是将分组从…

【数据库基操】启动与连接MySQL数据库

一、启动与关闭 只介绍一种方法: 打开命令行工具,以管理员身份运行 1.启动数据库 net start mysql80 //80是在安装的时候设置的名字(默认),不用在意 2.关闭数据库 net stop mysql80 如题已经成功&#…

java获取本机ip的方法

Java中有一个类叫 Application,可以用来获取本机 ip,也可以用来获取网络连接的信息,例如网络上有什么主机、需要访问本机的主机名等。但是这个类只能在本机上使用,如果要访问外部的主机,还需要使用其它的方法。 首先在…

教育大数据总体解决方案(5)

(4)错题整理 将学生的本次考试错题进行集中整理,提炼出所有题目的题干和正确的答案。 (5)提高方案 分析学生对知识点掌握情况,推算出学生的进步空间以及下次考试的预测拔高分数。根据学生本次考试错误知识点…

你的APP内存还在暴增吗?试着用Bitmap管理下内存~

作者:layz4android 相信伙伴们在日常的开发中,一定对图片加载有所涉猎,而且对于图片加载现有的第三方库也很多,例如Glide、coil等,使用这些三方库我们好像就没有啥担忧的,他们内部的内存管理和缓存策略做的…

Java垃圾回收机制GC完全指南,让你彻底理解JVM运行原理

1、GC过程 1)先判断对象是否存活(是否是垃圾) 可以通过引用计数算法和可达性分析算法来判断,由于引用计数算法无法解决循环引用的问题,所以目前使用的都是可达性分析算法 2)再遍历并回收对象(回收垃圾) 可以通过垃圾收集器&…

使用Schrödinger Python API系列教程 -- 介绍 (一)

使用Schrdinger Python API系列教程 – 介绍 (一) 本文档可从Schrdinger网站www.schrodinger.com/pythonapi访问。 从Python文档字符串生成的完整API文档可以在这里访问 介绍 在最高级别上,Schrdinger Python API提供了一个基本的分子结构类,并允许与…

redis总结之-jedis

redis总结之-jedis4. Jedis4.1 Jedis简介4.1.1 编程语言与redis4.1.2 准备工作4.1.3 代码实现4.2 Jedis简易工具类开发4.2.1 基于连接池获取连接4.2.2 封装连接参数4.2.3 加载配置信息4.2.4 获取连接4.3 可视化客户端总结计划 1. Redis 入 门(了解)&…

LNMP网站框架搭建(编译安装的方式)

1. Nginx的工作原理 php-fpm.conf 是控制php-fpm守护进程的 php.ini是php解析器 工作进程: 1.客户端通过域名进行请求访问时,会找Nginx对应的虚拟主机 2. Nginx对该请求进行判断,如果是静态请求,Nginx会自行处理,并将处理结果…

因果推断14--DRNet论文和代码学习

目录 论文介绍 代码实现 DRNet ReadMe 因果森林 论文介绍 因果推断3--DRNet(个人笔记)_万三豹的博客-CSDN博客 摘要:估计个体在不同程度的治疗暴露下的潜在反应,对于医疗保健、经济学和公共政策等几个重要领域具有很高的实…

ERP系统有什么用?主要是这三方面

ERP 是Enterprise Resource Planning 的缩写,即企业资源计划系统,是建立在信息技术基础上,以系统化的管理思想,为企业决策层及员工提供决策运行手段的管理平台。它实现了企业内部资源和企业相关的外部资源的整合。通过软件把企业的人、财、物、产、供、销及相应的物…

socket 到底是个啥

哈喽大家好,我是咸鱼 我相信大家在面试过程中或多或少都会被问到这样一个问题:你能解释一下什么是 socket 吗 我记得我当初的回答很是浅显:socket 也叫套接字,用来负责不同主机程序之间的网络通信连接,socket 的表现…

整柜海运到美国的规格和收费标准是什么

整柜海运是指将所有货物安装在一个整箱内,由发货人和收货人共同操作,而目的港的收货人一般只有一个,方便操作。整柜海运到美国的主要流程有以下几个步骤:订舱、装柜、报关、海运、清关、提柜和送货。实际上,国际物流出…

IDEA 2023.1 最新变化

IntelliJ IDEA 2023.1 最新变化 在 IntelliJ IDEA 2023.1 中,我们根据用户的宝贵反馈对新 UI 做出了大量改进。 我们还实现了性能增强,从而更快导入 Maven,以及在打开项目时更早提供 IDE 功能。 新版本通过后台提交检查提供了简化的提交流程…

写博客8年与人生第一个502万

题记:我们并非生来强大,但依然可以不负青春。 原本想好好写一下如何制定一个目标并通过一点一滴的努力去实现,这三年反思发现其实写自己的经历并不重要。 很多人都听过一句话:榜样的力量是无穷的。 更现实和实际的情况是&#x…

【LeetCode】每日一题:移除元素

目录 题目: 思想1:暴力解法 思想2:创建一个temp数组 思想3:双指针 👻内容专栏:《LeetCode刷题专栏》 🐨本文概括:27.移除元素 🐼本文作者:花 碟 &#x1…

电商评论数据爬取--R语言

1.网络爬虫 1.1 什么是网络爬虫 网络爬虫(web crawler),也被称为网络蜘蛛(web spider),是在万维网浏览网页并按照一定规则提取信息的脚本或者程序。 浏览网页时,一般流程如下: 利…

C++语法(17)---- 二叉搜索树

1.概念 1.父节点的左子树全小于本身 2.父节点的右子树全大于本身 3.左右子树也是二叉搜索树 时间复杂度:O(N),有可能只有左数,这样就遍历了所有,所有复杂度为N 平衡二叉树的时间复杂度才是:O(logN) 2.模拟 1.数据元素…

Postman抓包教程

目录 什么是抓包? 如何使用 Postman 进行抓包 查看历史抓包数据 使用抓包数据进行接口测试和开发 抓包技巧和注意事项 什么是抓包? 在计算机网络中,抓包是指捕获网络流量的过程。抓包工具可以截获进出计算机网络的数据流,并将…