本帖最后由 wenyangzeng 于 2018-7-10 20:20 编辑
CubeMX配置STM32F769I GUI过程出现的BUG及解决方法
按照帖子介绍的方法,很快就配置完成了STM32F769I Discvoery的GUI工程。可能所用的CubeMX4.26.0版本与版主的不同,编译下载后运行结果如图1,图像显示不正常。
图1
这个demo背景色是黑色,从图中可以看到H方向水平扫描大概只扫描了屏幕的一半400DPI,好像是从下往上扫描而不是从左往右扫描。右边的彩条是复位时留下了的。
针对400DPI进行分析
步骤1: 尝试将MX_LCD_Init()函数中的 hltdc.Init.AccumulatedActiveW=402改成802, hltdc.Init.TotalWidth=403改成 803;参见图6
编译运行后结果如下图2:
图2
H方向拉长了,W方向没有改变,问题还是没有解决。
步骤2: 回到CubeMX。
图3
修改CubeMX中LTDC Parameter参数配置将Activa width的400修改成800:
图4
重新生成工程,编译下载运行,结果见图5:
图5
W方向扫描正常了,但H垂直方向坐标明显有误。
先小结一下: 为什么在MDK中直接修改函数参数Activa width(步骤1),改变W方向扫描无效? 而在CubeMX中(步骤2)修改Activa width生成新工程有效,改变W方向扫描有效,但H方向坐标出错? 判断:可能是CubeMX的一个BUG。大概从CubeMX中更新工程时不只更新了MX_LCD_Init()函数的内容,应该还有某个文件也更新了,但更新对象错了,可能是W坐标数据更新到H坐标数据去了。
这个BUG只能靠ST专家来解决了,我们只能用修补的办法来应急使用: 既然我们从CubeMX中(步骤2)修改了ActiveWidth=800,W方向扫描就正常了,H方向扫描却错误了。 而我们在步骤1修改的:hltdc.Init.AccumulatedActiveW 和 hltdc.Init.TotalWidth 的参数可以影响H方向。
修改步骤(2步) 1、先在CubeMX中修改:Activa width=800,(图4) 生成新工程(一定要生成新工程!!)。 2、然后在MDK下修改修改MX_LCD_Init()
hltdc.Init.AccumulatedActiveW = 402; //(原802) hltdc.Init.TotalWidth = 403; //(原803)
图6改成图7的参数:
图6
图7
图8
使用不同版本CubeMX的朋友也要试试哦!
|