记录一下CubeMX5.1.0+TouchGFX4.10.0使用过程遇到的问题

2019-07-20 01:59发布

最近公司购买了一个STM32F769I_DISCO,使用过程中发现TouchGFX生成的图像在显示时有撕裂现象,原因应该是定位出错。
问题已经暂时解决了,不过不知道是否彻底解决,会不会出现新的问题,并且还不清楚出现的具体原因。
另一个缺点就是修改的地方不支持USER CODE,Cube重新生成时代码会被覆盖掉,如果有大佬能告知具体原因和原理,或者有更好的解决办法,欢迎帖子里留言。

解决办法是在增加一个定位数组和刷屏函数,并在HAL_DSI_TearingEffectCallback函数里调用。

具体操作步骤:
基于STM32F769I_DISCOCubeMX+TouchGFX+FreeRTOS1.        出现问题:屏幕显示的定位出错导致图像撕裂解决方法:1Application/User/TouchGFX/target文件夹中BoardConfiguration.cpp文件中增加变量pColFull[]
2BoardConfiguration.cpp文件中LCD_ReqTear函数内,scanline变量值修改为800-1.3BoardConfiguration.cpp文件中的extern “c”内增加LCD_SetUpdateRegionFull函数。4Application/User/TouchGFX/target文件夹中STM32F7HAL_DSI.cpp文件中的HAL_DSI_TearingEffectCallback函数内增加LCD_SetUpdateRegionFull函数调用。图片不能复制粘贴,文档也无法上传,好烦啊……

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2条回答
L1724979351
2019-07-20 10:57
由于找不到官方液晶的数据手册,最终放弃了这个开发板,更换了方案,但是今天更新采坑帖子时想起来这个还没改过来,所以顺手更新一下,之前的更改方式是错的。

hltdc.Init.AccumulatedActiveW = 402;
hltdc.Init.TotalWidth = 403;
pLayerCfg.WindowX1 = 400;
pLayerCfg.ImageWidth = 400;
配置LTDC时设置为800*480,然后在keil里面把上面4个设置改过来。(802->402;803->403;800->400;800->400)
这样就OK了,直接设置为400不行,应该是Cube里面还有一些参数和这个设置关联了,暂时没找到是哪个参数,有兴趣的大佬可以找找,如果可以,希望能再这个帖子里分享一下,谢谢。
触摸直接添加官方的BSP_discovery文件,然后把注释掉的触摸驱动函数放出来就行了。
PS:由于时间间隔有点长,有些记不清,如果有误,恳请斧正。

一周热门 更多>