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

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

[复制链接]
wenyangzeng 发布时间:2018-7-9 13:42
本帖最后由 wenyangzeng 于 2018-7-10 20:20 编辑 % P' W9 I1 c6 C4 u9 V* X* x4 V

1 H1 l: F$ V8 y, U. e
CubeMX配置STM32F769I GUI过程出现的BUG及解决方法
  {% _" _3 @# r6 a. x& B, q
' C  ]/ B; V1 j8 K$ f3 a( {
; K* d7 A- X3 Z, @
" x1 h* M# q1 a1 v5 p9 C$ s- Z
    按照帖子介绍的方法,很快就配置完成了STM32F769I DiscvoeryGUI工程。可能所用的CubeMX4.26.0版本与版主的不同,编译下载后运行结果如图1,图像显示不正常。

" N* j3 A% c. O; t
1.png
                             图1
! Q/ G+ |  x: O# K) t5 s6 J
这个demo背景色是黑色,从图中可以看到H方向水平扫描大概只扫描了屏幕的一半400DPI,好像是从下往上扫描而不是从左往右扫描。右边的彩条是复位时留下了的。

9 @2 T. s: y" f3 b" J$ `8 C
针对400DPI进行分析

1 U+ A; W9 Z3 y, {8 X
步骤1
尝试将MX_LCD_Init()函数中的
hltdc.Init.AccumulatedActiveW=402改成802
hltdc.Init.TotalWidth=403改成 803;参见图6
( |" j$ E) d" D# K2 X
编译运行后结果如下图2:

7 F3 ~4 ]2 S) |3 ^
( N: }4 K' g/ f. t
2.png
                                图2

# A4 w5 j9 b7 ?& j
H方向拉长了,W方向没有改变,问题还是没有解决。

2 Q6 {1 M# I) B. H/ q
步骤2
回到CubeMX

- u3 S0 v5 r2 J( }7 N" g
3.png

  ^, o/ A2 R+ ~1 z' l
                        图3
7 g+ D3 _6 }" b; A% ^
% K* s. V9 L0 w/ N4 Z1 J
修改CubeMXLTDC Parameter参数配置将Activa width400修改成800
7 a: i: O8 M9 K$ L% b
4.png
                                  图4
7 h( C1 S+ J, C
重新生成工程,编译下载运行,结果见图5:
0 t  n' U- l0 j- R& ]
5.png
                             图5

8 X$ y. N+ q0 G
W方向扫描正常了,但H垂直方向坐标明显有误。

5 x8 g6 b5 `' A# Q/ d; M$ W9 G7 y
先小结一下:
为什么在MDK中直接修改函数参数Activa width(步骤1),改变W方向扫描无效?
而在CubeMX中(步骤2)修改Activa width生成新工程有效,改变W方向扫描有效,但H方向坐标出错?
判断:可能是CubeMX的一个BUG。大概从CubeMX中更新工程时不只更新了MX_LCD_Init()函数的内容,应该还有某个文件也更新了,但更新对象错了,可能是W坐标数据更新到H坐标数据去了

, S6 W  J' U: o$ h( m9 d
这个BUG只能靠ST专家来解决了,我们只能用修补的办法来应急使用:
既然我们从CubeMX中(步骤2)修改了ActiveWidth=800,W方向扫描就正常了,H方向扫描却错误了。
而我们在步骤1修改的:hltdc.Init.AccumulatedActiveW   和  hltdc.Init.TotalWidth 的参数可以影响H方向。
7 p# c- B2 N0 L0 ]; H7 U
修改步骤(2步)
1、先在CubeMX中修改:Activa width=800,(图4)
生成新工程(一定要生成新工程!!)。
2、然后在MDK下修改修改MX_LCD_Init()
. G1 k3 W9 K. R/ O
  hltdc.Init.AccumulatedActiveW = 402;  //(原802)
  hltdc.Init.TotalWidth = 403;                 //(原803)

3 a' _& j) ~/ H3 K
图6改成图7的参数:

) E. a$ l# d) \/ `
6.png
                                图6
' C  ^6 F* m: e. P( h
* M0 F! U% P  Z+ y# |3 }  k- r1 w+ \
2 [5 I! k9 y& g+ j, k2 g. U
7.png
2 V5 t/ u" F6 x% m
                               图7

1 I- `( M# ?& L  a7 o' }
编译、下载、运行:

, @" U. Q; r0 W8 t- E3 p+ d
OK!
" p3 P3 x2 R2 c# v" {" s0 J
8.png
                          图8
8 g% q6 ?5 j! |
使用不同版本CubeMX的朋友也要试试哦!

3 C) J0 v$ w. H( N, B
! f: ]8 f0 U( j7 ~$ u) I* T. i7 H- o9 a

( s  n" d5 v% G' Z0 Y9 n
% `) @. b' \! s. z' g. f4 Y0 L0 q0 j
收藏 评论12 发布时间:2018-7-9 13:42

举报

12个回答
wolfgang 回答时间:2018-7-9 21:55:37
wenyangzeng 发表于 2018-7-9 16:07" l7 Q- E  u. W- h. M
CubeMX按照图4修改后生成新的工程,图4 里的802、803在MDK里显示在图6的参数中,不改成图7就显示图5的图像 ...

/ o6 \# k7 w. C" d8 l8 w你图3 原本就是402、403,按照图4修改为802、803后,  Q' c2 }- K3 A5 @2 S
后来又按照图6、图7修改会402、403+ C7 m6 s2 u% h, H0 a
这怎么在围绕打转呢?这个402、403修改来修改去,
9 |8 S, F; b& ?8 S" T; u% V) C; L9 r% ^* M9 h. g, x& p' b. }# X& i3 N
其实你没说到问题的重点,看我原贴后边的 补充说明
0 `! x( U2 T( G! o. G0 g针对图一,最终还是 1 w/ y% V9 V- N4 A! Z
OTM8009A_ORIENTATION_PORTRAIT 和 OTM8009A_ORIENTATION_LANDSCAPE 的问题+ z2 z* E, _9 X; K

% i! K: h. E/ t. L3 \- M
; G1 v$ j2 x1 h: D
wolfgang 回答时间:2018-7-9 14:51:28
1.jpg / Z2 z5 E1 ]3 M) g. F: b7 t0 {+ V
应该是某些参数没设置对造成,不过我看你的内容,之前不就是402、403?7 a9 \/ c, C; k% y) i
+ V. Q& Z6 ?7 y
# ~/ t% E& U1 K# ~
我的CubeMX与你的事一样的。 4.26
1 P1 q. Y4 i4 s5 U
wolfgang 回答时间:2018-7-9 14:53:18
不过还是值得恭喜,开启了 MIPI DSI学习的大门
wenyangzeng 回答时间:2018-7-9 15:04:51
wolfgang2015 发表于 2018-7-9 14:510 g2 I/ T+ i' l9 ?
应该是某些参数没设置对造成,不过我看你的内容,之前不就是402、403?

7 w8 H9 h: N- [$ G: J: m3 ~% DActive=400时,底下2个是402、403 ,显示不正常7 E+ C/ H6 h; |% {1 A0 o: l0 D/ }$ b% _
Active=800时是802,803
wolfgang 回答时间:2018-7-9 15:31:23
wenyangzeng 发表于 2018-7-9 15:04
9 C2 p3 c* w3 I9 YActive=400时,底下2个是402、403 ,显示不正常) Q! |+ E1 z6 v' I- A( R. \
Active=800时是802,803

% S5 G4 J: [9 P我是说“图6改成图7的参数”这里
6 {& y/ D2 g, E: E6 U& g这不是也配置成为:402、403
, D0 t( [5 n8 C' i' E7 j4 `  P
wenyangzeng 回答时间:2018-7-9 16:07:46
本帖最后由 wenyangzeng 于 2018-7-9 16:14 编辑
9 n4 Z# C1 `, n& {' b/ w
wolfgang2015 发表于 2018-7-9 15:31; z8 F8 @% q4 j6 |. f7 k
我是说“图6改成图7的参数”这里
+ ^& H8 h2 F1 U5 P6 J% W6 Q这不是也配置成为:402、403
; W- a5 e9 m) p
CubeMX按照图4修改后生成新的工程,图4 里的802、803在MDK里显示在图6的参数中,不改成图7就显示图5的图像了。
wenyangzeng 回答时间:2018-7-9 22:17:09
本帖最后由 wenyangzeng 于 2018-7-9 22:19 编辑 * D% r* ]3 o4 u9 w; G3 S' Q
wolfgang2015 发表于 2018-7-9 21:55
1 _- r' z3 c: [( T$ x1 T$ K你图3 原本就是402、403,按照图4修改为802、803后,& O: u' L9 D( B8 b
后来又按照图6、图7修改会402、403* c# |5 H* D- h0 H
这怎么在围绕打 ...

8 g2 r/ D+ C3 |5 J8 h* c版主没有理解我的思路,那个402、403必须是在cubeMX里修改Active=800,得到802和803.生成工程后,在MDK里改回402和403.没有打转。cubeMX里不修改,没有生成新工程,在MDK里改没有用的。, I. ?) H4 B) Q# `$ e
: ]% o0 K$ n% Z! u5 ]1 x0 y& J* ?: }) I
wolfgang 回答时间:2018-7-9 22:42:26
wenyangzeng 发表于 2018-7-9 22:17
; d4 U8 y0 |% k1 M. I4 J版主没有理解我的思路,那个402、403必须是在cubeMX里修改Active=800,得到802和803.生成工程后,在MDK里 ...
/ z9 x5 a) [7 `
对比一下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 编辑   q# F  A2 Y0 D' B3 V$ ]" N: K
50031185 发表于 2018-7-21 09:47
- G( Y! D$ P& Y+ i+ j/ r我在用Cube 感觉也是 会出现各种奇怪的问题,很恶心,  时不时就得重新生成工程 ...

1 Z' F4 ^: Z" i5 P只要过程中某一步参数没有设置好,后面就很麻烦了。1楼链接的版主的那篇帖子很具体,可以按照贴中方法进行。
) o  K+ O4 ^) L
AI++ 回答时间:2018-9-18 09:25:25
wolfgang2015 发表于 2018-7-9 21:55# W0 A& T1 q3 A
你图3 原本就是402、403,按照图4修改为802、803后,
$ [. `5 C3 U9 c1 m6 H后来又按照图6、图7修改会402、403
" i( Y! d: F: h' h' r- k3 ?  N这怎么在围绕打 ...
  J! k1 ]: q. ^% U; o
是的,我也出现了相同问题,感觉就是方向错了,找了半天没找到地方, 最后搜索关键字找到了/ `7 x8 w; j% l- Q/ W: |
初始化成了:5 H6 t; N  y* `
OTM8009A_Init(OTM8009A_FORMAT, OTM8009A_ORIENTATION_PORTRAIT);
* h3 T4 d8 }# v6 w$ h6 Y/ D$ [! @% h$ \# t
OTM8009A_ORIENTATION_PORTRAIT  指竖屏模式  显示人像方向
+ f/ S- ]. j* I8 Q/ oOTM8009A_ORIENTATION_LANDSCAPE  横屏模式, 显示风景方向
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版