STM32移植ST77891.69寸屏幕并移植lvgl8.0.2(按键输入设备)一些心得

news2024/11/16 6:29:50

学习目标:

将ST7789(1.69寸圆角屏SPI)驱动移植+lvgl移植+按键当作输入设备


学习内容:

  1. 驱动移植
  2. lvgl移植
  3. 按键移植
  4. 软件使用

正片开始:

先说说这块屏幕的介绍呗

ST7789屏幕是一种高性能的液晶显示屏,它具有高清晰度、高亮度、低功耗等优点。它采用了SPI接口通信,可以实现快速数据传输。该屏幕广泛应用于智能手表、智能家居、智能穿戴设备等产品中,是一种非常受欢迎的显示屏。

一个字 我选择他的原因:小!

话说回来?小有什么用???

俗话说得好,小而精美,短小精悍可以就能这么理解。最主要是人家不仅小还清晰,价格还那么实惠,干嘛不选择人家呢0.o 0.o  0.o

好了好了先看看屏幕的样子:

 就是这个样子 有木有很像你手上的手表屏幕呢?HHH~~~

可是当时看到这个屏幕的时候 我引发了两个思考:

一:md  线这么少 这不能触摸 只能看 小没用 还缺少了触摸功能...不如以前用的正点原子提供的大屏还有触摸芯片

二:圆角好看是好看 嘿嘿~~~ 哦?不对?像素点(0,0)在哪里? 是个考究的问题 不是方方正正的 为啥被称作240*280呢0.0 我直接懵逼

 ok 先解决第一个问题 :找到了另一块有触摸芯片的屏幕

 类似于这个 但是这个屏幕麻烦点就在于 需要勾吧转接板 FPC转排针的 家里没焊接工具 那就只能忍忍洛 

ok 再解决第二个问题,当然我后来是驱动成功了,所以我测试了一下(0,0)在哪里 这个点直接被吃了 相当于最外的轮廓是240*280 圆角是被吃了 可以理解被(偷工减料)了0.0,类似于用偷工减料换取的艺术 这样形容很优雅

这样我们就开始入手他 用什么驱动?看引脚就知道SPI通信嘛? SPI你会吗?好好好 你会 但我目前不是很会 我只是想用这个屏幕 则----某宝商家要源码呀!

心路历程os:要到源码后的我 并不是很开心,因为他用的是软件spi! 男人追求的是速度!速度!你用个软件spi怎么能行,则完全没用过spi的我励志 要开始把软件spi移植成硬件spi!

 屏幕驱动的移植:

       初始化屏幕的.h:

  无脑替换:

#include "main.h"

#include "spi.h"
#include "gpio.h"

   看不惯标准库的函数,无脑替换成HAL库的:

#define LCD_RES_Clr()  HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,0)//RES  
#define LCD_RES_Set()  HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,1)

#define LCD_DC_Clr()   HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,0)//DC
#define LCD_DC_Set()   HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,1)
 		     
#define LCD_CS_Clr()   HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,0)//CS
#define LCD_CS_Set()   HAL_GPIO_WritePin(GPIOB,GPIO_PIN_1,1)

#define LCD_BLK_Clr()  HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,0)//BLK
#define LCD_BLK_Set()  HAL_GPIO_WritePin(GPIOA,GPIO_PIN_4,1)
<

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

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

相关文章

Hive原理剖析

一、简介 Hive是建立在Hadoop上的数据仓库框架&#xff0c;提供大数据平台批处理计算能力&#xff0c;能够对结构化/半结构化数据进行批量分析汇总完成数据计算。提供类似SQL的Hive Query Language语言操作结构化数据&#xff0c;其基本原理是将HQL语言自动转换成MapReduce任务…

k3s初体验

概述 K3s 是轻量级的 Kubernetes。K3s 易于安装&#xff0c;仅需要 Kubernetes 内存的一半&#xff0c;所有组件都在一个小于 100 MB 的二进制文件中。 K3s 是 rancher 公司开发维护的一套 K8s 发行版。 目的是轻量化 K8s&#xff0c;并将其应用于 IoT 设备&#xff08;比如树…

信息系统项目管理师(第四版)教材精读思维导图-第五章信息系统工程

请参阅我的另一篇文章&#xff0c;综合介绍软考高项&#xff1a; 信息系统项目管理师&#xff08;软考高项&#xff09;备考总结_计算机技术与软件专业技术_铭记北宸的博客-CSDN博客 本章思维导图PDF格式 本章思维导图XMind源文件 5.1 软件工程 5.2 数据工程 5.3 系统集成 5.4 …

JVM第二篇 类加载子系统

JVM主要包含两个模块&#xff0c;类加载子系统和执行引擎&#xff0c;本篇博客将类加载子系统做一下梳理总结。 1.类加载子系统功能 2.类加载子系统执行过程 2.1 加载 解析class文件的常用工具

SpringCloud学习笔记(十二)_Zipkin全链路监控

Zipkin是SpringCloud官方推荐的一款分布式链路监控的组件&#xff0c;使用它我们可以得知每一个请求所经过的节点以及耗时等信息&#xff0c;并且它对代码无任何侵入&#xff0c;我们先来看一下Zipkin给我们提供的UI界面都是提供了哪些信息。 zipkin首页为我们提供了对于调用链…

JavaScript最牛逼代码语句

下面这段代码是JavaScript中最牛逼的表达式 ([][[]] [])[!![]] ([] {})[!![] !![]]为什么说这个表达式是最牛逼的表达式呢?我们把它放浏览器内执行一下 输出如下,怎么样,牛不牛逼 那它为什么会输出这么一个玩意儿呢,我们先把它拆解一下 ([][[]] [])[!![]] ([] {})[!!…

【python使用 Pillow 库】缩小|放大图片

当我们处理图像时&#xff0c;有时候需要调整图像的大小以适应特定的需求。本文将介绍如何使用 Python 的 PIL 库&#xff08;Pillow&#xff09;来调整图像的大小&#xff0c;并保存调整后的图像。 环境准备 在开始之前&#xff0c;我们需要安装 Pillow 库。可以使用以下命令…

文心一言 VS 讯飞星火 VS chatgpt (82)-- 算法导论8.1 1题

一、如果用go语言&#xff0c;在一棵比较排序算法的决策树中&#xff0c;一个叶结点可能的最小深度是多少? 文心一言&#xff1a; 在一个排序决策树&#xff08;如二叉搜索树&#xff09;中&#xff0c;每个叶节点的最小深度等于输入数据中最大元素与最小元素之间的位距离。…

(动态规划) 剑指 Offer 48. 最长不含重复字符的子字符串 ——【Leetcode每日一题】

❓剑指 Offer 48. 最长不含重复字符的子字符串 难度&#xff1a;中等 请从字符串中找出一个最长的不包含重复字符的子字符串&#xff0c;计算该最长子字符串的长度。 示例 1: 输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”&#xff0c;所以其长度为…

Java“牵手”天猫淘口令转换API接口数据,天猫API接口申请指南

天猫平台商品淘口令接口是开放平台提供的一种API接口&#xff0c;通过调用API接口&#xff0c;开发者可以获取天猫商品的标题、价格、库存、商品快递费用&#xff0c;宝贝ID&#xff0c;发货地&#xff0c;区域ID&#xff0c;快递费用&#xff0c;月销量、总销量、库存、详情描…

ArrayList集合安全

并发修改异常 java.util.ConcurrentModificationException异常 CopyOnWriteArrayList add() 方法 public boolean add(E e) {final ReentrantLock lock this.lock;lock.lock();try {Object[] elements getArray();int len elements.length;Object[] newElements Arrays.c…

【Acwing285】没有上司的舞会(树形dp)题目笔记

题目描述 题目分析 首先来看状态表示&#xff1a; f[u][1]&#xff1a;所有从以u为根的子树中选择&#xff0c;并且不选u这个点的情况之下的最大指数 f[u][0]&#xff1a;所有从以u为根的子树中选择&#xff0c;并且选择u这个点的情况之下的最大指数 然后看状态计算&#x…

3 自制一个集群分发脚本

1. 随便取了一个名字&#xff1a;xsync 2. 在一个配置环境变量的目录下&#xff0c;我是放在了/opt/software下&#xff0c;这个路径我是配置了环境变量的。 3. 编辑脚本&#xff1a;vim xsync #!/bin/bash#1. 判断参数个数 if [ $# -lt 1 ] thenecho Not Enough Arguement!…

【淘宝/天猫】获得淘宝商品详情sku(PC端APP端),关键词搜索商品列表,商品分类等

采集商品详情的主要用途包括&#xff1a; 1. 电商平台运营&#xff1a;电商平台需要收集商品的详细信息&#xff0c;包括商品名称、描述、价格、规格、图片等&#xff0c;以便展示给用户进行购买决策。通过采集商品详情&#xff0c;电商平台可以提供丰富的商品信息给用户&…

openGauss学习笔记-52 openGauss 高级特性-LLVM

文章目录 openGauss学习笔记-52 openGauss 高级特性-LLVM52.1 适用场景52.2 非适用场景52.3 其他因素对LLVM性能的影响52.4 LLVM使用建议 openGauss学习笔记-52 openGauss 高级特性-LLVM openGauss借助LLVM&#xff08;Low Level Virtual Machine&#xff09;提供的库函数&…

语言基础篇1——Python概述,Python是什么?Python能干什么?

概述 简介 Python&#xff0c;计算机高级语言&#xff0c;读作/ˈpaɪθən/&#xff08;英音&#xff09;、/ˈpaɪθɑːn/&#xff08;美音&#xff09;&#xff0c;意为蟒蛇&#xff0c;Python的logo为两条缠绕的蟒蛇 特点 Python以开发效率高而运行效率低著称 应用领域…

Android学习之路(10) Bundle

Bundle的概念理解 Bundle经常出现在以下场合&#xff1a; Activity状态数据的保存与恢复涉及到的两个回调&#xff1a;void onSaveInstanceState (Bundle outState)、void onCreate (Bundle savedInstanceState)Fragment的setArguments方法&#xff1a;void setArguments (Bu…

无可用的防病毒提供方你的设备

今天安装软件时关闭了一下windows的Defender&#xff0c;然后安装后出现下面问题 莫名奇妙我的病毒防护就不能用了 后来请教了老师才知道是安装的软件把我系统设置改了&#xff0c;以后使用一键安装软件要谨慎 解决措施&#xff1a; CMD命令&#xff0c;输入“regedit”&#…

kubernetes/k8s驱逐机制总结篇

概述 k8s的驱逐机制是指在某些场景下&#xff0c;如node节点notReady、node节点压力较大等&#xff0c;将pod从某个node节点驱逐掉&#xff0c;让pod的上层控制器重新创建出新的pod来重新调度到其他node节点。这里也将kube-scheduler的抢占调度纳入到了驱逐的讨论范围内&#…

Kotlin开发笔记:协程基础

Kotlin开发笔记&#xff1a;协程基础 导语 本章内容与书的第十五章相关&#xff0c;主要介绍与协程相关的知识。总的来说&#xff0c;本文将会介绍Kotlin中关于异步编程的内容&#xff0c;主要就是与协程有关。在Kotlin中协程是利用continuations数据结构构建的&#xff0c;用…