allyzc 发表于 2018-12-4 01:12:38

基于CubeMX 5.0的TouchGFX移植教程

本帖最后由 allyzc 于 2018-12-4 08:49 编辑

本移植使用ARMFLY V6+7寸屏开发板。
一些注意事项会标红。
自行准备工作:
1、CubeMX更新5.0版本。
2、F4固件库更新至stm32cube_fw_f4_v1230。
3、安装TouchGFX设计器,在CUBE固件库下有,即安装以下文件STM32Cube_FW_F4_V1.23.0\Middlewares\ST\TouchGFX\installer\TouchGFX-4.10.0.msi


根据CUBEMX中TouchGFX的要求,需要满足以下条件

即FreeRTOS,DMA2D,CRC,SDRAM,LTDC,还有一个定时器TIM。


以下开始新建工程
1、简单的先勾一下,使能RCC时钟,使能CRC校验。
2、SYS下使能DEBUG方式,不然第二次可能无法下载程序,这是CUBEMX的一点使用经验


3、使能FMC的SDRAM


4、使能LTDC,与DMA2D,这里要注意,只能选RGB888或是RGB565格式,不能选ARGB8888格式,不然TOUCHGFX配置会出错,切记


5、使能一下定时器,我这里使用了TIM3,切记不能勾选它的中断



6、勾选FreeRTOS,有2个注意点,需要打开USE_APPLICATION_TASK_TAG功能,分配给GFX的任务内存要大点,不然死机。



7、使能TouchGFX,修改分辨率,切换TouchGFX选项,



选择GFX的设计器


8、工程配置,勾选生成的外设生成.c和.h文件,这样方便管理工程


9、生成工程代码,点YES


这时候编译工程会发现很多错误


切换回CUBEMX,在CUBEMX下启动GFX的设计器


使用设计器设计一个界面,再点击生成代码


查看生成日志,如下表示完成


a、再切换回MDK,发现要重新载入工程,点YES,再编译,发现上百个错误,这是因为没有添加GFX的lib文件,其实这时候MX已经把需要的GFX文件都拷贝到工程下了
b、添加lib文件后重新编译,还有错误



c、这是因为MX乱添加了几个BSP文件


d、都去掉,然后再编译,发现只有2个错误了


e、这是因为C文件调用CPP文件中的函数,或是CPP文件调用C文件中的函数导致,
GFX官方有说明,
如C文件调用CPP文件中的函数,那么CPP文件中的原函数要加extern "C"前辍,如下。



如CPP文件调用C文件中的函数,那么CPP文件中要加extern "C"前辍声明这是C函数,如下。


再次编译工程,发现没有错误了,下载程序,显示正常


最后触摸移植,触摸相关其实已经在工程文件上了,修改内容也简单。


编译工程并下载程序,触摸也正常了,总结了下,只要注意上面红色的地方,应该都能移植成功,希望对各位有帮助。

附件上传失败,工程:https://pan.baidu.com/s/10QsJPHsy15aB2-ZTTJsKqQ





eric2013 发表于 2018-12-4 01:21:21

非常给力,楼主方便把例子共享下不{:8:}

allyzc 发表于 2018-12-4 01:23:41

eric2013 发表于 2018-12-4 01:21
非常给力,楼主方便把例子共享下不

老大还没睡啊,附件上传比较慢,弄了个百度连接

eric2013 发表于 2018-12-4 01:25:08

allyzc 发表于 2018-12-4 01:23
老大还没睡啊,附件上传比较慢,弄了个百度连接

太给力了,兄弟,看到网盘地址了{:34:}

leiyitan 发表于 2018-12-4 07:30:47

非常给力,图形界面开发又向前迈进了一大步

烟花绽放 发表于 2018-12-4 10:09:35

厉害了,,,,,,

byccc 发表于 2018-12-4 10:17:03

厉害了,楼主{:8:}

ghslfgkkl88 发表于 2018-12-4 10:37:33

对待先驱,我一向是支持的。{:8:}

allyzc 发表于 2018-12-4 11:23:43

一起讨论一起学习{:12:}

fswyt 发表于 2018-12-4 13:22:35

厉害,赞一个{:8:}

打洞者 发表于 2018-12-4 14:19:34

{:8:}{:8:}

longjunyi 发表于 2018-12-4 20:47:24

{:8:}{:8:}{:8:}

清风徐来 发表于 2018-12-4 21:07:22

新的电容屏好像触摸用不了,直接换gt811文件,会报好多错误

清风徐来 发表于 2018-12-4 21:08:39

eric2013 发表于 2018-12-4 01:21
非常给力,楼主方便把例子共享下不

新的电容屏好像触摸用不了,直接换gt811文件,会报好多错误。

eric2013 发表于 2018-12-4 21:09:59

清风徐来 发表于 2018-12-4 21:08
新的电容屏好像触摸用不了,直接换gt811文件,会报好多错误。

你得参考楼主做的替换才行。

5261zgj 发表于 2018-12-5 08:33:28

{:8:}{:8:}{:8:}

xieyang__ 发表于 2018-12-5 09:10:58

{:8:}

fxm 发表于 2018-12-5 09:12:06

高手啊 必须感谢

litin326 发表于 2018-12-5 09:18:24

{:8:}谢谢分享

王海靖 发表于 2018-12-5 09:50:38

非常酷,楼主威武

creep 发表于 2018-12-5 11:29:42

{:8:}                     

billa_a 发表于 2018-12-5 18:28:33

谢谢分享!

music1273 发表于 2018-12-6 15:01:00

谁知道这是什么情况:)

allyzc 发表于 2018-12-6 15:05:51

music1273 发表于 2018-12-6 15:01
谁知道这是什么情况

gpio.c和GPIO.cpp是可以同时存在工程的,帮了好几个群友修改移植错误,还没有发现你这种情况

music1273 发表于 2018-12-6 15:11:38

allyzc 发表于 2018-12-6 15:05
gpio.c和GPIO.cpp是可以同时存在工程的,帮了好几个群友修改移植错误,还没有发现你这种情况

会不会是因为我用IAR的原因,能给个联系方式吗?

dreamworks 发表于 2018-12-7 15:41:26

太棒了,总算有人开始touchgfx

jplzl10000 发表于 2018-12-8 21:15:22

想问下,这个touchGFX中的SDL_xxx是啥作用?这个SDL看说明是Simple DirectMedia Layer,这玩意是什么东西?

4058665 发表于 2018-12-9 09:24:52

赞楼主V5+1

王力斯 发表于 2018-12-10 08:41:25

{:8:}大神给力

music1273 发表于 2018-12-10 09:16:42

经验之谈
IAR生成工程的时候有两个文件编译时会提示重名,需要修改成两个不同的名字gpio.c和GPIO.cpp

zhang062061 发表于 2018-12-10 09:56:02

5.0支持中文路径吗,前几天下了 发现不支持中文路径又给卸载了

allyzc 发表于 2018-12-10 10:19:46

zhang062061 发表于 2018-12-10 09:56
5.0支持中文路径吗,前几天下了 发现不支持中文路径又给卸载了

5.0识别中文路径会显示乱码,不要用中文

allyzc 发表于 2018-12-10 10:20:36

music1273 发表于 2018-12-10 09:16
经验之谈
IAR生成工程的时候有两个文件编译时会提示重名,需要修改成两个不同的名字gpio.c和GPIO.cpp

{:8:}

47小白羊 发表于 2018-12-10 13:40:53

只能FreeRTOS?ucos不行的么?

allyzc 发表于 2018-12-10 14:18:26

47小白羊 发表于 2018-12-10 13:40
只能FreeRTOS?ucos不行的么?

可以用其它的OS,但是要自己移植,而CubeMX自动生成代码只支持FreeRTOS

dreamworks 发表于 2018-12-11 09:40:25

能支持1024X600的屏幕吗?我在stm32cubemx设置最高只能到1000,超过1000都无法设置

allyzc 发表于 2018-12-11 11:42:15

dreamworks 发表于 2018-12-11 09:40
能支持1024X600的屏幕吗?我在stm32cubemx设置最高只能到1000,超过1000都无法设置

CUBEMX上最大设为1000,代码里面改为1024即可

dreamworks 发表于 2018-12-11 16:44:02

本帖最后由 dreamworks 于 2018-12-11 16:45 编辑

设置以后,画面还是出不来,不知道这是什么原因?

allyzc 发表于 2018-12-12 16:08:12

dreamworks 发表于 2018-12-11 16:44
设置以后,画面还是出不来,不知道这是什么原因?

有几点注意事项;
1、跑TouchGFX的任务RAM空间要分配大一点
2、LTDC和DMA2D的格式要一样,且只能是RGB888或RGB565,且LTDC和DMA2D的中断一定要打开
3、测试时可以写SDRAM刷一屏数据,看颜色是否正确

dreamworks 发表于 2018-12-12 17:18:01

本帖最后由 dreamworks 于 2018-12-12 17:20 编辑

好的,我来试试看,感谢你的提示
页: [1] 2 3
查看完整版本: 基于CubeMX 5.0的TouchGFX移植教程