
本帖最后由 wenyangzeng 于 2018-7-10 20:20 编辑 6 c/ [1 r0 h. e8 [: I' ? CubeMX配置STM32F769I GUI过程出现的BUG及解决方法 0 S( `. y: Q& J1 {' m6 N 按照帖子介绍的方法,很快就配置完成了STM32F769I Discvoery的GUI工程。可能所用的CubeMX4.26.0版本与版主的不同,编译下载后运行结果如图1,图像显示不正常。 ' |; Z$ m A! p$ s7 G/ a/ m. ]" n" s ![]() 图1 这个demo背景色是黑色,从图中可以看到H方向水平扫描大概只扫描了屏幕的一半400DPI,好像是从下往上扫描而不是从左往右扫描。右边的彩条是复位时留下了的。 针对400DPI进行分析 ! D: C# |) V, K) `步骤1: 尝试将MX_LCD_Init()函数中的 hltdc.Init.AccumulatedActiveW=402改成802, hltdc.Init.TotalWidth=403改成 803;参见图6 ( `4 g7 P8 a1 z. @编译运行后结果如下图2: 4 N R* l9 s# y1 L: u+ c% C: M ![]() 图2 H方向拉长了,W方向没有改变,问题还是没有解决。 步骤2: 回到CubeMX。 * y+ K% W% N; O7 D- z" ^/ R* z2 {3 |9 B![]() 图3 $ a) P5 I7 I8 v/ |' Q- \0 s% W! i% _) b3 j- j7 P6 q+ m 修改CubeMX中LTDC Parameter参数配置将Activa width的400修改成800: % K3 l9 k2 D" U: b0 G" t: \7 n& D* x![]() 图4 ' U( g- [: H; x% |重新生成工程,编译下载运行,结果见图5: ![]() 图5 / q3 Q- p; g3 gW方向扫描正常了,但H垂直方向坐标明显有误。 8 M1 H1 k0 e/ z9 ~% y+ @3 s0 z 先小结一下: 为什么在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() j- O% O4 n3 m9 O# A2 @ k- t hltdc.Init.AccumulatedActiveW = 402; //(原802) hltdc.Init.TotalWidth = 403; //(原803) 0 r3 l. Q. i9 I: h3 m, N图6改成图7的参数: ![]() 图6 ! Y O( c, m0 _- F. `+ r3 i V) \![]() 图7 % w& t7 G( g% r7 v& |编译、下载、运行: 2 m* m6 S/ T4 b& ~2 A7 v7 x$ ]% @OK! ![]() 图8 4 }& n2 T3 F0 Y! a使用不同版本CubeMX的朋友也要试试哦! + H+ T- k8 Z" ^! {6 i3 t2 G2 C* H& a- ? 1 s" [6 g' B* Q& [- Z- T |
【实战经验】基于STM32F7的网络时间同步例程
STM32硬件结构学习
STM32中BOOT的作用
【STM32F769I-DISC1】开发板刷入Micropython并完成点灯、读取内部温度测试
【STM32L562E-DK】健康手环基础界面开发(一)—— 准备工作
【STM32F769I-DISC1】测评01:创建STM32cube IDE 工程,点个灯
【STM32F769】创建deepseek本地服务,并实现http请求
汇编浮点库qfplib移植STM32F769I-DISCO开发板与硬件浮点运算性能测试对比
coremark移植到STM32F769I-DISCO开发板的两种方法
【GUI板免费申请活动】【圣诞GUI】使用F746-DISO基于TouchGFX的圣诞树
你图3 原本就是402、403,按照图4修改为802、803后,8 H1 i' s; r, K# F! @
后来又按照图6、图7修改会402、403- {9 d, C, p6 y' f0 b/ E
这怎么在围绕打转呢?这个402、403修改来修改去,
* k( o* D+ D9 O Y' h3 `3 S3 b
其实你没说到问题的重点,看我原贴后边的 补充说明* G* y2 r$ |3 P; ?( V$ A4 X
针对图一,最终还是 6 p- L7 V2 N4 J0 {. n* N
OTM8009A_ORIENTATION_PORTRAIT 和 OTM8009A_ORIENTATION_LANDSCAPE 的问题
, X8 I n3 @: a% V; S- c2 g: P( C% j
应该是某些参数没设置对造成,不过我看你的内容,之前不就是402、403?
0 s$ Y8 p$ j4 i' X
我的CubeMX与你的事一样的。 4.268 X+ N4 v7 a" w) Z2 \' g
Active=400时,底下2个是402、403 ,显示不正常
Active=800时是802,803
我是说“图6改成图7的参数”这里
这不是也配置成为:402、403 / ]% P) G3 J+ a
CubeMX按照图4修改后生成新的工程,图4 里的802、803在MDK里显示在图6的参数中,不改成图7就显示图5的图像了。
版主没有理解我的思路,那个402、403必须是在cubeMX里修改Active=800,得到802和803.生成工程后,在MDK里改回402和403.没有打转。cubeMX里不修改,没有生成新工程,在MDK里改没有用的。
对比一下active=800 和active=400 其他代码呢?看看生成的代码还有什么差别~
只要过程中某一步参数没有设置好,后面就很麻烦了。1楼链接的版主的那篇帖子很具体,可以按照贴中方法进行。
是的,我也出现了相同问题,感觉就是方向错了,找了半天没找到地方, 最后搜索关键字找到了
初始化成了:) S" |% Z, j1 {
OTM8009A_Init(OTM8009A_FORMAT, OTM8009A_ORIENTATION_PORTRAIT);* R0 v. z0 b, A; r1 ~8 ]
0 b4 \$ R9 v S! l. b$ w
OTM8009A_ORIENTATION_PORTRAIT 指竖屏模式 显示人像方向! Z- i" m( A+ b I0 s4 U
OTM8009A_ORIENTATION_LANDSCAPE 横屏模式, 显示风景方向