TouchGFX界面开发 | 使用STM32CubeMX移植TouchGFX

news2024/11/18 21:34:48

本文基于STM32F429IGT6 + RGB (800 * 480)硬件平台,详细记录了如何利用STM32CubeMX将TouchGFX移植到STM32F429IGT6,并驱动RGB屏幕。相关软件的安装,可参考TouchGFX软件安装一文

TouchGFX的应用框架如下图所示:
在这里插入图片描述

一、STM32CubeMX配置

STM32CubeMX主要用来配置上面所示的应用框架图中的硬件抽象层和中间件层

  • RCC系统时钟:高速外部时钟(HSE)配置为外部晶振

在这里插入图片描述

  • 由于要使用FreeRTOS操作系统,因此建议将HAL库的Timebase Source从SysTick改为其他定时器,选好定时器后,系统会自动配置TIM,此处设置为TIM7

在这里插入图片描述

  • FMC设置:配置外部SDRAM来作为RGBLCD的显存,根据自已的硬件进行参数以及引脚配置

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

  • DMA2D设置:激活DMA2D,配置颜色模式为RGB565,并开启DMA2D中断

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

  • LTDC参数设置:根据使用的屏幕参数配置LTDC参数

在这里插入图片描述

  • LTDC层设置:此处选择使用1层,帧缓存地址设置为SDRAM的首地址0XC0000000

在这里插入图片描述

  • LTDC GPIO引脚设置: 根据具体开发板的引脚连接,配置GPIO,注意要讲输出速度设置为“Very High”;并开启LTDC中断

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

  • 时钟树配置:像素时钟大小为1056 x 705 x 60 / 1024 / 1024 = 42M,像素时钟最大值为42M,此处设置为33M(1056为总宽,705为总高)

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

  • 背光引脚设置:本文开发板使用PB5作为背光引脚,设置为推挽输出

在这里插入图片描述

  • 激活CRC:TouchGFX需要开启CRC功能

在这里插入图片描述

  • 激活FreeRTOS系统:heap大小设置为32768字节,其余默认配置;并添加一个TouchGFX任务

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

  • 选择Touchgfx组件包

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

  • TouchGFX参数设置:选择双缓存,RGB565,开启DMA2D加速

在这里插入图片描述

  • 生成工程代码:最小堆栈大小设置为0x800

在这里插入图片描述

STM32CubeMX生成工程后,先不用打开Keil工程。若此时编译Keil工程,会出现大量报错

二、TouchGFX Designer界面设计

Keil工程生成后,还需要执行Touch Designer来设计UI部分,完善工程

  • 生成工程后,在TouchGFX目录下有个ApplicationTemplate.touchgfx.part,点击即可打开TouchGFX Designer

在这里插入图片描述

  • 拖放一些控件后,点击Generate Code生成代码后,TouchGFX相关的代码就会自动添加进工程中

在这里插入图片描述

三、MKD-ARM Keil添加代码

  • 添加SDRAM驱动源文件和头文件

在这里插入图片描述

  • 在fmc.c文件MX_FMC_Init()函数中添加SDRAM初始化函数,将外存芯片驱动起来

在这里插入图片描述

  • 在touchgfxhal.cpp文件中点亮屏幕背光

在这里插入图片描述

  • 添加相应任务中,添加TouchGFX处理函数

在这里插入图片描述

四、下载测试

编译无误后,下载到开发板中

在这里插入图片描述
如TouchGFX移植成功,开发板屏幕会显示TouchGFX Designer中设计好的界面

在这里插入图片描述

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

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

相关文章

JoJo‘s Incredible Adventures

题目: 题意解析: 这个题目是要求找出输入的字符串,,字符串的循环移位s由k右边是字符串Sn−k1...Sn,S1,S2...Sn−k。直到所有的字符,都循坏出现在字符串的开头,然后输入1形成的长方形…

MySQL之Adaptive Hash Index详解

前言 本文已收录在MySQL性能优化原理实战专栏,点击此处浏览更多优质内容。 目录 一、MySQL InnoDB是否支持哈希索引?1.1 InnoDB不支持Hash Index1.2 InnoDB支持Hash Index 二、Adaptive Hash Index的概念三、涉及Adaptive Hash Index的参数3.1 innodb_ad…

接口优化的策略

1.批处理 批量思想:批量操作数据库,这个很好理解,我们在循环插入场景的接口中,可以在批处理执行完成后一次性插入或更新数据库,避免多次IO。 //批量入库 batchInsert();List的安全操作有以下几种方式: 使…

DAY 50 LVS负载均衡器 NAT模式

群集概述 群集的含义 Cluster,集群、群集由多台主机构成,但对外只表现为一一个整体,只提供一-个访问入口(域名或IP地址), 相当于一台大型计算机。 为什么使用群集 互联网应用中,随着站点对硬件性能、响应速度、服务…

Python学习日记(2)

有关数字类型,字符串,函数 目录 有关数字类型,字符串,函数 数字 字符串 索引操作 切片操作 单个字符编码 运算符 还有一些常用的内置函数 Python输入函数 输出函数print()语法 python的函数也能给默认值 Python是个脚…

C++系列一: C++简介

C入门简介 1. C语言的特点2. C编译器3. 第一个 C 程序4. 总结(手稿版) C 是一种高级编程语言,是C语言的扩展和改进版本,由Bjarne Stroustrup于1983年在贝尔实验室为了支持C语言中的面向对象编程而创建。C 既能够进行底层的系统编程…

全注解下的SpringIoc 续4-条件装配bean

Spring Boot默认启动时会加载bean,如果加载失败,则应用就会启动失败。但是部分场景下,我们希望某个bean只有满足一定的条件下,才允许Spring Boot加载,所以,这里就需要使用Conditional注解来协助我们达到这样…

二叉搜索树(BST)详解

文章目录 性质二叉搜索树的遍历遍历伪代码实现 二叉搜索树的查找伪代码实现 二叉搜索树最大元素伪代码实现 二叉搜索树最小元素伪代码实现 二叉搜索树的插入伪代码实现 二叉搜索树的删除删除叶子节点(对应上面第一种情况):删除度为1的节点&am…

机械硬盘(HDD)与固态硬盘(SSD)

目录 机械硬盘(HDD) 最小组成单元是扇区 硬盘结构 硬盘工作原理 硬盘上的数据组织 硬盘指标 影响性能的因素 固态硬盘(SSD) 最小存储单元是Cell SSD的特点 SSD架构 NAND Flash 闪存介质 地址映射管理 FTL闪存转换层 机械硬盘&…

Python之模块和包(九)

1、模块 1、模块概述 模块是一个包含了定义的函数和变量等的文件。模块可以被程序引入,以使用该模块中的函数等功能。通俗讲:模块就好比是工具包,要想使用这个工具包中的工具(就好比函数),就需要导入这个模块。 2、import 在P…

Redis分布式锁原理之实现秒杀抢优惠卷业务

Redis分布式锁原理之实现秒杀抢优惠卷业务 1. 实现秒杀下单2. 库存超卖问题分析2.1 乐观锁解决超卖问题 3. 优惠券秒杀-一人一单3.1 集群环境下的并发问题 4、分布式锁4.1 基本原理和实现方式对比4.2 Redis分布式锁的实现核心思路4.3 实现分布式锁版本一4.4 Redis分布式锁误删情…

【Java入门合集】第三章面向对象编程(上)

【Java入门合集】第三章面向对象编程(上) 博主:命运之光 专栏:JAVA入门 理解面向对象三大主要特征; 掌握类与对象的区别与使用; 掌握类中构造方法以及构造方法重载的概念及使用; 掌握包的定义、…

国民技术N32G430开发笔记(14)-IAP升级 usart2接收数据

IAP升级 Usart2接收数据 1、之前有一节我们将PA6 PA7复用成了usart2的功能,这一节我们用usart2接收来自树莓派的升级请求,然后完成N32G430的Iap升级。 2、接线 PA9 PA10 接usb转串口模块A,A模块插入电脑。 PA6 PA7 接usb转串口模块B&#xf…

【移动端网页布局】流式布局案例 ⑥ ( 多排按钮导航栏 | 设置浮动及宽度 | 设置图片样式 | 设置文本 )

文章目录 一、多排按钮导航栏样式及核心要点1、实现效果2、总体布局设计3、设置浮动及宽度4、设置图片样式5、设置文本 二、完整代码实例1、HTML 标签结构2、CSS 样式3、展示效果 一、多排按钮导航栏样式及核心要点 1、实现效果 要实现下面的导航栏效果 ; 2、总体布局设计 该导…

计算机网络笔记:DNS域名解析过程

基本概念 DNS是域名系统(Domain Name System)的缩写,也是TCP/IP网络中的一个协议。在Internet上域名与IP地址之间是一一对应的,域名虽然便于人们记忆,但计算机之间只能互相认识IP地址,域名和IP地址之间的转…

基于探路者算法的极限学习机(ELM)回归预测-附代码

基于探路者算法的极限学习机(ELM)回归预测 文章目录 基于探路者算法的极限学习机(ELM)回归预测1.极限学习机原理概述2.ELM学习算法3.回归问题数据处理4.基于探路者算法优化的ELM5.测试结果6.参考文献7.Matlab代码 摘要:本文利用探路者算法对极限学习机进行优化&…

算法 DAY45 动态规划07 70. 爬楼梯 322. 零钱兑换 279. 完全平方数 139. 单词拆分 多重背包

70. 爬楼梯 和377. 组合总和 Ⅳ (opens new window)基本就是一道题了。本题代码不长&#xff0c;题目也很普通&#xff0c;但稍稍一进阶就可以考察完全背包 class Solution { public:int climbStairs(int n) {vector<int> nums {1,2};vector<int> dp(n1,0);dp[0…

while语句和until语句顺便带点小实验

while语句和until语句 一、while用法二、Until循环语句三、趣味小实验猜价格的游戏&#xff08;价格是随机数&#xff09;写一个计算器脚本闲来无事去购物 一、while用法 for循环语句非常适用于列表对象无规律&#xff0c;且列表来源以固定&#xff08;如某个列表文件&#xf…

Android Studio开发图书管理系统APP

Android Studio开发项目图书管理系统项目视频展示&#xff1a; 点击进入图书管理系统项目视频 引 言 现在是一个信息高度发达的时代&#xff0c;伴随着科技的进步&#xff0c;文化的汲取&#xff0c;人们对于图书信息的了解与掌握也达到了一定的高度。尤其是学生对于知识的渴…

word构建基块:快速插入重复内容的高级剪切板

本文参考自 word录入技巧&#xff1a;如何用自动图文集快速插入重复内容 - 知乎 介绍 构建基块&#xff0c;它就是和剪切板一样&#xff0c;点一下就粘贴一份新的&#xff0c;用于解决大量重复内容的复制粘贴 构建基块包括自动图文集和快速表格&#xff0c;实际上都是构建基块…