[应用相关] 使用STM32CubeMX创建TouchGFX应用程序(一)

[复制链接]
2974|32
 楼主| comparison 发表于 2020-6-23 19:31 | 显示全部楼层 |阅读模式
此篇**属于中等难度,需要具有TouchGFX开发的基础知识,请参见:
1)使用TouchGFX开发STM32界面应用之入门篇
2)使用TouchGFX开发STM32界面应用之入门篇(二)-- 按钮与消息响应例程
3)TouchGFX工程中hex目标文件的烧写方法(三)使用IAR

之前介绍了TouchGFX的一些基础知识,也动手练习了TouchGFX Designer 自带的一些demo程序,但是demo毕竟不等同于实际项目,对于一个GUI实际开发项目,我们应该如何入手呢?ST MCU开发,首先想到的一定是强大的CubeMX配置工具吧?!没错,使用STM32CubeMX来辅助配置一个GUI应用项目,可以起到事半功倍的效果。只是,配置一个带显示设备(一般同时还配有触屏)的嵌入式系统,同时还要跟TouchGFX交互,其过程是十分复杂的 ---- 且听我一一道来。



作者:海东青电子
链接:https://www.jianshu.com/p/c1c17e02f779
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 楼主| comparison 发表于 2020-6-23 19:31 | 显示全部楼层
仍然以F769I-DISCO开发板为例。在TouchGFX Designer 4.10版本中,有2种769I板子的demo,我们选择“2.0”版本的,因为这个版本的会自动生成CubeMX的配置工程。新建一个TouchGFX 工程:
51715ef1e81f6cd29.png
 楼主| comparison 发表于 2020-6-23 19:32 | 显示全部楼层
界面上,放置一个800*480的背景图和一个按钮(按钮的作用是测试触屏驱动是否ok):
887715ef1e8393a535.png
 楼主| comparison 发表于 2020-6-23 19:33 | 显示全部楼层
保存之后,运行模拟器,应该能看到背景图、按钮;按下按钮、应该能看到按钮变化。烧写到目标板上验证(这个步骤是必须的,之后的测试结果都将以目标板实际运行情况为准):
134975ef1e8610d1b7.png
 楼主| comparison 发表于 2020-6-23 19:34 | 显示全部楼层
在目标板上按下按钮,应该能看到按钮的反应(按钮颜色有变化,仅此而已)。
 楼主| comparison 发表于 2020-6-23 19:34 | 显示全部楼层
查看 Designer 自动生成的代码,在工程主目录下,有一个 ioc 文件:
129615ef1e8b6e0a8a.png
 楼主| comparison 发表于 2020-6-23 19:35 | 显示全部楼层
先说明一下,这里使用的STM32CubeMX是5.1.0版本:
296215ef1e8e8dae95.png
 楼主| comparison 发表于 2020-6-23 19:35 | 显示全部楼层
双击图四中的 ioc 文件,进入STM32CubeMX,如果弹出一个对话框:
531335ef1e906a2b96.png
 楼主| comparison 发表于 2020-6-23 19:36 | 显示全部楼层
要求升级到CubeMX的新版本,在上图中选择 Migrate 。进入STM32CubeMX后,留意一下 TouchGFX 可执行文件的磁盘位置:
579125ef1e926d9674.png
 楼主| comparison 发表于 2020-6-23 19:38 | 显示全部楼层
如果安装 TouchGFX 时用的不是默认C盘位置,需要在上图中按实际安装位置调整一下。 检查 Project Manager ,默认参数即可:

55185ef1e99eedda3.png
 楼主| comparison 发表于 2020-6-23 19:39 | 显示全部楼层
生成代码,可能会弹出一个询问对话框:
638995ef1e9d377556.png
 楼主| comparison 发表于 2020-6-23 19:40 | 显示全部楼层
这是因为CubeMX中有关 TouchGFX 模拟器的一些参数设置不正确,我们后续的工作似乎跟这个模拟器的关系不大,所以此处先忽略它,选择 Yes,生成IAR的工程代码。
 楼主| comparison 发表于 2020-6-23 19:41 | 显示全部楼层
然后进入到IAR,编译、烧写,目标板运行效果如下:
684545ef1ea462c6de.png
 楼主| comparison 发表于 2020-6-23 19:41 | 显示全部楼层
这不是我们期望看到的界面呀?! CubeMx配错了什么吗? 别急,仔细看看,有部分图像是正确的;而且,按钮也在,只是方向上转了90°,对吧?嗯,是显示屏方向设置问题 ---- 希望横屏显示,结果却变成竖屏显示了!
 楼主| comparison 发表于 2020-6-23 19:42 | 显示全部楼层
这个问题容易解决,找到相关代码修改即可:
694385ef1ea8453497.png
 楼主| comparison 发表于 2020-6-23 19:42 | 显示全部楼层
在TouchGFX框架中,程序启动时需要先初始化各个硬件设备,其中包含对显示设备的初始化,会调用 MX_DSI_Init() 函数,其中对LCD的显示方向做了设置,CubeMX默认的设置是“纵向显示”,我们把它改成横屏显示,如上图所示,再次编译,烧写,目标板运行正常了:

885365ef1eab39e86e.png
 楼主| comparison 发表于 2020-6-23 19:43 | 显示全部楼层
按下按钮,能看到按钮有反应,说明触屏驱动也是ok的。
 楼主| comparison 发表于 2020-6-23 19:43 | 显示全部楼层
最后一步:添加按钮控制LED亮灭的功能。F769I-DISCO开发板上有2个用户LED,控制管脚为PJ13、PJ5:
606075ef1eaebe45ab.png

338165ef1eaf2c7335.png
 楼主| comparison 发表于 2020-6-23 19:44 | 显示全部楼层
回到CubeMX,将 PJ13、PJ5配置为输出口,起始电平为高电平:
135785ef1eb110a298.png
alternate 发表于 2020-6-23 19:46 | 显示全部楼层
再次生成IAR的代码,图十二中的代码会被CubeMX重写,所以需要重复图十二的步骤、设置横屏显示。然后在IAR中编译,烧写到目标板:
806315ef1eb94b148d.png
可以看到,板子运行后,有2个LED灯点亮了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

417

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部