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

基于正点原子F407开发版和SPI接口屏移植touchgfx完整教程(一)

一、相关软件包安装

1、打开cubemx包管理器

在这里插入图片描述

2、安装F4软件包

在这里插入图片描述

3、安装touchgfx软件包

在这里插入图片描述

二、工程配置

1、新建工程

在这里插入图片描述

2、sys配置

在这里插入图片描述

3、rcc配置

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

4、crc配置

在这里插入图片描述

5、添加touchgfx软件包

在这里插入图片描述

在这里插入图片描述

6、配置touchgfx软件包

在这里插入图片描述
将width和height改为自己屏幕尺寸

7、生成工程

在这里插入图片描述

三、代码修改

1、将屏幕相关驱动加载到工程

在这里插入图片描述

2、修改头文件支持c++

在头文件中加入

#ifdef __cplusplus
extern "C" {
#endif,,,,,,#ifdef __cplusplus
}
#endif

在这里插入图片描述

3、修改touchgfx源码

a、修改TouchGFXHAL.cpp文件中的void TouchGFXHAL::flushFrameBuffer(const touchgfx::Rect& rect)函数,将数据刷新到屏幕

void TouchGFXHAL::flushFrameBuffer(const touchgfx::Rect& rect)
{volatile uint16_t* buffer = getClientFrameBuffer()+(rect.y*DISPLAY_WIDTH)+rect.x;uint16_t height,i;LCD_Address_Set(rect.x,rect.y,rect.x+rect.width-1,rect.y+rect.height-1);LCD_WR = 1;for(height=0;height<rect.height;height++){for(i=0;i<rect.width;i++){//LCD_Write_HalfWord(buffer[i]);SPI1->DR = buffer[i]>>8;	 	  		while((SPI1->SR&1<<1)==0);SPI1->DR = (u8)buffer[i];	 	  		while((SPI1->SR&1<<1)==0);}buffer += DISPLAY_WIDTH;}}

在这里插入图片描述

a、修改TouchGFXHAL.cpp文件中的新添加touchgfxTickHandler函数,为touchgfx提供时钟。在1ms定时器中调用。提供的时钟为20ms,屏幕刷新为50hz。

extern "C" void touchgfxTickHandler()
{static uint8_t ms = 0;static uint8_t isHigh = 0;if(isInited){ms++;if(ms==10){ms = 0;isHigh = !isHigh;if(isHigh){HAL::getInstance()->vSync();OSWrappers::signalVSync();HAL::getInstance()->swapFrameBuffers();}else{HAL::getInstance()->frontPorchEntered();}	}}
}

在这里插入图片描述

c、在1ms的定时器中调用touchgfxTickHandler函数

在这里插入图片描述
四、完整工程下载
完整工程点击我下载

相关文章:

基于正点原子F407开发版和SPI接口屏移植touchgfx完整教程(一)

一、相关软件包安装 1、打开cubemx包管理器 2、安装F4软件包 3、安装touchgfx软件包 二、工程配置 1、新建工程 2、sys配置 3、rcc配置 4、crc配置 5、添加touchgfx软件包 6、配置touchgfx软件包 将width和height改为自己屏幕尺寸 7、生成工程 三、代码修改 1、将屏幕相关驱…...

Linux--进程间通信

前言 上一篇相关Linux文章已经时隔2月&#xff0c;Linux的学习也相对于来说是更加苦涩&#xff1b;无妨&#xff0c;漫漫其修远兮,吾将上下而求索。 下面该片文章主要是对进程间通信进行介绍&#xff0c;还对管道&#xff0c;消息队列&#xff0c;共享内存&#xff0c;信号量都…...

hadoop伪分布式集群搭建

基于hadoop 3.1.4 一、准备好需要的文件 1、hadoop-3.1.4编译完成的包 链接: https://pan.baidu.com/s/1tKLDTRcwSnAptjhKZiwAKg 提取码: ekvc 2、需要jdk环境 链接: https://pan.baidu.com/s/18JtAWbVcamd2J_oIeSVzKw 提取码: bmny 3、vmware安装包 链接: https://pan.baidu…...

Qt 中的信息输出机制:QDebug、QInfo、QWarning、QCritical 的简单介绍和用法

Qt 中的信息输出机制介绍QDebug在 Qt 中使用 qDebug输出不同类型的信息浮点数&#xff1a;使用 %!f(MISSING) 格式化符号输出浮点数布尔值&#xff1a;使用 %! (MISSING)和 %! (MISSING)格式化符号输出布尔值对象&#xff1a;使用 qPrintable() 函数输出对象的信息qInfoqWarnin…...

C++读写excel文件的的第三方库

一、比较流行的库 1. OpenXLSX 用于读取、写入、创建和修改 Microsoft Excel (.xlsx) 文件的 C 库。 2. xlnt xlnt 是一个现代 C 库&#xff0c;用于操作内存中的电子表格以及从 XLSX 文件读取/写入它们&#xff0c;如ECMA 376 第 4 版中所述。xlnt 1.0 版的首次公开发布是在 …...

【关于Linux中----多线程(一)】

文章目录认识线程创建线程线程优点和缺点创建一批线程终止线程线程的等待问题认识线程 在一个程序里的一个执行路线就叫做线程&#xff08;thread&#xff09;。更准确的定义是&#xff1a;线程是“一个进程内部的控制序列”一切进程至少都有一个执行线程线程在进程内部运行&a…...

2023年全国最新安全员精选真题及答案34

百分百题库提供安全员考试试题、建筑安全员考试预测题、建筑安全员ABC考试真题、安全员证考试题库等&#xff0c;提供在线做题刷题&#xff0c;在线模拟考试&#xff0c;助你考试轻松过关。 11.&#xff08;单选题&#xff09;物料提升机附墙架设置要符合设计要求&#xff0c;但…...

数据出境是什么意思?我国数据出境合规要求是什么?

随着经济全球化深入以及云计算等技术的发展&#xff0c;数据在全球范围跨境流动。数据跨境在促进经济增长、加速创新的同时&#xff0c;对数据主权、数据权属、个人信息保护等一系列问题逐渐浮出水面。今天我们就先来了解一下数据出境是什么意思&#xff1f;我国数据出境合规要…...

Liunx——Git工具使用

目录 1&#xff09;使用 git 命令行安装 git 2&#xff09;在 Gitee 创建仓库 创建仓库 3&#xff09;Linux克隆仓库到本地 4&#xff09;提交代码三板斧&#xff1a; 1.三板斧第一招: git add 2.三板斧第二招: git commit 3.三板斧第三招: git push 5&#xff09;所遇…...

微软语音合成工具+基于Electron + Vue + ElementPlus + Vite 构建并能将文字转换为语音 MP3

微软语音合成工具基于Electron Vue ElementPlus Vite 构建并能将文字转换为语音 MP3 资源下&#xff1a;微软语音合成工具基于ElectronVueElementPlusVite构建并能将文字转换为语音MP3资源-CSDN文库 本文将介绍如何使用微软语音合成工具和前端技术栈进行开发&#xff0c;…...

Mongodb学习笔记2

文章目录前言一、搭建项目二、开始编写java代码1. 新增2.查询3. 修改4. 删除5.根据条件查询6. 关联查询7. 索引相关总结前言 MongoTemplate 相关操作 CRUD,聚合查询等; 一、搭建项目 springboot项目创建引入mongo 依赖docker 安装好mongo数据库配置yml 链接mongo spring:dat…...

学习Tensorflow之基本操作

学习Tensorflow之基本操作Tensorflow基本操作1. 创建张量(1) 创建标量(2) 创建向量(3) 创建矩阵(4) shape属性(5) 判别张量类型(6) 列表和ndarray转张量2. 创建特殊张量(1) tf.ones与tf.ones_like(2) tf.zeros与tf.zeros_like(3) tf.fill(3) tf.random.normal(4) tf.random.uni…...

《Spring系列》第2章 解析XML获取Bean

一、基础代码 Spring加载bean实例的代码 public static void main(String[] args) throws IOException {// 1.获取资源Resource resource new ClassPathResource("bean.xml");// 2.获取BeanFactoryDefaultListableBeanFactory factory new DefaultListableBeanFa…...

小红书20230326暑假实习笔试

第一题&#xff1a;加密 小明学会了一种加密方式。他定义suc(x)为x在字母表中的后继&#xff0c;例如a的后继为b&#xff0c;b的后继为c… &#xff08;即按字母表的顺序后一个&#xff09;。特别的&#xff0c;z的后继为a。对于一个原字符串S&#xff0c;将其中每个字母x都替…...

【java】不要二、把字符串转成整数

目录 &#x1f525;一、编程题 1.不要二 2.把字符串转换成整数 &#x1f525;一、编程题 1.不要二 链接&#xff1a;不要二_牛客题霸_牛客网 (nowcoder.com) 描述&#xff1a;二货小易有一个W*H的网格盒子&#xff0c;网格的行编号为0~H-1&#xff0c;网格的列编号为0~W-1…...

数据的质量管控工作

数据的质量管控工作&#xff0c;整个工作应该围绕启动阶段制定的目标进行。适当引入一些质量管控工具可帮助我们更高效的完成工作。 第一步、数据剖析 首先应该进行已知数据问题的评估&#xff0c;这里评估的范围也应控制本轮管控的目标范围内。其次&#xff0c;通过对数据进行…...

【SpringBoot笔记29】SpringBoot集成RabbitMQ消息队列

这篇文章,主要介绍SpringBoot如何集成RabbitMQ消息队列。 目录 一、集成RabbitMQ 1.1、引入amqp依赖 1.2、添加连接信息 1.3、添加RabbitMQ配置类...

前端架构师-week2-脚手架架构设计和框架搭建

将收获什么 脚手架的实现原理 Lerna的常见用法 架构设计技巧和架构图绘制方法 主要内容 学习如何以架构师的角度思考基础架构问题 多 Package 项目管理痛点和解决方案&#xff0c;基于 Lerna 脚手架框架搭建 imooc-cli 脚手架需求分析和架构设计&#xff0c;架构设计图 附赠内…...

CMake项目实战指令详细分析

CMake是一个跨平台的自动化构建系统&#xff0c;可以用简单的语句来描述所有平台的编译过程。CMake可以输出各种各样的编译文件&#xff0c;如Makefile、VisualStudio等。 CMake主要是编写CMakeLists.txt文件&#xff0c;然后用cmake命令将CMakeLists.txt文件转化为make所需要的…...

【深度学习】——LSTM参数设置

批大小设置 LSTM的批大小可以根据训练数据集的大小和计算资源的限制来确定。一般而言&#xff0c;批大小越大&#xff0c;训练速度越快&#xff0c;但可能会导致过拟合和内存限制。批大小越小&#xff0c;训练速度越慢&#xff0c;但对于较大的数据集和内存限制较严格的情况下…...

使用Taotoken后我们如何观测与优化大模型API调用成本

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 使用Taotoken后我们如何观测与优化大模型API调用成本 1. 从黑盒到透明&#xff1a;成本观测的第一步 在接入大模型API的初期&…...

APK安装器完整指南:在Windows上直接安装安卓应用的专业解决方案

APK安装器完整指南&#xff1a;在Windows上直接安装安卓应用的专业解决方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer APK安装器是一款专为Windows系统设计的安卓…...

卡片里放图片?用 memory:// 协议才是正确打开方式

文章目录卡片图片的限制项目结构卡片 UI&#xff1a;用 memory:// 显示图片FormAbility&#xff1a;下载图片 → 写入共享内存 → 推送更新显示本地图片&#xff08;无需下载&#xff09;memory:// 协议原理关键注意事项写在最后卡片里显示图片这件事比我想象的要麻烦一点。卡片…...

3分钟搞定Windows安卓应用:APK安装器让你的电脑秒变安卓设备!

3分钟搞定Windows安卓应用&#xff1a;APK安装器让你的电脑秒变安卓设备&#xff01; 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你知道吗&#xff1f;现在无需安装…...

AI Agent Skill 从入门到精通:定义、结构、调用链路与底层原理

一篇帮你从"知道 Skill 这个词"到"能独立设计生产级 Skill"的系统教学&#xff0c;含 3 个完整实战案例。阅读提示适合谁看&#xff1a;正在做或准备做 AI Agent 开发的工程师&#xff0c;尤其是从传统后端 / 数据仓库转过来的同学看完能做什么&#xff1a…...

紧急通告:OpenAI已于2024年6月1日灰度上线ChatGPT Pay API V2.1,当前仅向Stripe白名单商户开放(附申请通道+审核时效倒计时)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;ChatGPT实时支付功能在哪里 ChatGPT 本身并不原生支持实时支付功能。OpenAI 官方发布的 ChatGPT&#xff08;包括免费版、Plus 订阅版及 Team/Enterprise 版&#xff09;定位为人工智能对话助手&#xff0c;…...

深度解析AzurLaneAutoScript:碧蓝航线自动化脚本的技术架构与应用实践

深度解析AzurLaneAutoScript&#xff1a;碧蓝航线自动化脚本的技术架构与应用实践 【免费下载链接】AzurLaneAutoScript Azur Lane bot (CN/EN/JP/TW) 碧蓝航线脚本 | 无缝委托科研&#xff0c;全自动大世界 项目地址: https://gitcode.com/gh_mirrors/az/AzurLaneAutoScript…...

LaTeX列表排版避坑指南:用enumitem包轻松解决编号重置、缩进和对齐问题

LaTeX列表排版避坑指南&#xff1a;用enumitem包轻松解决编号重置、缩进和对齐问题 在撰写学术论文、技术文档或法律条款时&#xff0c;列表结构是组织内容的重要工具。但LaTeX默认的列表环境往往让用户陷入编号混乱、缩进不一致的泥潭。本文将深入剖析这些痛点的根源&#xff…...

量子错误校正与机器学习中的辅助比特影响研究

1. 量子错误校正与量子机器学习的基础概念量子计算的核心挑战之一是量子态的脆弱性。与环境相互作用导致的退相干效应会迅速破坏量子信息&#xff0c;这使得量子错误校正&#xff08;QEC&#xff09;成为实现实用量子计算的关键技术。在传统量子计算中&#xff0c;QEC通过冗余编…...

3分钟搞定网易云音乐NCM解密:ncmdump工具让你的音乐随处播放

3分钟搞定网易云音乐NCM解密&#xff1a;ncmdump工具让你的音乐随处播放 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否曾为网易云音乐下载的歌曲只能在特定客户端播放而烦恼&#xff1f;当你想要在车载音响、智能音箱或其他…...