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

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

[复制链接]
wenyangzeng 发布时间:2018-7-9 13:42
本帖最后由 wenyangzeng 于 2018-7-10 20:20 编辑
0 \* }& F* b. q4 D, k2 M  n, r' G% A& Y+ X" E( @2 B
CubeMX配置STM32F769I GUI过程出现的BUG及解决方法

  \- b" {8 r' \; T
& F! ^% ?! M- b4 d8 z3 `4 o) m1 Y

( J$ E+ g$ z6 J" o9 U8 G/ r$ t) e- c+ X2 E6 v/ I% C/ I. f
    按照帖子介绍的方法,很快就配置完成了STM32F769I DiscvoeryGUI工程。可能所用的CubeMX4.26.0版本与版主的不同,编译下载后运行结果如图1,图像显示不正常。
) H: s( f0 ]- C3 r8 d# f6 D  n/ N
1.png
                             图1
7 `' U  E0 p+ S6 o' _
这个demo背景色是黑色,从图中可以看到H方向水平扫描大概只扫描了屏幕的一半400DPI,好像是从下往上扫描而不是从左往右扫描。右边的彩条是复位时留下了的。
# x: `- y9 @' E' a
针对400DPI进行分析
; {, H( M0 s6 W0 g  z, a( H
步骤1
尝试将MX_LCD_Init()函数中的
hltdc.Init.AccumulatedActiveW=402改成802
hltdc.Init.TotalWidth=403改成 803;参见图6

) N9 t5 z+ J- F& @
编译运行后结果如下图2:
/ L/ K- p; U/ \1 q! p( g7 g
3 ~) i+ S2 c# }% N  x# {, E
2.png
                                图2
. F8 O: I  ]# [
H方向拉长了,W方向没有改变,问题还是没有解决。
8 L2 O' [% h7 z8 e! q! \4 j. _
步骤2
回到CubeMX
  y, U$ S$ Z5 l1 ?
3.png
# H, `. e3 o* ~; i
                        图3

  C; ]) m5 J  C9 `; _; t! g  K
+ ^9 j( j% P) }7 I# A! ?
修改CubeMXLTDC Parameter参数配置将Activa width400修改成800
4 |, `8 L# O- Z' t
4.png
                                  图4

5 u0 J/ j6 T* t" K
重新生成工程,编译下载运行,结果见图5:
, d. Z( L  w( G
5.png
                             图5
# Y2 y& ]6 l/ |9 }( @; I2 e
W方向扫描正常了,但H垂直方向坐标明显有误。
$ Z* J9 p/ f+ ]: i6 e5 N
先小结一下:
为什么在MDK中直接修改函数参数Activa width(步骤1),改变W方向扫描无效?
而在CubeMX中(步骤2)修改Activa width生成新工程有效,改变W方向扫描有效,但H方向坐标出错?
判断:可能是CubeMX的一个BUG。大概从CubeMX中更新工程时不只更新了MX_LCD_Init()函数的内容,应该还有某个文件也更新了,但更新对象错了,可能是W坐标数据更新到H坐标数据去了

0 n+ k' T  e6 u8 ^
这个BUG只能靠ST专家来解决了,我们只能用修补的办法来应急使用:
既然我们从CubeMX中(步骤2)修改了ActiveWidth=800,W方向扫描就正常了,H方向扫描却错误了。
而我们在步骤1修改的:hltdc.Init.AccumulatedActiveW   和  hltdc.Init.TotalWidth 的参数可以影响H方向。

" A, ]9 \( r- A' z  }" O
修改步骤(2步)
1、先在CubeMX中修改:Activa width=800,(图4)
生成新工程(一定要生成新工程!!)。
2、然后在MDK下修改修改MX_LCD_Init()
/ ~/ A$ s* D  T, i( {
  hltdc.Init.AccumulatedActiveW = 402;  //(原802)
  hltdc.Init.TotalWidth = 403;                 //(原803)

0 V" ~5 h5 D; u6 B% |
图6改成图7的参数:
, \9 k! \. Y) a, h! R/ B
6.png
                                图6

, g" ~7 F0 D$ ?: g1 L1 H& u
+ k9 w6 w; w' R; o" x2 _! f; P& H) o) Z( v% N" i2 T- [
7.png
- B5 E+ h6 h5 G: w# H* b
                               图7
: p6 K& @0 |* b: y( Y+ h
编译、下载、运行:

7 i7 ?) E( e  P0 [: F
OK!
) D$ W: A" k$ t( @: z% H' U7 b
8.png
                          图8

, P3 \7 C2 l; E; x; U3 r( J6 K
使用不同版本CubeMX的朋友也要试试哦!
  r; A" ^  o0 T7 o/ e& ]* w4 L
1 X9 m& D/ n7 `" O) j

/ U. J/ p! [' b" B; X$ H; q" r: t

, |: o4 I0 _! m. p
收藏 评论12 发布时间:2018-7-9 13:42

举报

12个回答
wolfgang 回答时间:2018-7-9 21:55:37
wenyangzeng 发表于 2018-7-9 16:07
5 M7 _& W' [2 cCubeMX按照图4修改后生成新的工程,图4 里的802、803在MDK里显示在图6的参数中,不改成图7就显示图5的图像 ...
6 L! @& }; L# D8 T, z
你图3 原本就是402、403,按照图4修改为802、803后,' F5 O& z4 n! S$ k1 t; H
后来又按照图6、图7修改会402、4037 E, M, i* n" G9 t& i
这怎么在围绕打转呢?这个402、403修改来修改去,7 ^( Z: d' @1 L8 a
. L' V; i! Z& [4 ^- {( B* ]' [
其实你没说到问题的重点,看我原贴后边的 补充说明9 b( S" R/ j  I. n% j* p
针对图一,最终还是
+ q) z& R/ B$ D) H1 j1 pOTM8009A_ORIENTATION_PORTRAIT 和 OTM8009A_ORIENTATION_LANDSCAPE 的问题
8 W: |7 e+ c0 g+ x% l) ~
3 g' q/ [  K6 h# P
- R) A4 d! |+ m4 H: ~& t% ^6 z! J
wolfgang 回答时间:2018-7-9 14:51:28
1.jpg , ^; m! J( t$ B6 o" [7 a* D0 }
应该是某些参数没设置对造成,不过我看你的内容,之前不就是402、403?
. P* r( }$ p( y1 Q3 a
' U& e- B" s4 v$ R$ T5 R4 M& B. ~  d) Y, E# m, H
我的CubeMX与你的事一样的。 4.26
& R* s- O. V1 Y, ?4 z
wolfgang 回答时间:2018-7-9 14:53:18
不过还是值得恭喜,开启了 MIPI DSI学习的大门
wenyangzeng 回答时间:2018-7-9 15:04:51
wolfgang2015 发表于 2018-7-9 14:51
, H" i# R4 }" E" z应该是某些参数没设置对造成,不过我看你的内容,之前不就是402、403?

; U+ k6 Y  h8 |7 F; q" rActive=400时,底下2个是402、403 ,显示不正常
) I9 {9 S2 @  V7 T6 rActive=800时是802,803
wolfgang 回答时间:2018-7-9 15:31:23
wenyangzeng 发表于 2018-7-9 15:04
+ P$ {/ t# X4 `Active=400时,底下2个是402、403 ,显示不正常
. i% c+ f1 |. _1 @* o% d  G2 xActive=800时是802,803

- ^* O6 A' v- `5 }我是说“图6改成图7的参数”这里
( c4 h7 K; z  e这不是也配置成为:402、403
& k& Y. p! r  X2 ]% E
wenyangzeng 回答时间:2018-7-9 16:07:46
本帖最后由 wenyangzeng 于 2018-7-9 16:14 编辑
! q* r% @9 C0 V& Q0 I) R( \$ O( n
wolfgang2015 发表于 2018-7-9 15:31
, E- U* b" @8 R! W6 J- D我是说“图6改成图7的参数”这里# a/ r1 f5 t) c6 A4 U, O+ B) s
这不是也配置成为:402、403

6 {7 J# M/ D! ?; E, d% N( oCubeMX按照图4修改后生成新的工程,图4 里的802、803在MDK里显示在图6的参数中,不改成图7就显示图5的图像了。
wenyangzeng 回答时间:2018-7-9 22:17:09
本帖最后由 wenyangzeng 于 2018-7-9 22:19 编辑 0 X. ?3 }& Q- X" o( c7 @: Y
wolfgang2015 发表于 2018-7-9 21:55
# R3 p  s3 a9 r: v- v9 X4 }" C你图3 原本就是402、403,按照图4修改为802、803后,. ~; b# ~6 |. t& V3 l. a. N9 I
后来又按照图6、图7修改会402、403
, V- @( P$ s, d- W8 a这怎么在围绕打 ...

( s9 U& L+ }' Y; M# p. L版主没有理解我的思路,那个402、403必须是在cubeMX里修改Active=800,得到802和803.生成工程后,在MDK里改回402和403.没有打转。cubeMX里不修改,没有生成新工程,在MDK里改没有用的。
+ j$ S, k. v1 [& K
% h" v3 _6 {! f6 h  s! F
wolfgang 回答时间:2018-7-9 22:42:26
wenyangzeng 发表于 2018-7-9 22:173 J# P' h& e: v. c3 C
版主没有理解我的思路,那个402、403必须是在cubeMX里修改Active=800,得到802和803.生成工程后,在MDK里 ...

" c8 E+ s, h) Y' I. w7 `对比一下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 编辑
. V( [/ G' ]& t0 c0 z
50031185 发表于 2018-7-21 09:47+ f. _8 n9 ~# w5 P8 q
我在用Cube 感觉也是 会出现各种奇怪的问题,很恶心,  时不时就得重新生成工程 ...

! n/ K( c7 C* A* [# B5 \+ O9 q只要过程中某一步参数没有设置好,后面就很麻烦了。1楼链接的版主的那篇帖子很具体,可以按照贴中方法进行。/ q+ A% @5 g# Y) W% ^0 v) y
AI++ 回答时间:2018-9-18 09:25:25
wolfgang2015 发表于 2018-7-9 21:55
/ Y5 @! K1 r; U4 |你图3 原本就是402、403,按照图4修改为802、803后,) g8 Q/ Z2 l2 i2 O, Z9 U* L
后来又按照图6、图7修改会402、403! J- f% C- r6 R8 D
这怎么在围绕打 ...

. U7 I9 H$ l  P' l$ B5 T是的,我也出现了相同问题,感觉就是方向错了,找了半天没找到地方, 最后搜索关键字找到了  w) |8 N& Z# k" n- m# f+ r
初始化成了:
) ~  f7 a- P' \4 x& pOTM8009A_Init(OTM8009A_FORMAT, OTM8009A_ORIENTATION_PORTRAIT);: J8 i- |4 S0 k% l* O( e/ n7 s. q
! D5 h* |; Y9 D8 P/ b( N7 q
OTM8009A_ORIENTATION_PORTRAIT  指竖屏模式  显示人像方向
; k" ^/ B4 i; |3 L$ ?: xOTM8009A_ORIENTATION_LANDSCAPE  横屏模式, 显示风景方向
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版