移植LVGL到单片机的一个demo简单介绍

简介

背景
本文使用的是主控IC为stm32f103zet6, 显示IC为ST7735s,它是128*160的像素,色深为RGB565颜色。

官方虽然说LVGL移植平台只需 64kB 闪存和 8kB RAM 就足以满足简单的用户界面。但我移植到stm32f103c8t6,不管怎么修改配置,一直显示内存不够。

LVGL 可以驱动单色OLED、TFT 显示器、监视器或任何其他显示器。c 代码使其可在任何平台上使用,例如 NXP LPC 或 iMX、STM32、PIC、Arduino、ESP32、Raspberry 等。

准备

下载lvgl 8.2.0版本源码下载地址:https://github.com/lvgl/lvgl
在这里插入图片描述

使用stm32cube编写驱动

在这里插入图片描述
在这里插入图片描述

移植LVGL和屏幕驱动

  1. 在lvgl_stm32f103ze_demo项目中新建Middlewares/LVGL文件夹
  2. LVGL文件夹下创建GUI/lvgl和GUI_APP文件夹
  3. 拷贝lvgl下的examples文件夹和src文件夹以及lv_conf_template.h和lvgl.h到Middlewares/LVGL/GUI/lvgl目录下注意:拷贝之后将lv_conf_tempalate.h修改为lv_conf.h
  4. 把lv_conf.h的条件编译指令#if 0修改成#if 1
    在这里插入图片描述

LVGL主要配置

驱动IC的色深和当前硬件支持的内存资源大小。
在这里插入图片描述
在lv_port_disp.c中选择三个模式中的一种,
本人选择第一种,大家看情况
在这里插入图片描述

划重点

这里必须重写打点函数,用自己的屏画点或划区域的函数替代一下。
在这里插入图片描述
屏幕宽高也需改成自己真实屏幕大小。
在这里插入图片描述

main.c主函数实现
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在main()函数的循环内调用lv_tick_inc(1);函数来提供心跳。并且调用lv_timer_handler()来使得LVGL正常运行(建议在定时器内调用更加方便)。

如果在编译代码,报错是#include“lvgl.h”这个出问题了,将#inclde"./././lvgl.h"这种改成#include“lvgl.h”就行了.

编译运行
在这里插入图片描述

效果展示

在这里插入图片描述

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

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

相关文章

Netty网络通信模型

传统IO模型: 传统IO模型就是阻塞IO,即处理业务逻辑的线程去进行IO,当然IO操作很耗时,然后线程就得阻塞,当然CPU会回收该线程的时间片,把该线程挂起,切换到其他线程去执行,在并发量大…

我干了8年测试,告诉你现在软件测试还能不能找到工作!

观点:如果你还是以前的思维来学习测试,那你肯定是找不到工作! 我做测试工作有将近8年的时间,蚂蚁金服做过2年,因为加班太多离职了。目前在一家国企上市公司,一年能拿三四十个左右,对比头部互联…

可视化 | echarts饼图改编

echarts模板来源 📚改编点 🐇基本样式 去掉legend、label:show: false背景透明:backgroundColor: "transparent"去除功能标签添加载入动态animationEasing: elasticOut, animationDelay: function (idx) {return Mat…

【数据结构】顺序表 | 详细讲解

在计算机中主要有两种基本的存储结构用于存放线性表:顺序存储结构和链式存储结构。本篇文章介绍采用顺序存储的结构实现线性表的存储。 顺序存储定义 线性表的顺序存储结构,指的是一段地址连续的存储单元依次存储链性表的数据元素。 线性表的&#xf…

MyBatis Plus—CRUD 接口

Service CRUD 接口 说明: 通用 Service CRUD 封装IService (opens new window)接口,进一步封装 CRUD 采用 get 查询单行 remove 删除 list 查询集合 page 分页 前缀命名方式区分 Mapper 层避免混淆,泛型 T 为任意实体对象建议如果存在自定义通用 Servi…

10-Docker-分布式存储算法

01-哈希取余算法分区 哈希取余分区(Hash Modulus Partitioning)是一种在分布式计算和数据存储中常用的分区策略,其目的是将数据或计算任务分配到多个节点或服务器上,以实现负载均衡和提高性能。这种分区策略的核心思想是使用哈希…

通过商品ID获取到京东商品详情页面数据,京东商品详情官方开放平台API接口,京东APP详情接口,可以拿到sku价格,销售价演示案例

淘宝SKU详情接口是指,获取指定商品的SKU的详细信息。SKU是指提供不同的商品参数组合的一个机制,通过不同的SKU来标识商品的不同组合形式,如颜色、尺寸等。SKU详情接口可以帮助开发者获取指定商品的SKU列表,以及每个SKU的属性、库存…

VirtualBox网络地址转换(NAT),宿主机无法访问虚拟机的问题

问题:NAT模式下,默认只能从内访问外面,而不能从外部访问里面,所以只能单向ping通,虚拟机的ip只是内部ip。 PS:桥接则是与主机公用网卡,有独立的外部ip。 解决:NAT模式可以通过配置 …

第十八章 Swing 程序设计

目录 概述 Swing常用窗体 JFrame 窗体 JDialog 对话框 JOptionPane 小型对话框 1.自定义对话框 2.确认框 3.输入框 4.通知框 常用布局管理器 null绝对布局 FlowLayout 流布局管理器 BorderLayout 边界布局管理器 GridLayout 网络布局管理器 常用面板 JPa…

Servlet作业小练习

一.题目 利用JavaBean实现用户类,包含姓名、性别、爱好,爱好需要用多选框 实现表单1进行获取数据,表单2显示获取结果。 利用Servlet实现逻辑代码 二.实现效果 三.具体实现 1.User实体类 package com.hjj.pojo.hw9;/*** author:嘉佳 Dat…

Halcon的相机内参外参的标定

halcon标定相机内参只能使用方向标定板和圆点标定板。并且方向标定板可也可用性极高。 1.打开halcon的标定助手,选择标定板的描述文件,填写标定板的厚度,根据相机选择像元的尺寸和镜头的焦距。如果已有相机内参,只标定外参&#…

SpringMVC--@RequestMapping注解

RequestMapping注解 RequestMapping注解的功能RequestMapping注解的位置RequestMapping注解的属性1、value属性2、method属性3、params属性(了解) 补充RequestParamRequestHeaderRequestBody RequestBody获取json格式的请求参数 ResponseBodyRestControl…

设计模式(3)-结构型模式

结构型模式 结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。 由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则…

SpringBoot 监听机制

Java 监听机制 SpringBoot 的监听机制,其实是对Java提供的事件监听机制的封装。 Java中的事件监听机制定义了以下几个角色: 事件:Event,继承 java.util.EventObject 类的对象事件源:Source ,任意对象Obje…

计算机网络第4章-通用转发和SDN

引子: 在前面,我们将基于目的地转发的特征总结为两个步骤: 查找目的IP地址(匹配),然后将分组发送到有特定输出端口的交换结构(“动作”)。 但是这种转发特征会带来许多问题&#…

webpack babel

构建工具 简介 当我们习惯了在node中编写代码的方式后,在回到前端编写html、css、js这些东西会感觉到各种的不便。比如:不能放心的使用模块化规范(浏览器兼容性问题)、即使可以使用模块化规范也会面临模块过多时的加载问题。我们…

SQL中实现汉字的拼音首字母查询

由于汉语拼音首字母也就23个,该方法利用汉字字符按拼音字母排序的特点来生成对应的拼单首字母,只需找到这23个汉语拼音首字母中分别排序在第一的汉字生成23条临时表数据用于参照,即可简单实现汉字匹配拼音首字母 CREATE FUNCTION f_GetPyAcr…

【图论实战】Boost学习 02:基本类型

/* 顶点 */ // 描述 typedef boost::graph_traits < graph_t >::vertex_descriptor vertex_descriptor; // 迭代器方式一&#xff1a;vp中的一对迭代器分别指向第一个顶点和最后的一个顶点之后 typedef boost::graph_traits < graph_t >::vertex_iterator vi…

【Excel】函数sumif范围中符合指定条件的值求和

SUMIF函数是Excel常用函数。使用 SUMIF 函数可以对报表范围中符合指定条件的值求和。 Excel中sumif函数的用法是根据指定条件对若干单元格、区域或引用求和。 sumif函数语法是&#xff1a;SUMIF(range&#xff0c;criteria&#xff0c;sum_range) sumif函数的参数如下&#xff…

多测师肖sir___接口自动化测试框架(python+request+unittest+ddt)

接口自动化测试框架 一、接口自动化测试框架&#xff08;pythonrequestunittestddt&#xff09; 首先我们新建一个新项目:名称zdh 二、在一个项目中&#xff1a;新建6个包 第一个包conf包用来填写配置参数、地址等 第二个包data 包用来存放测试用例的表格 第三个包report 包用来…