你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

CubeMX配置STM32F769I GUI过程出现的BUG及解决方法

[复制链接]
wenyangzeng 发布时间:2018-7-9 13:42
本帖最后由 wenyangzeng 于 2018-7-10 20:20 编辑
" j" o& ^: A8 h/ K8 s0 r- a4 T  P, @8 q0 W1 t
CubeMX配置STM32F769I GUI过程出现的BUG及解决方法
. h* I# w; }; G4 d# J
5 @% X  N) l$ d. a4 r2 A. R9 Z1 E! k
) j5 u8 V$ [3 d2 k1 a& i+ v
0 u1 x) r  `2 o1 k2 e, T9 D
    按照帖子介绍的方法,很快就配置完成了STM32F769I DiscvoeryGUI工程。可能所用的CubeMX4.26.0版本与版主的不同,编译下载后运行结果如图1,图像显示不正常。
  W1 s+ M# j9 Z- v+ E' h
1.png
                             图1
& y8 y- v2 |9 f0 s0 ], c
这个demo背景色是黑色,从图中可以看到H方向水平扫描大概只扫描了屏幕的一半400DPI,好像是从下往上扫描而不是从左往右扫描。右边的彩条是复位时留下了的。

3 m1 I' d' o- m
针对400DPI进行分析
" _1 W7 L4 f, }- c2 B# a6 ]) p) l6 P
步骤1
尝试将MX_LCD_Init()函数中的
hltdc.Init.AccumulatedActiveW=402改成802
hltdc.Init.TotalWidth=403改成 803;参见图6
8 o7 G. D/ i  `
编译运行后结果如下图2:

5 R' B# e0 T, o: g9 r& s$ W: O1 J. o& K+ Y
2.png
                                图2

9 B/ o. x; e- ?- p5 }* F; P9 u
H方向拉长了,W方向没有改变,问题还是没有解决。

* E! H7 h! B& B; L! A
步骤2
回到CubeMX

& ~; b8 `4 m6 t0 z" Q+ |, U. L) F+ t
3.png
: x: x) z- I9 l1 i6 T( Q- {3 l4 Q
                        图3

3 G* ~, e; ?2 c6 b2 c+ g4 b  ^- z4 c" {
修改CubeMXLTDC Parameter参数配置将Activa width400修改成800
9 x7 I% f4 e! L" j. ~' N
4.png
                                  图4

0 }* d7 C0 a- g6 ^$ o8 Z5 Z3 s
重新生成工程,编译下载运行,结果见图5:
4 x7 h- J' e" N# I: p7 C/ f
5.png
                             图5
, S$ ?$ v1 x1 A8 [: b: Y
W方向扫描正常了,但H垂直方向坐标明显有误。

! }/ a1 y% w& m2 Z& i/ s% y* u
先小结一下:
为什么在MDK中直接修改函数参数Activa width(步骤1),改变W方向扫描无效?
而在CubeMX中(步骤2)修改Activa width生成新工程有效,改变W方向扫描有效,但H方向坐标出错?
判断:可能是CubeMX的一个BUG。大概从CubeMX中更新工程时不只更新了MX_LCD_Init()函数的内容,应该还有某个文件也更新了,但更新对象错了,可能是W坐标数据更新到H坐标数据去了

( y: q& C! O0 A( j  @
这个BUG只能靠ST专家来解决了,我们只能用修补的办法来应急使用:
既然我们从CubeMX中(步骤2)修改了ActiveWidth=800,W方向扫描就正常了,H方向扫描却错误了。
而我们在步骤1修改的:hltdc.Init.AccumulatedActiveW   和  hltdc.Init.TotalWidth 的参数可以影响H方向。

) n$ p. ?% w+ k2 O, @9 z. l0 A
修改步骤(2步)
1、先在CubeMX中修改:Activa width=800,(图4)
生成新工程(一定要生成新工程!!)。
2、然后在MDK下修改修改MX_LCD_Init()

9 t) J+ X3 H  D1 u/ t4 k& c
  hltdc.Init.AccumulatedActiveW = 402;  //(原802)
  hltdc.Init.TotalWidth = 403;                 //(原803)

8 O3 p( `1 _8 G+ f
图6改成图7的参数:
) [* `2 X  W5 j
6.png
                                图6
$ \9 C8 c6 e4 @

3 K$ G  X! |& @: g  M% `3 R2 [3 H" T3 z2 \  B
7.png

+ U3 @. Y( N7 n2 y( y* R
                               图7
7 A$ W1 t7 J! o+ y  T1 G- r: c9 W
编译、下载、运行:

- }. B  Q/ B( G, ~" w
OK!

) c6 q0 Y' z/ n/ q  H" D4 M
8.png
                          图8

6 g6 O; k- R3 l+ s
使用不同版本CubeMX的朋友也要试试哦!

+ j) ~7 K7 x) T' b" a$ F  {4 `8 p+ P# w- u& N6 j' W9 B# q
0 I' S( F0 D8 U0 i+ b
" s* e- s( G7 D0 ?) B- k5 H! P
/ w' E) d- m* @. C
收藏 评论12 发布时间:2018-7-9 13:42

举报

12个回答
wolfgang 回答时间:2018-7-9 21:55:37
wenyangzeng 发表于 2018-7-9 16:076 q' m. J- ~* u1 [3 X
CubeMX按照图4修改后生成新的工程,图4 里的802、803在MDK里显示在图6的参数中,不改成图7就显示图5的图像 ...
4 K* F4 ~* z6 n4 m
你图3 原本就是402、403,按照图4修改为802、803后,( g1 i. G$ \4 h3 ?4 s
后来又按照图6、图7修改会402、403  `" l; y/ |1 M1 r
这怎么在围绕打转呢?这个402、403修改来修改去,/ p# p! r8 R% Z3 q7 {1 r
7 |# j7 k# X. P
其实你没说到问题的重点,看我原贴后边的 补充说明6 v3 d8 P& v% Y$ ?! ^
针对图一,最终还是 " E& Z6 O: F3 [2 }* ^( _8 d
OTM8009A_ORIENTATION_PORTRAIT 和 OTM8009A_ORIENTATION_LANDSCAPE 的问题% N, V4 }3 E! |

, e' Q6 P8 ]5 l4 M7 q

3 u$ |# u. P6 r* `3 Q
wolfgang 回答时间:2018-7-9 14:51:28
1.jpg
9 e6 n; b/ {6 o% v, a应该是某些参数没设置对造成,不过我看你的内容,之前不就是402、403?! B% p0 K( x1 p9 O: c

# ]& p6 g( F. A7 X) r) v
# \' b7 V  J6 _7 j我的CubeMX与你的事一样的。 4.26
1 E! B! g9 Y3 c; I) C. h
wolfgang 回答时间:2018-7-9 14:53:18
不过还是值得恭喜,开启了 MIPI DSI学习的大门
wenyangzeng 回答时间:2018-7-9 15:04:51
wolfgang2015 发表于 2018-7-9 14:51
5 {& h8 {2 G; K% M4 B3 o应该是某些参数没设置对造成,不过我看你的内容,之前不就是402、403?

& b. M2 T1 K* \4 L7 T4 e" I0 R6 X1 EActive=400时,底下2个是402、403 ,显示不正常9 L( d$ [. I3 ~# e& R
Active=800时是802,803
wolfgang 回答时间:2018-7-9 15:31:23
wenyangzeng 发表于 2018-7-9 15:043 T7 W' _7 R' h9 V8 ^7 V$ W3 L1 D
Active=400时,底下2个是402、403 ,显示不正常) s5 v% y7 Q6 f# h; ~
Active=800时是802,803
$ ~) o* @: r% X" D3 O2 J2 a
我是说“图6改成图7的参数”这里
! a7 U* A/ {$ x- i- ?这不是也配置成为:402、403 - ?7 Y" _$ Q8 W
wenyangzeng 回答时间:2018-7-9 16:07:46
本帖最后由 wenyangzeng 于 2018-7-9 16:14 编辑 ) B6 E+ D+ o9 W
wolfgang2015 发表于 2018-7-9 15:31
# x! U4 |: i+ k. \. j我是说“图6改成图7的参数”这里
. b5 b! e! v4 S+ Z# T1 ?& |这不是也配置成为:402、403

& V8 z. A6 G4 q9 ZCubeMX按照图4修改后生成新的工程,图4 里的802、803在MDK里显示在图6的参数中,不改成图7就显示图5的图像了。
wenyangzeng 回答时间:2018-7-9 22:17:09
本帖最后由 wenyangzeng 于 2018-7-9 22:19 编辑
" m; S/ a8 K2 m8 z
wolfgang2015 发表于 2018-7-9 21:55# `- h9 I, r. H" v
你图3 原本就是402、403,按照图4修改为802、803后,3 z0 Y* q* e( u- ?
后来又按照图6、图7修改会402、403: I3 N1 U. X0 m& i+ p5 V
这怎么在围绕打 ...
' h' B1 n' v7 c
版主没有理解我的思路,那个402、403必须是在cubeMX里修改Active=800,得到802和803.生成工程后,在MDK里改回402和403.没有打转。cubeMX里不修改,没有生成新工程,在MDK里改没有用的。
, ^$ X9 P4 ]$ P2 {
, Q/ o9 U4 D0 X9 m& c7 f* L% M& f
wolfgang 回答时间:2018-7-9 22:42:26
wenyangzeng 发表于 2018-7-9 22:17
# X5 O- G% L* n2 S# t) w7 ~版主没有理解我的思路,那个402、403必须是在cubeMX里修改Active=800,得到802和803.生成工程后,在MDK里 ...
! J" B* _1 p5 d6 S% b
对比一下active=800 和active=400 其他代码呢?看看生成的代码还有什么差别~
zero99 回答时间:2018-7-16 17:12:42
谢谢分享
AI++ 回答时间:2018-7-21 09:47:46
我在用Cube 感觉也是 会出现各种奇怪的问题,很恶心,  时不时就得重新生成工程
wenyangzeng 回答时间:2018-7-21 09:57:04
本帖最后由 wenyangzeng 于 2018-7-21 09:58 编辑 3 ^2 O7 u2 m0 a) ]
50031185 发表于 2018-7-21 09:47+ [( R/ R: n9 I  V  z. e
我在用Cube 感觉也是 会出现各种奇怪的问题,很恶心,  时不时就得重新生成工程 ...
7 _: U0 v9 E: q  d3 |  ?
只要过程中某一步参数没有设置好,后面就很麻烦了。1楼链接的版主的那篇帖子很具体,可以按照贴中方法进行。
# K4 l1 |) W8 S6 V
AI++ 回答时间:2018-9-18 09:25:25
wolfgang2015 发表于 2018-7-9 21:55$ g0 s9 P# `" d
你图3 原本就是402、403,按照图4修改为802、803后,
' ]; W" {3 e) Y3 ^( h3 A后来又按照图6、图7修改会402、4030 \/ o1 x  G6 g& \6 e- i
这怎么在围绕打 ...
% }9 V) g3 l' b/ ^5 ]1 x
是的,我也出现了相同问题,感觉就是方向错了,找了半天没找到地方, 最后搜索关键字找到了
- K- w! ?4 l+ l+ A) A' T初始化成了:; y, b  x" ~2 I' J8 c6 n
OTM8009A_Init(OTM8009A_FORMAT, OTM8009A_ORIENTATION_PORTRAIT);4 W) i+ L) y# G7 Y/ a5 j( b

  @* U* {# J2 H/ H* C+ wOTM8009A_ORIENTATION_PORTRAIT  指竖屏模式  显示人像方向2 g: p5 g: G: ^! s3 {8 t
OTM8009A_ORIENTATION_LANDSCAPE  横屏模式, 显示风景方向
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版