当前位置: 首页 > 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函数

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

http://www.lryc.cn/news/44674.html

相关文章:

  • Linux--进程间通信
  • hadoop伪分布式集群搭建
  • Qt 中的信息输出机制:QDebug、QInfo、QWarning、QCritical 的简单介绍和用法
  • C++读写excel文件的的第三方库
  • 【关于Linux中----多线程(一)】
  • 2023年全国最新安全员精选真题及答案34
  • 数据出境是什么意思?我国数据出境合规要求是什么?
  • Liunx——Git工具使用
  • 微软语音合成工具+基于Electron + Vue + ElementPlus + Vite 构建并能将文字转换为语音 MP3
  • Mongodb学习笔记2
  • 学习Tensorflow之基本操作
  • 《Spring系列》第2章 解析XML获取Bean
  • 小红书20230326暑假实习笔试
  • 【java】不要二、把字符串转成整数
  • 数据的质量管控工作
  • 【SpringBoot笔记29】SpringBoot集成RabbitMQ消息队列
  • 前端架构师-week2-脚手架架构设计和框架搭建
  • CMake项目实战指令详细分析
  • 【深度学习】——LSTM参数设置
  • 计算机网络高频60问 背完差不多了!!
  • 路由策略小实验
  • C语言realloc背后的内存管理
  • GPT可以被放任的在问答区应用吗?
  • 限制网络接口的一些简介(一)
  • ChatGPT如何批量撰写最新的热点自媒体文章
  • GPT4和ChatGPT的区别,太让人震撼
  • redis实战---分布式锁--单机篇
  • Java正则表达式
  • MySQL数据库之——高级[进阶]SQL语句(二)正则表达式和存储过程
  • Python基于周立功盒子的二次开发的准备工作