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

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

[复制链接]
wenyangzeng 发布时间:2018-7-9 13:42
本帖最后由 wenyangzeng 于 2018-7-10 20:20 编辑
. g; U$ ~0 o4 n3 x! }# B  D! u& p6 d  U
CubeMX配置STM32F769I GUI过程出现的BUG及解决方法

' r2 Y0 W4 b' G( k7 x

2 o; `7 T3 w% P. l1 d3 v5 c' g" j- K" Q" O; ^

) d  U" ~: M( g0 s1 ^& G; ]
    按照帖子介绍的方法,很快就配置完成了STM32F769I DiscvoeryGUI工程。可能所用的CubeMX4.26.0版本与版主的不同,编译下载后运行结果如图1,图像显示不正常。

: G" i6 j3 S9 X% F5 n7 g) |
1.png
                             图1

; y; n" f/ b" o1 F
这个demo背景色是黑色,从图中可以看到H方向水平扫描大概只扫描了屏幕的一半400DPI,好像是从下往上扫描而不是从左往右扫描。右边的彩条是复位时留下了的。
1 F( P* F2 o# U* c' v8 F; I
针对400DPI进行分析
* f- k* ]5 j, f
步骤1
尝试将MX_LCD_Init()函数中的
hltdc.Init.AccumulatedActiveW=402改成802
hltdc.Init.TotalWidth=403改成 803;参见图6
1 x% P& n% s6 o" h9 g% {% G% e
编译运行后结果如下图2:
7 R7 b2 o" }4 i) P$ y5 z# x! v. A4 O
4 K2 f" M) A9 a1 d
2.png
                                图2

" l  F4 n' l9 ~0 _  X
H方向拉长了,W方向没有改变,问题还是没有解决。
# f) S& b3 X3 `! O& F
步骤2
回到CubeMX
% o, V" _$ L0 F! @( |, q. x
3.png
% k/ Q' i. I9 u% K( j
                        图3
$ U! O- \) O, m( B

9 P# o+ Q7 y: _6 t9 J; o: u+ d$ O
修改CubeMXLTDC Parameter参数配置将Activa width400修改成800
! R# V4 C% \& Q0 F
4.png
                                  图4

2 ?2 a, n! F+ \- t3 u! h
重新生成工程,编译下载运行,结果见图5:

  t& {+ G* x1 k6 ~8 i/ a9 p# T
5.png
                             图5

. _' G3 h* Y$ e7 j0 E' c
W方向扫描正常了,但H垂直方向坐标明显有误。

& u! T4 {: v8 l' Y, |
先小结一下:
为什么在MDK中直接修改函数参数Activa width(步骤1),改变W方向扫描无效?
而在CubeMX中(步骤2)修改Activa width生成新工程有效,改变W方向扫描有效,但H方向坐标出错?
判断:可能是CubeMX的一个BUG。大概从CubeMX中更新工程时不只更新了MX_LCD_Init()函数的内容,应该还有某个文件也更新了,但更新对象错了,可能是W坐标数据更新到H坐标数据去了
6 F5 f. {3 m0 N* s6 ~/ h
这个BUG只能靠ST专家来解决了,我们只能用修补的办法来应急使用:
既然我们从CubeMX中(步骤2)修改了ActiveWidth=800,W方向扫描就正常了,H方向扫描却错误了。
而我们在步骤1修改的:hltdc.Init.AccumulatedActiveW   和  hltdc.Init.TotalWidth 的参数可以影响H方向。
0 P0 s; `" ^7 |5 T  ^; g
修改步骤(2步)
1、先在CubeMX中修改:Activa width=800,(图4)
生成新工程(一定要生成新工程!!)。
2、然后在MDK下修改修改MX_LCD_Init()

, S* w! `! u4 J" @5 z8 a! Q8 g. W
  hltdc.Init.AccumulatedActiveW = 402;  //(原802)
  hltdc.Init.TotalWidth = 403;                 //(原803)

4 c, d/ |6 v* W+ J9 r" I
图6改成图7的参数:

- z( j4 o2 o! B+ i" L
6.png
                                图6

- P5 C+ c+ ?+ I0 E: _( z4 D
) Z/ g! V0 Y2 A% a
) N+ _, x9 u: j, H9 }
7.png
8 A: p5 @% T3 @3 s  h0 z: O1 D/ k
                               图7
; k7 c9 Q  \& c8 |$ q9 O7 \
编译、下载、运行:

( m, g7 Y4 r3 |4 T
OK!
0 D7 y2 P+ W* O
8.png
                          图8
8 L5 j+ l- s9 y5 a: J( P0 F
使用不同版本CubeMX的朋友也要试试哦!

2 f  N) N  u, R' L, j
2 F% ~& d$ o1 Y, O7 w" B0 L% x" F0 Q5 a1 A( ^7 y4 l* y

, h. U/ T0 _8 K9 ?# z6 F2 s" C7 B8 s+ f, W) Q# ?3 G+ w
收藏 评论12 发布时间:2018-7-9 13:42

举报

12个回答
wolfgang 回答时间:2018-7-9 21:55:37
wenyangzeng 发表于 2018-7-9 16:07
  `* I' h. c  r$ A9 l! lCubeMX按照图4修改后生成新的工程,图4 里的802、803在MDK里显示在图6的参数中,不改成图7就显示图5的图像 ...

4 T4 g3 {- d9 l你图3 原本就是402、403,按照图4修改为802、803后,$ a8 o( t" \9 H, F& m; o# a
后来又按照图6、图7修改会402、403
. T+ M; Z7 ?2 W这怎么在围绕打转呢?这个402、403修改来修改去,7 f, i0 ?: \$ ]" T2 m# \$ T# E

7 O( @$ U6 G5 d: D, i  o. W其实你没说到问题的重点,看我原贴后边的 补充说明( c" G9 ~! u7 }$ s+ G9 T5 o* @
针对图一,最终还是
9 u8 {" w4 |2 bOTM8009A_ORIENTATION_PORTRAIT 和 OTM8009A_ORIENTATION_LANDSCAPE 的问题
: p6 d+ C( Z, P# F$ e7 ]# m% j7 g6 y5 ~! v" e

" @9 s4 [+ h8 q. {' [1 P. i( }! H
wolfgang 回答时间:2018-7-9 14:51:28
1.jpg ( P  ^. p9 T# j
应该是某些参数没设置对造成,不过我看你的内容,之前不就是402、403?
' `8 m/ G2 m& r7 K( M- ~8 w* |& {
! O4 o; @9 J9 F7 c
我的CubeMX与你的事一样的。 4.269 i9 ^- M6 D/ M& P. f1 f3 {: O
wolfgang 回答时间:2018-7-9 14:53:18
不过还是值得恭喜,开启了 MIPI DSI学习的大门
wenyangzeng 回答时间:2018-7-9 15:04:51
wolfgang2015 发表于 2018-7-9 14:51  J: n2 j4 F9 [2 E. y
应该是某些参数没设置对造成,不过我看你的内容,之前不就是402、403?

. |( {) I. S8 O2 B8 G- W  Z( [Active=400时,底下2个是402、403 ,显示不正常
" F8 s- F/ H" LActive=800时是802,803
wolfgang 回答时间:2018-7-9 15:31:23
wenyangzeng 发表于 2018-7-9 15:04
. K% g7 l0 [# T- Y  M! e0 f' iActive=400时,底下2个是402、403 ,显示不正常
8 }: M/ f3 W# C; j% k, hActive=800时是802,803
: x" B3 v1 e; o1 t& }# |
我是说“图6改成图7的参数”这里
# R, r7 X$ W+ N7 r这不是也配置成为:402、403 , b3 R, ^+ e! f, W7 ?4 K: T1 l
wenyangzeng 回答时间:2018-7-9 16:07:46
本帖最后由 wenyangzeng 于 2018-7-9 16:14 编辑
4 I$ j( g# A, r, b' I2 c
wolfgang2015 发表于 2018-7-9 15:31
& d9 A  L* ]# w我是说“图6改成图7的参数”这里
4 y( w" o6 Y; A3 S  }8 J3 h这不是也配置成为:402、403

: U; z8 o( g6 V3 H' u9 r$ rCubeMX按照图4修改后生成新的工程,图4 里的802、803在MDK里显示在图6的参数中,不改成图7就显示图5的图像了。
wenyangzeng 回答时间:2018-7-9 22:17:09
本帖最后由 wenyangzeng 于 2018-7-9 22:19 编辑
- i3 Y( ]7 Y" r7 G8 X
wolfgang2015 发表于 2018-7-9 21:55
" R" _8 J/ a% d5 z& K! W  o你图3 原本就是402、403,按照图4修改为802、803后,8 m/ d2 l1 n, Z
后来又按照图6、图7修改会402、403; I3 C. |8 ?6 w
这怎么在围绕打 ...
, b8 S6 D# L1 b4 w( g- X
版主没有理解我的思路,那个402、403必须是在cubeMX里修改Active=800,得到802和803.生成工程后,在MDK里改回402和403.没有打转。cubeMX里不修改,没有生成新工程,在MDK里改没有用的。
/ P8 T. k2 a3 J8 I6 z! |( t9 a4 D0 O9 s, U2 |$ U) g3 P1 V, J
wolfgang 回答时间:2018-7-9 22:42:26
wenyangzeng 发表于 2018-7-9 22:17* W3 S' U8 O. V9 z, R3 Q
版主没有理解我的思路,那个402、403必须是在cubeMX里修改Active=800,得到802和803.生成工程后,在MDK里 ...
# u8 Z2 [- a0 ^/ S  j2 k' o: z8 o
对比一下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 编辑
, J0 K+ D+ N8 ]4 Y0 t
50031185 发表于 2018-7-21 09:47* d) e/ d* i& V+ s
我在用Cube 感觉也是 会出现各种奇怪的问题,很恶心,  时不时就得重新生成工程 ...

; t. u6 w& `6 M! z, e% N只要过程中某一步参数没有设置好,后面就很麻烦了。1楼链接的版主的那篇帖子很具体,可以按照贴中方法进行。& g% w2 B  g' t, J
AI++ 回答时间:2018-9-18 09:25:25
wolfgang2015 发表于 2018-7-9 21:556 b8 p* x. b& V5 `. D2 I
你图3 原本就是402、403,按照图4修改为802、803后,5 w) T1 G( O+ u& Z4 j( j
后来又按照图6、图7修改会402、403+ N6 U. G8 }7 y: v; ], C
这怎么在围绕打 ...
! Y' _% m5 J+ J+ d( @( b" V
是的,我也出现了相同问题,感觉就是方向错了,找了半天没找到地方, 最后搜索关键字找到了' L/ p+ ]4 v% i) ?; ~. [
初始化成了:& d- H9 F2 H% y. R4 f! U
OTM8009A_Init(OTM8009A_FORMAT, OTM8009A_ORIENTATION_PORTRAIT);, l: P( `+ o$ b- L7 a" p) ?
0 u5 y) n/ t" t7 x, y% q
OTM8009A_ORIENTATION_PORTRAIT  指竖屏模式  显示人像方向
8 K+ L0 w4 j1 m# w/ L/ T  j1 e. WOTM8009A_ORIENTATION_LANDSCAPE  横屏模式, 显示风景方向
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版