touchgfx程序_TouchGFX使用教程_weixin_39882623的博客-程序员ITS304

技术标签: touchgfx程序  

TouchGFX使用教程(一)

前言

TouchGFX背景

TouchGFX工程的结构

后记

前言

大家好,本人最近在做项目开发,项目中使用TouchGFX工具进行开发界面,同时使用stm32系列的芯片操作系统使用的是FreeRTOS,之前没有接触过带有界面开发的stm32,也同样没有接触过TouchGFX界面开发工具,所以在开发过程中也遇见过一些坑,对于开发TouchGFX+stm32+stm32cubeMX有一些体会,给大家展示出来希望有一些作用吧。

TouchGFX背景

TouchGFX作为X-Cube-TouchGFX的一个X-Cube软件包提供。

有了这些,您就可以为基于STM32的硬件完整地实现GUI应用程序。TouchGFX包括三个主要部分-两个工具和一个框架。

1、TouchGFX Designer:TouchGFX中易于使用的GUI构建器,可让您创建TouchGFX应用程序的视觉外观。

2、TouchGFX Generator:一个CubeMX插件,用户可以在其中为基于STM32的硬件配置并生成自定义的TouchGFX抽象层(AL)。

3、TouchGFX引擎:驱动UI应用程序的TouchGFX C ++框架。处理屏幕更新,用户事件和计时。先进的TouchGFX技术针对STM32微控制器进行了优化,以最小的CPU负载和内存使用量为您提供最佳性能。

在这里TouchGFX的安装和入门就不给大家介绍了,从网上任意地方都可以找到。

TouchGFX工程的结构

在上图中需要注意的是COLOR DEPTH 选项,该部分定义了色彩的位深,所以创建工程时需要根据需要修改该部分的值,个人建议最好时24 bit。其次,如果需要使用官方demo做演示,点击Blank UI框进行选择demo,但是注意的是不知道是网络原因还是服务器本身原因,demo下载不太正常,有时可以正常下载有时却不行,越是大的demo越容易出现问题。当然使用st的官方评测版可在simulator侧直接选择出来。

创建好工程后点击Generate Code按钮可以生成相应的代码,生成的代码可以通过多种方式打开:keil、IAR、STM32CUBEIDE、VS,如果只是做界面逻辑开发的话可以选择VS的IDE,因为VS的IDE可以抽象出UI部分的逻辑,层次感更清晰解耦更彻底。如果需要测试一下界面显示及逻辑则可以用Simulator模式显示。

在TouchGFX界面上点击browse Code按钮则弹出文件夹,有心的朋友可以看一下这些文件夹中放的是些什么,如果创建的是带有硬件平台的上一层的文件夹下还有写驱动及协议层的东西。

选择simulator文件夹通过VS打开工程,则可以看见TouchGFX界面程序的结构。

现在具体的说一下工程的结构,在工程中包括gui文件夹和generated文件夹,重点说下这两个文件夹下的内容。generated文件夹下放的都是通过TouchGFX生成的文件,如果用VS打开的话,其中的文件是不能更改的,但是用ST的IDE或者IAR之类的工具是可以更改的,本人不建议手动更改其中的内容,因为再次通过TouchGFX生成代码是其中手动更改的内容会被删掉。

在说一下gui文件夹下的内容吧,在gui文件夹下放着的是每个界面相应产生的子文件夹,同时还包括model文件夹及common、containers、这三个文件夹,model文件夹的作用是TouchGFX特有的结构模式MVP其中的一环,其中的model文件可以通过后台更新前台的数据,也可以通过前台向后台刷新数据。具体后面会给大家做细致的讲解。

common文件夹中放置的是通用的类文件,如果需要些自定义的算法处理则可以将其放入该文件内。

containers文件夹上面的图片中没有,但是如果通过TouchGFX创建自定义控件时则会创建该文件。

具体如何使用后续会给大家做细致的讲解。

除去上述的文件夹还有由于界面创建产生的文件夹该种文件夹以_screen结尾,此种文件夹中包含两种文件,第一种是包含View的文件,该文件是用于界面的逻辑事件开发,在文件中包含着事件的处理函数。

第二种是包含Presenter的文件,该文件也是MVP模式中的一类文件,在给大家讲述MVP章节是会给具体的介绍该文件的内容。

后记

由于是第一章,主要给大家介绍了TouchGFX的文件结构,方便大家梳理工程逻辑,同时,最重要的是在开发过程中慢慢的体会工程结构。我会把我参考的文章放在下方的链接上,有需要的可以参照。也希望大家有意见和建议的话,在下方留言,本着共同学习,共同发展的目的,之后会细节的给大家介绍一些个人的理解。

[1]: http://www.waveshare.net/study/portal.php?mod=list&catid=63

[2]: https://github.com/draupnergraphics/touchgfx-widgets

[3]: http://www.waveshare.net/study/article-629-1.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39882623/article/details/111551226

智能推荐

三相逆变器双pi控制器参数如何调节_单相逆变电源的电压双闭环矢量控制新方法,解决传统方案的不足..._weixin_39989215的博客-程序员ITS304

东北大学信息科学与工程学院、潞安集团司马煤业有限公司的研究人员宋崇辉、徐涛、王振环、刁乃哲、陈宏志,在2019年第16期《电工技术学报》上撰文(论文标题为“单相逆变电源电压双闭环矢量控制方法”),针对单相逆变电源提出一种电压双闭环矢量控制方法。该方法将单相电路拓展成三相电路,由逆变电源输出电压延拓出另两相电压,将其合成电压矢量,电压外环将电压矢量在同步旋转坐标系下进行闭环控制,实现输出电压在稳态下...

20条编程经验_小俭同学的博客-程序员ITS304

1. 估算解决问题所需要的时间。不要怕,承认吧!我曾见过一些程序员为了解决一个特殊问题而坐在显示器前面8小时。为自己定一个时间限制吧,1小时、30分钟或甚至15分钟。如果在这期间你不能解决问题,那就去寻求帮助,或到网上找答案,而不是尝试去做“超级堆码员”。2. 编程语言是一种语言,只是一种语言。随着时光推移,只要你理解了一种语言的原理,你会发现各种语言之间的相似之处 。你所选择的语言,你应该...

Qt基础知识——入门学习笔记_JILIN.的博客-程序员ITS304

1 Qt概述1.1 什么是QtQt是一个跨平台的C++图形用户界面应用程序框架。它为应用程序开发者提供建立艺术级图形界面所需的所有功能。它是完全面向对象的,很容易扩展,并且允许真正的组件编程。1.2 Qt的优点跨平台,几乎支持所有平台接口简单,容易上手,学习Qt框架对学习其它框架有参考意义一定程度上简化了内存回收机制开放效率高,能够快速的构建应用程序有很好的社区氛围,市场份额在缓慢上升可以进行嵌入式开发1.3 成功案例Linux 桌面环境 KDEWPS Office 办公软件

跟着王进老师学开发Python篇第三季:Tkinter GUI项目实战篇-王进-专题视频课程_iLync讲师的博客-程序员ITS304

本季课程为Tkinter GUI项目实战:学生信息管理系统, 内容包含:项目总体介绍、登陆界面GUI布局、登陆功能实现、主窗体GUI布局和功能实现、学生信息查询、明细界面GUI布局、使用三种状态加载明细窗体、学生信息的增删改、修改登陆密码、GUI程序的打包、后期功能扩展等内容,在本季课程中,对前面两季的课程做了综合应用、基础得到了巩固。同样对面向对象的概念有了初步的理解和应用。...

Vue项目中解决axios请求跨域问题(第三方接口)_TVM的博客-程序员ITS304_vue怎么调用第三方接口

先引入axios在命令行输入 npm i axios 然后再引入 import axios from 'axios' 这里不再赘述首先明确自己的api接口,比如我的是  http://testapi.tvm.com.cn/some/getsome先去config/index.js中找到proxyTable//如果你用vue-cli初始化一个项目,一般proxyTable中...

Windows装机必备软件_饮一盏岁月留香的博客-程序员ITS304_装机必备软件

Windows装机必备软件1.腾讯电脑管家——软件管理2.娱乐休闲3. 办公软件4. 科学计算软件5. 双系统工具6.办公及笔记1.腾讯电脑管家——软件管理主要用于下载及管理软件,当然也有一定杀毒功能2.娱乐休闲浏览器——google微信TIM网易云音乐百度网盘PotPlayer3. 办公软件OfficeVisioPhotoshopXmindEverythingAd...

随便推点

ofbiz项目编译及idea启动_东泽312的博客-程序员ITS304_ofbiz启动

idea2021版启动ofbiz项目1 进入项目根目录2 通过ant清理项目3 通过ant编译项目4 需要确保编译成功5 idea引入ofibz项目记录下来idea是如何导入和启动ofbiz项目的1 进入项目根目录2 通过ant清理项目3 通过ant编译项目4 需要确保编译成功5 idea引入ofibz项目确认下根路径没有问题几个要修改的地方添加vm选项-server -XX:PermSize=512M -XX:MaxPermSize=1024m编译完成后

linux 内存清理/释放命令_程序员面试经验分享的博客-程序员ITS304_linux内存清理命令

在Linux系统下,我们一般不需要去释放内存,因为系统已经将内存管理的很好。但是凡事也有例外,有的时候内存会被缓存占用掉,导致系统使用SWAP空间影响性能,此时就需要执行释放内存(清理缓存)的操作了。Linux系统的缓存机制是相当先进的,他会针对dentry(用于VFS,加速文件路径名到inode的转换)、Buffer Cache(针对磁盘块的读写)和Page Cache(针对文件inode的...

MDC机床监控与数据采集系统 数控机床采集解决方案 2020_杭州乐芯科技的博客-程序员ITS304_机床数据采集系统

MDC机床监控与数据采集系统 (国内自主知识产权产品)MDC是一套实时的机床数据采集系统,是领先的机床监控与数据采集系统。MDC 提供强大的机床数据实时采集功能,可以显示所有机床的实时状态以及生产完成情况。MDC可提供强大的数据分析能力,可以给您提供机床利用率、机床故障分布等上百种统计图表,可准确地分析出各种生产瓶颈原因、预测机床故障趋势等。...

QT的基础知识总结_黑企鹅的博客-程序员ITS304

QWidet类继承自QObject类和QPaintDecice类。— QOBject是所有支持QT对象模型的的基类— QPaintDevice是QT中所有可绘制组件的基类Qwidget是所有用户组件的父类Qwidget能够回执自己和处理用户的输入Qwidget是所有窗口组件的抽象Qt中的每一个窗口都是一个QWidgetQwidget类对象常作为父组件或顶级组件使

java drag_【java】 分类栏的滑动drag遇到的问题_abduhader的博客-程序员ITS304

滑动分类,使用drag方法。遇到的问题:滑动的代码段能执行成功,但是实际手机上是没有执行滑动操作的。drag其他地方又能生效,比如主页的标签滑动。尝试的办法:1、使用uirecorder录制工具尝试滑动标签,提示操作成功,但是没有执行滑动操作。2、以为是位置没有写对,用app-inspector检查了位置,在代码运行后的命令行里也检查过对应的位置,确定是没有问题的。3、macaca-client-...

19Go语言——包和包管理工具_读不懂的答案的博客-程序员ITS304

包和包管理工具文章目录包和包管理工具1、包简介1.1 工作空间1.2 源文件1.3 包命名和声明1.4 main 包2、导包2.1 两种方式2.2 包的别名2.3 简洁模式2.4非导入模式(匿名导入)2.5 导包的路径2.6 远程导入3、初始化 init4、文档4.1 生成文档规范4.2 给文档添加示例函数5、包管理工具5.1 依赖管理快速了解5.2 Vendor 机制引入5.2.1 官方dep...