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

stm32f407vet6驱动3.2寸lcd(9341 FSMC hal)

最近在钻研一些显示屏,研究到了lcd显示屏,然后入手了一块f407的开发板,但是店家给的资料有点怪,是keil4的工程,我一打开显示缺少f407vexxx,keil现在还巨慢,然后我到处找资料,发现网上大多是vgt6,又去各家vet6的店铺区找资料。折腾了几天终于把lcd点亮了,然后把标准库的代码移植到了hal库上面

开发板:43f78e386a654501b0709acd4783c2d5.jpeg

6089692b22ab4e62bd82e9fe58916581.jpeg

1.cubemx配置:

(1)基础配置:

        没啥好说的,之间配置即可,我这里用的是stlink调试器,频率直接拉满,时钟都是外部晶振。be62527b3a3f44c8a04af53b894ec7df.png

时钟配置 f2ca2d9221d2447e9122de8c929a9fbb.png

接下来是这次工程的重点FSMC的配置:

首先我们对照原理图,看一下引脚的配置 ebd5d22ef711409c8d28eedee028f73b.png

对照原理图我们可以发现,这款开发板使用的是NE1,A18,同时原理图显示上面有16个数据位,这样我们就可以对TFT的基础管脚进行配置 ,具体配置如下:

9bf15d2a6ece49ea853d40f24d5874d0.png

剩下的配置我们需要对照标准库的代码进行配置(可以提前用烧录标准库的代码检查一下代码是否有问题)

我们先将下面三个文件复制到自己的文件中

打开文件直接找到LCD_Init函数FSMC配置的位置

2958174332bb433c8d710bb38c58aaba.png

8d3d9bf0917d4aebbab8e23700906281.png

对照代码和注释 我们在cubemx上继续配置

971c34805df640eea8105119d0626585.png

最后我们配置一下背光端口,即LCD_BL

50cc17225e834bc8a31143a2dc6f6f98.png

对照原理图我们发现是连接到了单片机的PB1引脚,简单配置一下即可

3a31117b52e34f6e9124cda9d7eda303.png

这样我们cubemx就配置的差不多了,最后来点收尾:

72be19ab144d4a28ae229bce801d26e4.png

cubemx配置结束,生成代码

2.keil文件修改: 

lcd.c:

f4f5c305ce684929b32631b8425ca5cf.png

首先开头几个头文件串口和延时可以去掉,(串口可以自己在cubemx上配置,延时直接用自带的hal_delay就行了)

然后去lcd_Init函数把FSMC配置函数全部删掉,这部已经配置好了

ba28a9378dd94dd2b252ffcd16d670fb.png

下图这部分也要删掉,这部分之前没在意结果显示出现问题

52fd3afe7951412a9be398450608569d.png

在它上面有个读取ID的函数,把LCD_WR_REG(0X04);改为LCD_WR_REG(0Xd3);(9341读取ID指令为0xd3)下面那个串口发送以及修改id的代码可以直接注释掉,这一部分最后修改前后对比

修改前:

20b98a4ecd10461da3cb94eeb6771ed7.png

修改后:

44631dc205554f108144d34313af08d6.png

接着是下面的一些列初始代码,下图这段注释掉,改用下面原先注释掉的代码(原先注释掉的代码为9341初始化的代码)

18eaeaef2e8c4a4e8328c2070295a1cc.png

371b05234017435d8e7bd71605474541.png 同时注意一下这两行代码b0f24ba2562a4b08bf21e7e706d91697.png

然后修改一下背光

 修改之后:

 (LCD_BL_GPIO_Port是在cubemx中自定义的,也可以使用PB1来点亮)

这两段代码控制着LCD的扫描方向,我最开始显示镜像就是这里的问题,可以改成0x08,自定义的话可以看汉化的手册,虽然只有命令的解释,但也够用了

461379f908d54914a85c0ee3f39023d9.png

 lcd.h文件中只需要把sys.h文件删除即可,接着我们可以把原来代码中类型声明全部换掉(u16这些声明是在sys.h中声明的)选中ctrl+f替换即可,特别注意的是u16不要直接替换,先替换vu16为volatile uint16_t vu32也是同理.

源代码中的延时函数:ms级延时用hal_delay,us级延时用hal_delay(1)替换.

3.验证

在main.c函数中验证

6da202585b594482b7f986e23dbf36b1.png

b6c7e064390f453299359c1afbd72cfb.png 最终效果:

31f81ba01cd54751a1e80bcfa73d2136.jpeg

程序源码:

cubemx移植版 链接:https://pan.baidu.com/s/1PFkykgRxg-PBlFd-WrW3XQ?pwd=mz44 
提取码:mz44

开发板商家例程:百度网盘 请输入提取码

相关文章:

stm32f407vet6驱动3.2寸lcd(9341 FSMC hal)

最近在钻研一些显示屏,研究到了lcd显示屏,然后入手了一块f407的开发板,但是店家给的资料有点怪,是keil4的工程,我一打开显示缺少f407vexxx,keil现在还巨慢,然后我到处找资料,发现网上大多是vgt6,又去各家ve…...

替换后的最长重复字符(LeetCode)

题目 给你一个字符串 s 和一个整数 k 。你可以选择字符串中的任一字符,并将其更改为任何其他大写英文字符。该操作最多可执行 k 次。 在执行上述操作后,返回 包含相同字母的最长子字符串的长度。 解题 def characterReplacement(s, k):count {}max_len…...

[sqlserver][sql]sqlserver查询表信息和字段信息

--查询一个表中的所有字段 SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAMEzsyh_AccInfo --查询一个库下的所有表 select * from sysobjects where xtypeU --查询一个数据库下的所有字段 SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME in(select nam…...

easypoi模板导出word并且合并行

导出流程 引入依赖制作模板合并导出 引入依赖 <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base</artifactId><version>4.1.2</version> </dependency>制作模板 合并行是备注那一列&#xff0c;这一列…...

雨云美国二区E5v2服务器测评(非广告)

注&#xff1a;本文非广告&#xff0c;非推广 本文长期更新地址&#xff1a; 雨云美国二区E5v2服务器测评&#xff08;非广告&#xff09;-星零岁的博客https://blog.0xwl.com/13594.html 今天来测评一下雨云美国二区v2服务器。我测试的这台配置是4-8&#xff0c; 35 M上传&a…...

前端form表单post请求

前端请求post&#xff0c;以表单的形式&#xff0c;后端传来的str,就是url携带的参数 const form document.createElement(form); form.style.display none; form.setAttribute(target, _blank); form.setAttribute(method, post); form.setAttribute(action,url); var vars …...

oracle共享池(shared pool):一、工作原理、组成部分 二、软硬解析过程

文章目录 oracle整体结构图共享池&#xff08;shared pool&#xff09;shared pool的作用shared pool的组成查询 shared pool 各组成部分大小硬解析和软解析 oracle整体结构图 共享池&#xff08;shared pool&#xff09; shared pool的作用 1、 将 sql 语句解析成执行计划 …...

设计模式六大原则中的里氏替换原则

设计模式六大原则中的里氏替换原则&#xff08;Liskov Substitution Principle, LSP&#xff09;是面向对象设计中一个至关重要的原则&#xff0c;它定义了继承的基本原则和约束&#xff0c;确保子类能够透明地替换父类&#xff0c;而不会破坏系统的正确性和稳定性。以下是对里…...

安装Cellpose

Cellpose是目前运用范围最广、效果最好的细胞分割模型&#xff0c;以下是安装方法。 3.1 安装cellpose 3.1.1 创建cellpose 打开Anaconda Navigator,如下图所示&#xff1a; 图3.1.1.1 Anaconda Navigator 依次点击 Environments、Create&#xff0c;在弹出的窗中&#xff0…...

图卷积神经网络算法

图神经网络 图卷积神经网络 GNN GCN 算法 咨询 图卷积神经网络&#xff08;GCN&#xff09; python D码&#xff0c;应用于节点分类。元学习&#xff0c;自监督学&#xff0c;transformer&#xff0c;lstm&#xff0c;cnn&#xff0c;bert&#xff0c;GAN&#xff0c;交通预测 …...

【C#】System.Text.Json

文章目录 主要特点使用场景基本用法序列化反序列化 自定义序列化与反序列化注意事项 System.Text.Json 是 .NET Core 3.0 及更高版本中引入的一个高性能的、低内存的 JSON 序列化与反序列化库。它是 .NET Core 和 .NET 5/6/7 等新版本中推荐的 JSON 处理方式&#xff0c;因为它…...

经典游戏,用java实现的坦克大战小游戏

今天给大家分享一个使用java编写的坦克大战小游戏&#xff0c;整体还是挺好玩的&#xff0c;通过对这款游戏的简单实现&#xff0c;加深对java基础的深刻理解。 一、设计思路 1.坦克大战小游戏通过java实现&#xff0c;其第一步需要先绘制每一关对应的地图&#xff0c;地图包括…...

linux开通端口命令

这块需要开通8088 8083 端口限制 查看已开放端口&#xff1a;sudo firewall-cmd --list-ports 开放8083端口&#xff1a;sudo firewall-cmd --add-port8088/tcp --permanent 开放8088端口&#xff1a;sudo firewall-cmd --add-port8083/tcp --permanent 移除端…...

5、并发锁机制之synchronized

并发锁机制之synchronized i/i--引起的线程安全问题分析原因分析i的JVM字节码指令i--的JVM 字节码指令结论 解决方案 synchronized的使用加锁方式使用synchronized解决之前的共享问题方式一方式二 synchronized底层实现原理分析查看synchronized的字节码指令序列重量级锁实现之…...

职场那些事:应对施暴者的智慧

在职场中&#xff0c;有些人用各种手段让你感到难受&#xff0c;让你屈服&#xff0c;甚至适应他们的变态心理。面对这种人&#xff0c;最重要的就是保持低调。&#x1f910; 很多同事选择倾诉&#xff0c;然而这其实是个大错特错。正如鲁迅所说&#xff0c;“同事间的悲欢并不…...

精细化管理和智慧化运营的智慧油站开源了。

AI视频监控平台简介 AI视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;从而大大减少企业级应用约95%的开发成本。用…...

vue项目配置基础路由vue-router

1、运行以下命令安装vue-router yarn add vue-router 2、在src目录下的components中新建两个vue页面 3、在src目录下新建router文件夹&#xff0c;在router文件夹下面新建index.js文件 4、配置main.js文件 //引入Vue import Vue from "vue"; //引入App import App…...

2024年入职/转行网络安全,该如何规划?_网络安全职业规划

前言 前段时间&#xff0c;知名机构麦可思研究院发布了 《2022年中国本科生就业报告》&#xff0c;其中详细列出近五年的本科绿牌专业&#xff0c;其中&#xff0c;信息安全位列第一。 网络安全前景 对于网络安全的发展与就业前景&#xff0c;想必无需我多言&#xff0c;作为…...

【Python系列】执行 Shell 命令的六种方法

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

2024华为OD机试真题-部门人力分配Python-C卷D卷-200分

【华为OD机试】-(C卷+D卷)-2024最新真题目录 目录 题目描述 输入描述 输出描述 用例1 考点 解题思路 代码 题目描述 部门在进行需求开发时需要进行人力安排。 当前部门需要完成 N 个需求,需求用 requirements 表述,requirements[i] 表示第 i 个需求的工作量大小,单…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外&#xff0c;K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案&#xff0c;全安装在K8S群集中。 具体可参…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

Java 8 Stream API 入门到实践详解

一、告别 for 循环&#xff01; 传统痛点&#xff1a; Java 8 之前&#xff0c;集合操作离不开冗长的 for 循环和匿名类。例如&#xff0c;过滤列表中的偶数&#xff1a; List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...

基于服务器使用 apt 安装、配置 Nginx

&#x1f9fe; 一、查看可安装的 Nginx 版本 首先&#xff0c;你可以运行以下命令查看可用版本&#xff1a; apt-cache madison nginx-core输出示例&#xff1a; nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA

浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求&#xff0c;本次涉及的主要是收费汇聚交换机的配置&#xff0c;浪潮网络设备在高速项目很少&#xff0c;通…...

Neko虚拟浏览器远程协作方案:Docker+内网穿透技术部署实践

前言&#xff1a;本文将向开发者介绍一款创新性协作工具——Neko虚拟浏览器。在数字化协作场景中&#xff0c;跨地域的团队常需面对实时共享屏幕、协同编辑文档等需求。通过本指南&#xff0c;你将掌握在Ubuntu系统中使用容器化技术部署该工具的具体方案&#xff0c;并结合内网…...

密码学基础——SM4算法

博客主页&#xff1a;christine-rr-CSDN博客 ​​​​专栏主页&#xff1a;密码学 &#x1f4cc; 【今日更新】&#x1f4cc; 对称密码算法——SM4 目录 一、国密SM系列算法概述 二、SM4算法 2.1算法背景 2.2算法特点 2.3 基本部件 2.3.1 S盒 2.3.2 非线性变换 ​编辑…...