基于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
非常给力,楼主方便把例子共享下不{:8:} eric2013 发表于 2018-12-4 01:21
非常给力,楼主方便把例子共享下不
老大还没睡啊,附件上传比较慢,弄了个百度连接 allyzc 发表于 2018-12-4 01:23
老大还没睡啊,附件上传比较慢,弄了个百度连接
太给力了,兄弟,看到网盘地址了{:34:} 非常给力,图形界面开发又向前迈进了一大步 厉害了,,,,,, 厉害了,楼主{:8:} 对待先驱,我一向是支持的。{:8:} 一起讨论一起学习{:12:} 厉害,赞一个{:8:} {:8:}{:8:} {:8:}{:8:}{:8:} 新的电容屏好像触摸用不了,直接换gt811文件,会报好多错误 eric2013 发表于 2018-12-4 01:21
非常给力,楼主方便把例子共享下不
新的电容屏好像触摸用不了,直接换gt811文件,会报好多错误。 清风徐来 发表于 2018-12-4 21:08
新的电容屏好像触摸用不了,直接换gt811文件,会报好多错误。
你得参考楼主做的替换才行。 {:8:}{:8:}{:8:} {:8:} 高手啊 必须感谢 {:8:}谢谢分享 非常酷,楼主威武 {:8:} 谢谢分享! 谁知道这是什么情况:)
music1273 发表于 2018-12-6 15:01
谁知道这是什么情况
gpio.c和GPIO.cpp是可以同时存在工程的,帮了好几个群友修改移植错误,还没有发现你这种情况 allyzc 发表于 2018-12-6 15:05
gpio.c和GPIO.cpp是可以同时存在工程的,帮了好几个群友修改移植错误,还没有发现你这种情况
会不会是因为我用IAR的原因,能给个联系方式吗? 太棒了,总算有人开始touchgfx 想问下,这个touchGFX中的SDL_xxx是啥作用?这个SDL看说明是Simple DirectMedia Layer,这玩意是什么东西? 赞楼主V5+1 {:8:}大神给力 经验之谈
IAR生成工程的时候有两个文件编译时会提示重名,需要修改成两个不同的名字gpio.c和GPIO.cpp 5.0支持中文路径吗,前几天下了 发现不支持中文路径又给卸载了 zhang062061 发表于 2018-12-10 09:56
5.0支持中文路径吗,前几天下了 发现不支持中文路径又给卸载了
5.0识别中文路径会显示乱码,不要用中文 music1273 发表于 2018-12-10 09:16
经验之谈
IAR生成工程的时候有两个文件编译时会提示重名,需要修改成两个不同的名字gpio.c和GPIO.cpp
{:8:} 只能FreeRTOS?ucos不行的么? 47小白羊 发表于 2018-12-10 13:40
只能FreeRTOS?ucos不行的么?
可以用其它的OS,但是要自己移植,而CubeMX自动生成代码只支持FreeRTOS 能支持1024X600的屏幕吗?我在stm32cubemx设置最高只能到1000,超过1000都无法设置 dreamworks 发表于 2018-12-11 09:40
能支持1024X600的屏幕吗?我在stm32cubemx设置最高只能到1000,超过1000都无法设置
CUBEMX上最大设为1000,代码里面改为1024即可 本帖最后由 dreamworks 于 2018-12-11 16:45 编辑
设置以后,画面还是出不来,不知道这是什么原因? dreamworks 发表于 2018-12-11 16:44
设置以后,画面还是出不来,不知道这是什么原因?
有几点注意事项;
1、跑TouchGFX的任务RAM空间要分配大一点
2、LTDC和DMA2D的格式要一样,且只能是RGB888或RGB565,且LTDC和DMA2D的中断一定要打开
3、测试时可以写SDRAM刷一屏数据,看颜色是否正确 本帖最后由 dreamworks 于 2018-12-12 17:20 编辑
好的,我来试试看,感谢你的提示