[转载] 使用STM32CubeMX创建TouchGFX应用程序(二)
1362 查看
5 回复
 楼主 | 发布于 2019-10-12 | 只看楼主
分享到:

(说明:利用 TouchGFX Designer 生成的 ioc 文件对TouchGFX项目进行配置的方法,请见《使用STM32CubeMX创建TouchGFX应用程序(一)》

本文将讲述如何在STM32CubeMX中配置TouchGFX,目标板为STM32F769I-DISCO,今天是2019年5月27日,当前用到的几个软件的版本是:

STM32CubeMX,V5.1.0版本。

TouchGFX Designer,V4.1.0版本。

这里强调软件版本,是因为目前的版本在配置操作过程中,并不能如在ST中文论坛等处所看到的配置指导文件所述的那样能成功完成配置,下文将描述出现的问题,以及解决办法----这真不是个好办法,只是个权宜之计(这也是自前文发布后、此文迟迟不出的原因,这一个月为了搞定这个板子的配置吃尽了苦头),希望官方后续版本能有所改善。(并不是说软件有bug,我不能确定,也许是本人水平有限)

好,言归正传,在CUBE中配置TouchGFX,关键步骤是LCD屏驱动部分的配置(本文不涉及触屏,添加触屏驱动将在下一节中介绍。跟本文要讲的相比,触屏真的是小菜一碟、非常简单)。同时,毕竟CUBE跟 TouchGFX Designer 是两个独立的软件,现在要把他们揉到一起来用,还是稍显别扭(还没到无缝的程度):需要先启动CUBE,进行配置,然后第一次生成code,但不要进入IAR(或KEIL之类)的IDE,而是在CUBE中启动TouchGFX Designer(而且,必须、只能启动一次;否则,嗯,那就杯具了,说来话长、这里不展开了)、设计屏幕界面,然后需要再回到CUBE中,第二次生成code,然后,就可以进入IAR编译、下载了。有点复杂?下面用图文详述。

为了简化 STM32F769I-DISCO 板子的配置,我们利用 CUBE 把769板子的所有默认驱动都先自动配上:


图一

点击上图 Start Project 后,弹出询问窗:


图二

选择 Yes ,用默认驱动初始化769板子。

1. 保留默认配置RCC,   IWDG、WWDG未使用、关闭(按默认配置保留也没关系,下同),LSE是否配置均可:


图三-1

2. 保留默认配置SYS,注意时基的 TIM6 的配置(TouchGFX要求的):


图三-2

3. Timers, 配置TIM7(理论上可以选择除已经占用的TIM6之外的任何timer,这里我们使用TIM7)、关闭其他timer:


图三-3

4, FMC (保留默认配置):


图三-4

QUADSPI可配可不配,这里保留了系统默认的配置。

5. LTDC,重头戏来了,769板子要求的参数如下:

图四


图五


图六

请注意图五、图六中几处出现 400 的地方,769的屏是800x480的,但这几处确实要填入400、而不是800!(谁知道原因?请留言告诉我^_^)

6. DSIHOST,屏接口的第二部分:

图七


图八


图九

7. DMA2D,图像硬件加速器,保留默认配置:


图十

8. CRC,用于计算,保留默认配置:


图十一

9. FREERTOS, 保留默认配置。

10. 最后一项:GRAPHICS:


图十二


图十三

注意图十三中的“显示器物理尺寸”的宽度,显示是“400”,这是有问题的,见后。


图十四

(注意:图十四中,Execute 按钮是灰色的,这是因为CUBE还没有“首次生成”代码、此时不允许启动TouchGFX。见图二十二)

11. 然后,还需要修改时钟:


图十五


至此,第一阶段的配置任务完成,选择CUBE配置文件保存目录和文件名:

图十六

点击 GENERATE CODE,生成代码。弹出询问窗:


图十七

这个跟GFX的模拟器参数配置有关,这里不必管它,选择 Yes ,出现进度条:


图十八

代码生成完毕,系统提示“是否打开工程”?


图十九

这里先不打开工程,点击 Close。此时,如果打开生成代码的目录,可以看到:


图二十

CUBE生成了目录 TouchGFX,但其中只有一个子目录:


图二十一

TouchGFX需要的其他文件就不是CUBE能搞定的了,需要TouchGFX Designer来生成。返回CUBE,再次进入 GRAPHICS 条目,点击 Execute 按钮(此时 Execute 按钮已变为可用了)、启动 TouchGFX Designer :


图二十二


稍等片刻后,TouchGFX Designer启动了。添加一个简单的背景色----一个800x480的Box控件(这种背景色使用代码实现,占用存储空间小,可以驻留在MCU片内flash中,利于后面的IAR烧写):


图二十三

再加入一段文字、一个按钮:


图二十四

点击上图右上角的 Generate Code ,等待一会儿:


图二十五

代码生成后,再来看看文件目录:


图二十六

多了不少东东。

然后,关闭 TouchGFX Designer ,回到CUBE,再次用CUBE生成代码(直接点击图十六中的 GENERATE CODE)。代码生成完毕后,询问:


图二十七

这次,选择 Open Project ,启动IAR。然后修改文件 HW_Init.c,改为横屏模式。:


图二十八

编译、烧写,769板子上跑起来是这个样子滴:


图二十九

崩溃了吧!费尽九牛二虎之力,得到的不是正确的显示呀!!!

不过,图像很稳定,只是重复显示了文字和按钮,应该是屏初始化出现了一些非致命的错误。然后,。。。,仔细检查配置过程吧。

。。。经过了数天的检查,查不出配置参数有误啊。

之后,似乎突然开了天眼,按下图使用文本编辑器修改了CUBE配置文件(后缀为 .ioc  的那个):


图三十 ioc 原文件

在 ioc 文件中修改、添加:


图三十一

然后保存 ioc 文件,双击这个 ioc 文件、打开CUBE,应该能看到屏的宽度参数改为 800 了,这正是769板子上屏的正确宽度:


图三十二

在CUBE中重新生成代码,在IAR中改为横屏显示:


图三十三

编译、烧写:


图三十四

终于看到了正确的图像!!

(图三十一中的 ioc 文件修改是怎么想到的?研究一下前文《使用STM32CubeMX创建TouchGFX应用程序(一)》中的方法生成的 ioc 文件,能找到一些线索)

虽然图像显示正确了,然而实现过程着实费劲,解决问题的办法貌似有点旁门左道的意味,仅供大家参考吧。下一篇将介绍《使用STM32CubeMX创建TouchGFX应用程序(三)-- 从零配置》(链接,待续),敬请期待。


补记:

昨天把CubeMX升级到了目前最新版本:


图三十五

重复上面配置过程,仍然得到图二十九的非正常图像,仍然需要修改.ioc 文件

(0 ) (0 )
回复 举报

回复于 2019-10-12 沙发

不错,感谢分享
(0 )
评论 (0) 举报

回复于 2019-10-15 2#

谢谢分享!!!
(0 )
评论 (0) 举报

回复于 2019-10-16 3#

感谢分享,有需要机械臂,电源,硬件电路设计,软件编程,开发板等各种定制的可以私聊我哦,相互学习,共同进步。
(0 )
评论 (0) 举报

回复于 2019-10-18 4#

谢谢分享!!!
(0 )
评论 (0) 举报

回复于 2020-04-06 5#

感谢分享
(0 )
评论 (0) 举报
  • 发表回复
    0/3000





    举报

    请选择举报类别

    • 广告垃圾
    • 违规内容
    • 恶意灌水
    • 重复发帖

    全部板块

    返回顶部