请选择 进入手机版 | 继续访问电脑版

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

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

[复制链接]
wenyangzeng 发布时间:2018-7-9 13:42
本帖最后由 wenyangzeng 于 2018-7-10 20:20 编辑
! X8 `. a, _) w5 M0 b# ]/ W# x8 b# x$ V/ q
CubeMX配置STM32F769I GUI过程出现的BUG及解决方法
9 i& g: ^4 h" _- k" x+ r

- P6 q, l3 J) z% E/ P/ {8 I* c7 C5 P# a% ]/ g& t
: J' S* {3 K. O  r& P
    按照帖子介绍的方法,很快就配置完成了STM32F769I DiscvoeryGUI工程。可能所用的CubeMX4.26.0版本与版主的不同,编译下载后运行结果如图1,图像显示不正常。
8 |& y) f- x; P5 C9 ^$ t
1.png
                             图1
- C3 r) C8 ?/ [0 X- b  h
这个demo背景色是黑色,从图中可以看到H方向水平扫描大概只扫描了屏幕的一半400DPI,好像是从下往上扫描而不是从左往右扫描。右边的彩条是复位时留下了的。

2 u: ~1 L) H! F  U( N! e7 ^& {
针对400DPI进行分析

- ], _+ C3 V0 B: T( V. g
步骤1
尝试将MX_LCD_Init()函数中的
hltdc.Init.AccumulatedActiveW=402改成802
hltdc.Init.TotalWidth=403改成 803;参见图6
3 n: B& H$ Z! k+ X# J7 ~! O
编译运行后结果如下图2:

* g% I  C9 q, P
$ \$ p0 k& f3 X  `2 v
2.png
                                图2

3 V9 G- e0 N3 G" R
H方向拉长了,W方向没有改变,问题还是没有解决。
' h% n$ k. G7 j* g6 `( |
步骤2
回到CubeMX

0 p) l9 a; k9 l- u7 ]) M  h
3.png
2 y9 A  P) d# c7 Q+ ?' q5 Z7 m
                        图3

. Z" ~/ t5 J) N* e  ?# y8 g& l' R* n' p9 x
修改CubeMXLTDC Parameter参数配置将Activa width400修改成800

, e! t- x+ S9 e+ H! B5 o, v5 a
4.png
                                  图4

# w  B' a8 e& y' d. v
重新生成工程,编译下载运行,结果见图5:
$ f# V1 N7 P' |. {. i1 k
5.png
                             图5

1 H* G/ S/ I7 y' S0 O  Y
W方向扫描正常了,但H垂直方向坐标明显有误。

' F  U5 M3 b: m9 i
先小结一下:
为什么在MDK中直接修改函数参数Activa width(步骤1),改变W方向扫描无效?
而在CubeMX中(步骤2)修改Activa width生成新工程有效,改变W方向扫描有效,但H方向坐标出错?
判断:可能是CubeMX的一个BUG。大概从CubeMX中更新工程时不只更新了MX_LCD_Init()函数的内容,应该还有某个文件也更新了,但更新对象错了,可能是W坐标数据更新到H坐标数据去了
' `3 s; L$ P& o4 {' r8 a! i' `9 L
这个BUG只能靠ST专家来解决了,我们只能用修补的办法来应急使用:
既然我们从CubeMX中(步骤2)修改了ActiveWidth=800,W方向扫描就正常了,H方向扫描却错误了。
而我们在步骤1修改的:hltdc.Init.AccumulatedActiveW   和  hltdc.Init.TotalWidth 的参数可以影响H方向。
! P6 m& b8 v2 J: d
修改步骤(2步)
1、先在CubeMX中修改:Activa width=800,(图4)
生成新工程(一定要生成新工程!!)。
2、然后在MDK下修改修改MX_LCD_Init()
& q8 ]/ b4 y+ A( l( m* M  {
  hltdc.Init.AccumulatedActiveW = 402;  //(原802)
  hltdc.Init.TotalWidth = 403;                 //(原803)

) V" R$ T1 L1 o( Q- G7 t
图6改成图7的参数:

3 l, B& ?& f& _; ?
6.png
                                图6
% t* X" I" |) _' H; q
2 [* Q: c. ]& O$ B- a1 g# x% ^

7 X$ D1 n: m7 m$ L: f  A* W7 O
7.png

2 W. s- \5 k5 y( t7 _) m, b
                               图7

0 E# i( s) R0 i3 l* o
编译、下载、运行:

6 }0 R3 Q( s% k1 o0 i& s& V; g
OK!

2 }, U. J; @6 F0 B  F
8.png
                          图8

0 X  p+ B" m( G7 T, s: |/ u
使用不同版本CubeMX的朋友也要试试哦!

5 ?& e( Y( t  {" e- \% v) K: u6 |7 \8 Z- i, g

& ?% C1 w5 c. ~0 D. o+ c* b5 T, s* D  A

0 D- H0 ?* x. Q% {
收藏 评论12 发布时间:2018-7-9 13:42

举报

12个回答
wolfgang 回答时间:2018-7-9 21:55:37
wenyangzeng 发表于 2018-7-9 16:07
- W2 ~  Q, S9 q- j  E1 P4 V: L4 X( @CubeMX按照图4修改后生成新的工程,图4 里的802、803在MDK里显示在图6的参数中,不改成图7就显示图5的图像 ...
2 |$ l8 x1 J  U6 ~0 z0 e
你图3 原本就是402、403,按照图4修改为802、803后,/ O9 \; I5 K( T; W
后来又按照图6、图7修改会402、403
  C/ t' h1 {7 O8 J这怎么在围绕打转呢?这个402、403修改来修改去,
6 a! s& i( K- ]2 v$ Q: |: Y
5 V9 E4 T9 E! m& |5 L; C其实你没说到问题的重点,看我原贴后边的 补充说明
$ s7 C  R4 L' j& v, W8 S针对图一,最终还是 ; s# ]* k# o& x" I$ q$ C$ \
OTM8009A_ORIENTATION_PORTRAIT 和 OTM8009A_ORIENTATION_LANDSCAPE 的问题$ j4 D: ^6 c3 {7 N& k- _* c

. U3 j6 B* }7 F# j$ @3 ]" p

" D% w* [# B- b3 f2 t1 J# m
wolfgang 回答时间:2018-7-9 14:51:28
1.jpg / F, c8 i: a" i# s3 U: h
应该是某些参数没设置对造成,不过我看你的内容,之前不就是402、403?' J8 O: n* a. J% ?2 G0 P/ N+ K* C
/ v' d! x4 c2 t' R4 x: B. `# k4 G

; S6 g, z1 G/ c9 \我的CubeMX与你的事一样的。 4.26& v2 W  m3 _9 R8 d& t3 a  U
wolfgang 回答时间:2018-7-9 14:53:18
不过还是值得恭喜,开启了 MIPI DSI学习的大门
wenyangzeng 回答时间:2018-7-9 15:04:51
wolfgang2015 发表于 2018-7-9 14:51
4 P4 S9 s. A$ n  Z: a. Z+ A- P* y应该是某些参数没设置对造成,不过我看你的内容,之前不就是402、403?
1 R% q0 I- Z$ @$ ?& y7 R  k5 N* l
Active=400时,底下2个是402、403 ,显示不正常
) y0 i2 N( E6 u! E9 IActive=800时是802,803
wolfgang 回答时间:2018-7-9 15:31:23
wenyangzeng 发表于 2018-7-9 15:040 L+ P1 _, T. S* T7 P
Active=400时,底下2个是402、403 ,显示不正常
/ X9 _8 [- J! R7 o% g2 |9 e3 dActive=800时是802,803

" W$ f6 p1 v, k- ^4 |$ t& W我是说“图6改成图7的参数”这里
, J9 ~+ b, s+ r3 J. L- h这不是也配置成为:402、403 8 L0 p. D, v. k/ c6 w
wenyangzeng 回答时间:2018-7-9 16:07:46
本帖最后由 wenyangzeng 于 2018-7-9 16:14 编辑 ! v, ^9 X; U- w5 B- v/ }/ s
wolfgang2015 发表于 2018-7-9 15:31
" W8 R, [+ h1 @2 C) [我是说“图6改成图7的参数”这里; b2 U% s2 E( I  d
这不是也配置成为:402、403
6 B7 O! Q7 }- j* U- G- r
CubeMX按照图4修改后生成新的工程,图4 里的802、803在MDK里显示在图6的参数中,不改成图7就显示图5的图像了。
wenyangzeng 回答时间:2018-7-9 22:17:09
本帖最后由 wenyangzeng 于 2018-7-9 22:19 编辑 * ~3 c/ R( H# ?3 a1 {5 h" a
wolfgang2015 发表于 2018-7-9 21:550 o7 d: f6 s: M4 `
你图3 原本就是402、403,按照图4修改为802、803后,' L% D$ x' h: U4 p3 w7 ^
后来又按照图6、图7修改会402、403
8 G  h7 ^9 P+ C5 b这怎么在围绕打 ...

; \: {* z" \0 W) e8 w7 r* ~( ^2 O版主没有理解我的思路,那个402、403必须是在cubeMX里修改Active=800,得到802和803.生成工程后,在MDK里改回402和403.没有打转。cubeMX里不修改,没有生成新工程,在MDK里改没有用的。: H1 h/ _  A8 y0 X

3 _5 m/ O3 B4 u' x5 q+ E
wolfgang 回答时间:2018-7-9 22:42:26
wenyangzeng 发表于 2018-7-9 22:17
+ J) n. n% ?+ Y- A; O* V9 ^. |版主没有理解我的思路,那个402、403必须是在cubeMX里修改Active=800,得到802和803.生成工程后,在MDK里 ...
9 y2 D  ?( P8 O6 D1 S3 K0 V9 a* I
对比一下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 编辑 " L6 D. S# O9 Y5 j* L7 g* G
50031185 发表于 2018-7-21 09:47
( `  e: D; v( Z我在用Cube 感觉也是 会出现各种奇怪的问题,很恶心,  时不时就得重新生成工程 ...

* w" j% F6 r7 F  a# O只要过程中某一步参数没有设置好,后面就很麻烦了。1楼链接的版主的那篇帖子很具体,可以按照贴中方法进行。
% ~5 w3 k  c7 m7 C' \# d
AI++ 回答时间:2018-9-18 09:25:25
wolfgang2015 发表于 2018-7-9 21:55$ y# M& \6 B& }$ r
你图3 原本就是402、403,按照图4修改为802、803后,
2 J* v* u2 G0 F后来又按照图6、图7修改会402、4039 \; O( c$ d) @- F# u# }
这怎么在围绕打 ...

( X7 S: t1 A: O. E1 c3 q是的,我也出现了相同问题,感觉就是方向错了,找了半天没找到地方, 最后搜索关键字找到了+ w1 e: W" a; Q5 \/ E
初始化成了:
7 z/ C/ J9 Q* P# p: POTM8009A_Init(OTM8009A_FORMAT, OTM8009A_ORIENTATION_PORTRAIT);
: ]% ?; W3 q! m6 K
$ E) c+ t5 N# E# ~4 LOTM8009A_ORIENTATION_PORTRAIT  指竖屏模式  显示人像方向
$ K; s7 s3 F$ ^8 Q. X3 A0 \OTM8009A_ORIENTATION_LANDSCAPE  横屏模式, 显示风景方向
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版