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

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

[复制链接]
wenyangzeng 发布时间:2018-7-9 13:42
本帖最后由 wenyangzeng 于 2018-7-10 20:20 编辑 # ], P. ^9 F3 J1 s3 @
: v& T3 F# {$ f  o3 f- Z! [  k, o
CubeMX配置STM32F769I GUI过程出现的BUG及解决方法
) z" ?+ x  a5 b! V! ~# x5 x- h
; ?' s2 ~6 V( Q& K

( O+ C: [/ |) X6 d, a; U; }7 \& G0 e% Y( L+ v' u, X. e2 W
    按照帖子介绍的方法,很快就配置完成了STM32F769I DiscvoeryGUI工程。可能所用的CubeMX4.26.0版本与版主的不同,编译下载后运行结果如图1,图像显示不正常。

9 s  w9 I$ [6 t. O7 k4 Q5 H2 y# O
1.png
                             图1
  g5 `0 ~# e5 _  b% M$ H/ Y4 ?  Z
这个demo背景色是黑色,从图中可以看到H方向水平扫描大概只扫描了屏幕的一半400DPI,好像是从下往上扫描而不是从左往右扫描。右边的彩条是复位时留下了的。
$ I7 i) `0 f& X3 w
针对400DPI进行分析

5 ~( c9 O" h' O5 ~' h
步骤1
尝试将MX_LCD_Init()函数中的
hltdc.Init.AccumulatedActiveW=402改成802
hltdc.Init.TotalWidth=403改成 803;参见图6
2 _- J" s8 I; b% G' B
编译运行后结果如下图2:

+ M$ M  m0 h) n3 C8 i1 a' O  A& M& B
2.png
                                图2

8 d* b8 R3 p; s+ ^1 H) ]* ]! J
H方向拉长了,W方向没有改变,问题还是没有解决。
; |6 D- L8 }" ~& R7 w4 m+ m
步骤2
回到CubeMX
) U8 O& s2 x/ ~+ o8 r
3.png

) I( s; |0 H. H3 J$ J& r
                        图3

( ?; k: p/ i% j1 ?& O) z) U) A4 ^5 j. k$ J( [
修改CubeMXLTDC Parameter参数配置将Activa width400修改成800
; T& f$ M( Y- i9 X. X- c$ b! E
4.png
                                  图4

  J3 W: C; Y+ @6 p/ B6 T
重新生成工程,编译下载运行,结果见图5:
7 |! B/ |" _6 G% U6 M! _. ~; A
5.png
                             图5
' c- I2 s6 z5 d' D
W方向扫描正常了,但H垂直方向坐标明显有误。

" @4 D& m; B+ k
先小结一下:
为什么在MDK中直接修改函数参数Activa width(步骤1),改变W方向扫描无效?
而在CubeMX中(步骤2)修改Activa width生成新工程有效,改变W方向扫描有效,但H方向坐标出错?
判断:可能是CubeMX的一个BUG。大概从CubeMX中更新工程时不只更新了MX_LCD_Init()函数的内容,应该还有某个文件也更新了,但更新对象错了,可能是W坐标数据更新到H坐标数据去了

2 I0 x. }; u3 _; X
这个BUG只能靠ST专家来解决了,我们只能用修补的办法来应急使用:
既然我们从CubeMX中(步骤2)修改了ActiveWidth=800,W方向扫描就正常了,H方向扫描却错误了。
而我们在步骤1修改的:hltdc.Init.AccumulatedActiveW   和  hltdc.Init.TotalWidth 的参数可以影响H方向。
2 g+ q& [" M* z5 o
修改步骤(2步)
1、先在CubeMX中修改:Activa width=800,(图4)
生成新工程(一定要生成新工程!!)。
2、然后在MDK下修改修改MX_LCD_Init()

) K, w, H3 ^) o1 E
  hltdc.Init.AccumulatedActiveW = 402;  //(原802)
  hltdc.Init.TotalWidth = 403;                 //(原803)

6 i# t% H+ f/ C& I4 G0 X. `2 s
图6改成图7的参数:
' l6 u0 H, R# n4 S+ K0 b7 Z$ N4 T% C+ \) T
6.png
                                图6

5 ~- v" W0 U$ r2 s/ M/ o6 y/ Z6 n, [: x' D" p% \& J9 h2 L' k
* Q- ]: n2 x& v* `, L  o- k
7.png
$ K$ U4 l, j( K' O  M7 ?6 G
                               图7
/ q$ U+ q' {/ {4 L. b, M
编译、下载、运行:
, ]$ V; ~' ^7 Q0 [# Y
OK!
' t4 U( Y- Q/ S# |6 i
8.png
                          图8
, y, @) I7 H+ Y$ o: i. j
使用不同版本CubeMX的朋友也要试试哦!

7 Z1 w; ?5 C3 V6 g
, P5 t8 R* Q( P+ S& g; H" P3 J4 r9 y  t) O+ l/ ^
8 _; Z+ @( B) y; T, c
2 W, ^7 Z4 k% t- E) r& p% T- Q1 k. a2 C
收藏 评论12 发布时间:2018-7-9 13:42

举报

12个回答
wolfgang 回答时间:2018-7-9 21:55:37
wenyangzeng 发表于 2018-7-9 16:07
" R1 q5 K' E. R/ ?) {& e& ICubeMX按照图4修改后生成新的工程,图4 里的802、803在MDK里显示在图6的参数中,不改成图7就显示图5的图像 ...
. W( [6 @  W: n+ l1 O% i
你图3 原本就是402、403,按照图4修改为802、803后,1 W2 ]# w1 k/ D+ H& A) W
后来又按照图6、图7修改会402、403- d& l( _# i* Q" w* q9 m( i( ^
这怎么在围绕打转呢?这个402、403修改来修改去,
6 v% h; q, _  R# e! F! X) F/ C! L& G1 n- n) m
其实你没说到问题的重点,看我原贴后边的 补充说明9 J1 W! w! z* r0 g
针对图一,最终还是
+ H/ c3 C" b; k# @3 BOTM8009A_ORIENTATION_PORTRAIT 和 OTM8009A_ORIENTATION_LANDSCAPE 的问题
+ e3 Q: @1 D+ Q# v2 I: B2 X+ N# z* D( c& O/ C# b
. J) z4 @/ j" U  r* M
wolfgang 回答时间:2018-7-9 14:51:28
1.jpg
" e+ G" B/ ~8 \4 _7 j应该是某些参数没设置对造成,不过我看你的内容,之前不就是402、403?3 T8 `' \$ U) z4 U# E$ ]

' ?2 R3 }, Q/ g- T7 A/ ]4 M( P8 ~) ?1 `
我的CubeMX与你的事一样的。 4.26
% J6 L3 t( h4 H1 _( |" a( F
wolfgang 回答时间:2018-7-9 14:53:18
不过还是值得恭喜,开启了 MIPI DSI学习的大门
wenyangzeng 回答时间:2018-7-9 15:04:51
wolfgang2015 发表于 2018-7-9 14:51
/ w9 }  H' k0 v. y9 w应该是某些参数没设置对造成,不过我看你的内容,之前不就是402、403?

" [2 k. T& Q1 [" D- d- xActive=400时,底下2个是402、403 ,显示不正常
) a8 L7 V% F( \. t+ N* ?+ ]Active=800时是802,803
wolfgang 回答时间:2018-7-9 15:31:23
wenyangzeng 发表于 2018-7-9 15:04
& J, a5 D( n+ u! o% a' l. |Active=400时,底下2个是402、403 ,显示不正常
% W; f! w# g5 I3 dActive=800时是802,803

% s/ t5 S1 F2 b4 U, L& Y我是说“图6改成图7的参数”这里7 d' |! V# ?/ C9 C: v) `
这不是也配置成为:402、403 ! M0 [9 G0 I! i5 f* L0 v# A. |
wenyangzeng 回答时间:2018-7-9 16:07:46
本帖最后由 wenyangzeng 于 2018-7-9 16:14 编辑
: e* t$ S9 W  t; l- f- _
wolfgang2015 发表于 2018-7-9 15:315 o% h5 Y/ W/ _8 ~, b
我是说“图6改成图7的参数”这里
9 }" a, X0 E! `1 m这不是也配置成为:402、403

- |) p8 B3 ^9 XCubeMX按照图4修改后生成新的工程,图4 里的802、803在MDK里显示在图6的参数中,不改成图7就显示图5的图像了。
wenyangzeng 回答时间:2018-7-9 22:17:09
本帖最后由 wenyangzeng 于 2018-7-9 22:19 编辑 1 ~) C7 W: v9 G: s; O9 Y* x
wolfgang2015 发表于 2018-7-9 21:55* d1 [% C- F) j2 h
你图3 原本就是402、403,按照图4修改为802、803后,
8 d$ z" y+ J9 n" M后来又按照图6、图7修改会402、403
9 K, _' X* p! o! R! k这怎么在围绕打 ...
1 U$ J) d4 s1 h/ i" N' b5 U( N
版主没有理解我的思路,那个402、403必须是在cubeMX里修改Active=800,得到802和803.生成工程后,在MDK里改回402和403.没有打转。cubeMX里不修改,没有生成新工程,在MDK里改没有用的。
+ D. K) _, o4 F1 ?+ L. j- I
" c4 \/ T$ r7 b- D4 i! k; s
wolfgang 回答时间:2018-7-9 22:42:26
wenyangzeng 发表于 2018-7-9 22:17
& i0 A: t" C7 x版主没有理解我的思路,那个402、403必须是在cubeMX里修改Active=800,得到802和803.生成工程后,在MDK里 ...
9 u. F( `9 @% \. f1 I- }3 }
对比一下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 编辑
6 ]$ ]! u) k7 {. J7 b
50031185 发表于 2018-7-21 09:47. J* X: V, P. p3 ^8 m: Y
我在用Cube 感觉也是 会出现各种奇怪的问题,很恶心,  时不时就得重新生成工程 ...

; i- p$ e1 n% o$ d- f. s只要过程中某一步参数没有设置好,后面就很麻烦了。1楼链接的版主的那篇帖子很具体,可以按照贴中方法进行。
- m1 x, C" ]. F3 k
AI++ 回答时间:2018-9-18 09:25:25
wolfgang2015 发表于 2018-7-9 21:553 b3 |( }% O% R8 U. D
你图3 原本就是402、403,按照图4修改为802、803后,; O& s) m3 Y4 _4 h
后来又按照图6、图7修改会402、403
( Q/ ?( ?& G9 N  ^这怎么在围绕打 ...
7 P. ^% _, x" Y0 D# d# c
是的,我也出现了相同问题,感觉就是方向错了,找了半天没找到地方, 最后搜索关键字找到了
; V% X" d% K9 ]& ^# w) n初始化成了:+ U0 k- j$ F* L6 h+ ?( A
OTM8009A_Init(OTM8009A_FORMAT, OTM8009A_ORIENTATION_PORTRAIT);
5 \8 o1 d0 v' K
" V" U/ k' v- K' G* d) aOTM8009A_ORIENTATION_PORTRAIT  指竖屏模式  显示人像方向/ E4 C4 E' V, @" I: W" K  d
OTM8009A_ORIENTATION_LANDSCAPE  横屏模式, 显示风景方向
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版