前言
touchgfx是一款嵌入式GUI中间件,2018年秋被意法半导体收购,官方文档全面,且有专用的GUI设计软件,适合用于STM32平台上GUI界面的开发。本文是记录基于RT-Thread推出的ART-PI,stm32h750开发板,对touchgfx进行移植和初步使用。
前期准备
软件准备
- RT-Thread Studio:一站式的 RT-Thread 开发工具,通过简单易用的图形化配置系统以及丰富的软件包和组件资源,让物联网开发变得简单和高效。官网链接
- TouchGFX Designer:TouchGFX 的GUI设计工具 官网链接
硬件准备
- RT-Thread 推出的ART-PI STM32H750开发板
- 正点原子 800*480 4.3寸 RGBLCD屏,搭载GT9147触摸芯片
配置步骤
下载SDK
在RT-Thread Studio的SDK管理器中下载ART-PI的SDK
新建工程
基于开发板建立模板工程
打开touchgfx库
art-pi官方已经集成了touchgfx的库,如果是其他开发板,需要在软件包库里面找touchgfx的软件包
打开DMA2D和CRC外设
DMA2D是stm32上的硬件图形加速器,详细内容参考 参考博客
配置c++编译规则
根据官方文档给出的要求配置c++编译规则 文档链接
清空项目并重新编译
重新编译并且烧写程序进开发板,这时发现已经有示例界面出现了,但是还没有触摸功能,下一步就是打开触摸功能。
使能触摸芯片
添加gt9147触摸芯片软件包,使能IIC协议
编译并下载
正常来说这一步触摸功能就已经OK了,但是我的这个显示屏还是有问题,通过打开调试终端发现,程序hard fault.说明是配置gt9147的过程中出了问题,终端显示point_num=10,但是通过查阅gt9147的芯片手册发现gt9147最多5点触控,应该是这里出了问题。
最后找到了touchgfx查询触摸坐标的接口,发现之前的point_num=10传给了rt_device_read去读gt9147,但是最多只能读5个点,导致报错。这个地方需要改过来。后面还发现触摸坐标是反的,于是把xy坐标计算的地方也要相应的改过来。
下图是修改之后的代码,修改之后重新编译下载,没有报错,触摸功能正常使用,终端正常显示。
对不同屏幕的适配
如果屏幕分辨率和色深不一样的话需要在这三个文件中进行更改。
GUI设计
- 安装好TouchGFX Designer后,打开art_pi.touchgfx
- 添加一个文本框输入helloworld,点击RUN Simulator运行仿真(需要安装VS2013以上版本)
下图是仿真界面
Generate Code生成代码,并在工程中更新软件包(重要),因为Generate Code生成的是基于freetos的代码,更新软件包换成适配rtt的。
编译下载观察现象
界面修改成功,为进一步的界面设计和修改奠定基础。