打印
[应用相关]

使用STM32CubeMX创建TouchGFX应用程序(一)

[复制链接]
2418|32
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
此篇**属于中等难度,需要具有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 工程:

使用特权

评论回复
板凳
comparison|  楼主 | 2020-6-23 19:32 | 只看该作者
界面上,放置一个800*480的背景图和一个按钮(按钮的作用是测试触屏驱动是否ok):

使用特权

评论回复
地板
comparison|  楼主 | 2020-6-23 19:33 | 只看该作者
保存之后,运行模拟器,应该能看到背景图、按钮;按下按钮、应该能看到按钮变化。烧写到目标板上验证(这个步骤是必须的,之后的测试结果都将以目标板实际运行情况为准):

使用特权

评论回复
5
comparison|  楼主 | 2020-6-23 19:34 | 只看该作者
在目标板上按下按钮,应该能看到按钮的反应(按钮颜色有变化,仅此而已)。

使用特权

评论回复
6
comparison|  楼主 | 2020-6-23 19:34 | 只看该作者
查看 Designer 自动生成的代码,在工程主目录下,有一个 ioc 文件:

使用特权

评论回复
7
comparison|  楼主 | 2020-6-23 19:35 | 只看该作者
先说明一下,这里使用的STM32CubeMX是5.1.0版本:

使用特权

评论回复
8
comparison|  楼主 | 2020-6-23 19:35 | 只看该作者
双击图四中的 ioc 文件,进入STM32CubeMX,如果弹出一个对话框:

使用特权

评论回复
9
comparison|  楼主 | 2020-6-23 19:36 | 只看该作者
要求升级到CubeMX的新版本,在上图中选择 Migrate 。进入STM32CubeMX后,留意一下 TouchGFX 可执行文件的磁盘位置:

使用特权

评论回复
10
comparison|  楼主 | 2020-6-23 19:38 | 只看该作者
如果安装 TouchGFX 时用的不是默认C盘位置,需要在上图中按实际安装位置调整一下。 检查 Project Manager ,默认参数即可:

使用特权

评论回复
11
comparison|  楼主 | 2020-6-23 19:39 | 只看该作者
生成代码,可能会弹出一个询问对话框:

使用特权

评论回复
12
comparison|  楼主 | 2020-6-23 19:40 | 只看该作者
这是因为CubeMX中有关 TouchGFX 模拟器的一些参数设置不正确,我们后续的工作似乎跟这个模拟器的关系不大,所以此处先忽略它,选择 Yes,生成IAR的工程代码。

使用特权

评论回复
13
comparison|  楼主 | 2020-6-23 19:41 | 只看该作者
然后进入到IAR,编译、烧写,目标板运行效果如下:

使用特权

评论回复
14
comparison|  楼主 | 2020-6-23 19:41 | 只看该作者
这不是我们期望看到的界面呀?! CubeMx配错了什么吗? 别急,仔细看看,有部分图像是正确的;而且,按钮也在,只是方向上转了90°,对吧?嗯,是显示屏方向设置问题 ---- 希望横屏显示,结果却变成竖屏显示了!

使用特权

评论回复
15
comparison|  楼主 | 2020-6-23 19:42 | 只看该作者
这个问题容易解决,找到相关代码修改即可:

使用特权

评论回复
16
comparison|  楼主 | 2020-6-23 19:42 | 只看该作者
在TouchGFX框架中,程序启动时需要先初始化各个硬件设备,其中包含对显示设备的初始化,会调用 MX_DSI_Init() 函数,其中对LCD的显示方向做了设置,CubeMX默认的设置是“纵向显示”,我们把它改成横屏显示,如上图所示,再次编译,烧写,目标板运行正常了:

使用特权

评论回复
17
comparison|  楼主 | 2020-6-23 19:43 | 只看该作者
按下按钮,能看到按钮有反应,说明触屏驱动也是ok的。

使用特权

评论回复
18
comparison|  楼主 | 2020-6-23 19:43 | 只看该作者
最后一步:添加按钮控制LED亮灭的功能。F769I-DISCO开发板上有2个用户LED,控制管脚为PJ13、PJ5:


使用特权

评论回复
19
comparison|  楼主 | 2020-6-23 19:44 | 只看该作者
回到CubeMX,将 PJ13、PJ5配置为输出口,起始电平为高电平:

使用特权

评论回复
20
alternate| | 2020-6-23 19:46 | 只看该作者
再次生成IAR的代码,图十二中的代码会被CubeMX重写,所以需要重复图十二的步骤、设置横屏显示。然后在IAR中编译,烧写到目标板:

可以看到,板子运行后,有2个LED灯点亮了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

417

帖子

0

粉丝