最近公司购买了一个STM32F769I_DISCO,使用过程中发现TouchGFX生成的图像在显示时有撕裂现象,原因应该是定位出错。
问题已经暂时解决了,不过不知道是否彻底解决,会不会出现新的问题,并且还不清楚出现的具体原因。
另一个缺点就是修改的地方不支持USER CODE,Cube重新生成时代码会被覆盖掉,如果有大佬能告知具体原因和原理,或者有更好的解决办法,欢迎帖子里留言。
解决办法是在增加一个定位数组和刷屏函数,并在HAL_DSI_TearingEffectCallback函数里调用。
具体操作步骤:
基于STM32F769I_DISCO的CubeMX+TouchGFX+FreeRTOS1. 出现问题:屏幕显示的定位出错导致图像撕裂解决方法:(1)Application/User/TouchGFX/target文件夹中BoardConfiguration.cpp文件中增加变量pColFull[]。
(2)BoardConfiguration.cpp文件中LCD_ReqTear函数内,scanline变量值修改为800-1.(3)BoardConfiguration.cpp文件中的extern “c”内增加LCD_SetUpdateRegionFull函数。(4)Application/User/TouchGFX/target文件夹中STM32F7HAL_DSI.cpp文件中的HAL_DSI_TearingEffectCallback函数内增加LCD_SetUpdateRegionFull函数调用。图片不能复制粘贴,文档也无法上传,好烦啊……
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:由于时间间隔有点长,有些记不清,如果有误,恳请斧正。
一周热门 更多>