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

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

[复制链接]
wenyangzeng 发布时间:2018-7-9 13:42
本帖最后由 wenyangzeng 于 2018-7-10 20:20 编辑
. d% e8 c$ a. Z% X& _
7 z' b+ U$ q! i& a
CubeMX配置STM32F769I GUI过程出现的BUG及解决方法

; l3 W4 I$ N, H: ^) M
, y1 n, f/ B7 l0 A
7 K0 D; C! }, q' S5 L
( ^4 H1 }2 u# J" B" B7 a
    按照帖子介绍的方法,很快就配置完成了STM32F769I Discvoery的GUI工程。可能所用的CubeMX4.26.0版本与版主的不同,编译下载后运行结果如图1,图像显示不正常。

4 K# D, _5 K: H% C
1.png
                             图1
: T: q: G( Q8 e. N) z4 v
这个demo背景色是黑色,从图中可以看到H方向水平扫描大概只扫描了屏幕的一半400DPI,好像是从下往上扫描而不是从左往右扫描。右边的彩条是复位时留下了的。
6 O7 A. \. S& I0 o1 p
针对400DPI进行分析

: |8 g0 ?7 ~! f
步骤1:
尝试将MX_LCD_Init()函数中的
hltdc.Init.AccumulatedActiveW=402改成802,
hltdc.Init.TotalWidth=403改成 803;参见图6
6 A9 P9 h) h9 b: F% f+ l9 W0 |5 w  I
编译运行后结果如下图2:
+ I) V, @+ C- [  D& c$ H! r( k

3 a) P- ^( c5 X+ r2 M
2.png
                                图2

2 @7 T: P4 F7 o) z9 M& O
H方向拉长了,W方向没有改变,问题还是没有解决。

: m, |) {/ Z- Q8 r: H8 ?( t$ ~
步骤2:
回到CubeMX。

4 x. N7 O; m  g3 ]0 |6 ^' g0 y* @6 C
3.png
7 P2 v( G+ {: J! W/ b: `3 O% l
                        图3
, u! o% c1 P- b. n6 Y$ E7 H* Z: ^1 Z
' s1 |2 B, y+ {: B* ?" X
修改CubeMX中LTDC Parameter参数配置将Activa width的400修改成800:

" ]! G- M. W( O/ g- p( c
4.png
                                  图4
3 x' O& z/ Q0 q) i) X$ C2 [2 E
重新生成工程,编译下载运行,结果见图5:

" s# f8 D* S/ r1 i0 m3 i
5.png
                             图5
3 M# I& D* B" x2 h5 U& y+ O# R
W方向扫描正常了,但H垂直方向坐标明显有误。
% v( ^+ w/ L" r( J; |' y
先小结一下:
为什么在MDK中直接修改函数参数Activa width(步骤1),改变W方向扫描无效?
而在CubeMX中(步骤2)修改Activa width生成新工程有效,改变W方向扫描有效,但H方向坐标出错?
判断:可能是CubeMX的一个BUG。大概从CubeMX中更新工程时不只更新了MX_LCD_Init()函数的内容,应该还有某个文件也更新了,但更新对象错了,可能是W坐标数据更新到H坐标数据去了。
  [7 \8 C( ?: X, h% ?6 g- ?
这个BUG只能靠ST专家来解决了,我们只能用修补的办法来应急使用:
既然我们从CubeMX中(步骤2)修改了ActiveWidth=800,W方向扫描就正常了,H方向扫描却错误了。
而我们在步骤1修改的:hltdc.Init.AccumulatedActiveW   和  hltdc.Init.TotalWidth 的参数可以影响H方向。
* M) _5 z! B$ z4 W! a& D/ r
修改步骤(2步)
1、先在CubeMX中修改:Activa width=800,(图4)
生成新工程(一定要生成新工程!!)。
2、然后在MDK下修改修改MX_LCD_Init()
6 m! W6 p- e) Y+ t5 ]& `
  hltdc.Init.AccumulatedActiveW = 402;  //(原802)
  hltdc.Init.TotalWidth = 403;                 //(原803)
. V4 W% B! ~, x
图6改成图7的参数:
+ w, ?' z: @9 y6 H
6.png
                                图6
; ~- W" y& \5 I* l# v' X

; G' x, e. }. _7 `4 W% {! |
/ t$ |% G. y3 S1 k+ }" X% s6 R9 Y
7.png

: Z& U+ d  I. t
                               图7
! H  S; s+ b$ j
编译、下载、运行:
8 s  ]' `: w6 W$ P- K( |, D3 O
OK!

" W3 g! e) M# d& _4 F
8.png
                          图8

1 Y4 g" t4 Y. z) w/ @8 w1 W" P
使用不同版本CubeMX的朋友也要试试哦!

: A- H5 E+ @. \7 u8 H- j' p3 j: R+ q2 A" k+ w9 H- v& j. _

7 }" F8 [3 z; b0 a1 v/ j* B9 v8 M2 `5 a) P5 }4 P
* a2 e/ }( K: `. ?# X3 p
赞 收藏 评论12 发布时间:2018-7-9 13:42

举报

12个回答
wolfgang 回答时间:2018-7-9 21:55:37
wenyangzeng 发表于 2018-7-9 16:07
$ D% u4 J- N, p: f* c; a7 K+ SCubeMX按照图4修改后生成新的工程,图4 里的802、803在MDK里显示在图6的参数中,不改成图7就显示图5的图像 ...
  c1 Q8 p' I& q2 c% L/ Q
你图3 原本就是402、403,按照图4修改为802、803后,7 J; m& ~. D" W' ?: b
后来又按照图6、图7修改会402、403( `1 {! B1 Y: k) A% c! d
这怎么在围绕打转呢?这个402、403修改来修改去,
5 B2 q8 r, r6 F8 G7 N; s8 G" p( w! E' \$ \4 B
其实你没说到问题的重点,看我原贴后边的 补充说明3 x+ w' X# S. z; k
针对图一,最终还是
) G; ]" m1 C. o' v& \) V* _OTM8009A_ORIENTATION_PORTRAIT 和 OTM8009A_ORIENTATION_LANDSCAPE 的问题  a8 q2 q( }) B
3 S" J+ [# }+ `4 g2 A! x

! z. O7 a) Y- p
wolfgang 回答时间:2018-7-9 14:51:28
1.jpg
" V5 x: |( }. f9 T应该是某些参数没设置对造成,不过我看你的内容,之前不就是402、403?
. p0 K2 {$ v8 u% n8 N/ B# c: d& h8 ?- e  S' d
  r2 f& ~. Z, M5 }! K- H
我的CubeMX与你的事一样的。 4.26
; M. A. |9 G# |3 k
wolfgang 回答时间:2018-7-9 14:53:18
不过还是值得恭喜,开启了 MIPI DSI学习的大门
wenyangzeng 回答时间:2018-7-9 15:04:51
wolfgang2015 发表于 2018-7-9 14:51  \- S1 ?! D% q- ?% W; G4 n0 o
应该是某些参数没设置对造成,不过我看你的内容,之前不就是402、403?
  E0 e1 m% n3 `& U, ?
Active=400时,底下2个是402、403 ,显示不正常
& q3 Z/ G* ~# ?6 q: U) kActive=800时是802,803
wolfgang 回答时间:2018-7-9 15:31:23
wenyangzeng 发表于 2018-7-9 15:04! F/ \' D# ^3 Q6 `0 f
Active=400时,底下2个是402、403 ,显示不正常
) Y. n8 Y8 ^- l: vActive=800时是802,803
* Z1 G! T( g! H0 o" Y; E+ D- ]
我是说“图6改成图7的参数”这里
) F. g8 I" ^9 r" K1 h9 a/ R- L5 B这不是也配置成为:402、403 . [4 E$ V5 n1 |2 E3 D
wenyangzeng 回答时间:2018-7-9 16:07:46
本帖最后由 wenyangzeng 于 2018-7-9 16:14 编辑
, i' @) z4 M4 J
wolfgang2015 发表于 2018-7-9 15:31; x6 D1 D7 M/ N( y2 A7 A
我是说“图6改成图7的参数”这里
' i& z4 n- G% W, C9 N+ s7 R/ d这不是也配置成为:402、403
: y3 U2 c9 N( ~3 N* F! D* j
CubeMX按照图4修改后生成新的工程,图4 里的802、803在MDK里显示在图6的参数中,不改成图7就显示图5的图像了。
wenyangzeng 回答时间:2018-7-9 22:17:09
本帖最后由 wenyangzeng 于 2018-7-9 22:19 编辑 5 K7 X" B: C- w& J% [
wolfgang2015 发表于 2018-7-9 21:55
+ _3 I3 t4 p1 B* u你图3 原本就是402、403,按照图4修改为802、803后,
) Z. W% x$ C; O  D) V' U! w1 u后来又按照图6、图7修改会402、403( n$ U; q8 c. s  z% M
这怎么在围绕打 ...
7 O' ?: T7 S5 P9 ~3 a0 D8 A' Q$ e
版主没有理解我的思路,那个402、403必须是在cubeMX里修改Active=800,得到802和803.生成工程后,在MDK里改回402和403.没有打转。cubeMX里不修改,没有生成新工程,在MDK里改没有用的。
0 @& R1 o% ]; }: K' k6 F2 T; y  N& A# I) H. f1 g! q
wolfgang 回答时间:2018-7-9 22:42:26
wenyangzeng 发表于 2018-7-9 22:17
5 V, C( z# i/ T$ h. M版主没有理解我的思路,那个402、403必须是在cubeMX里修改Active=800,得到802和803.生成工程后,在MDK里 ...

/ {5 C# r6 i! ~( \* T对比一下active=800 和active=400 其他代码呢?看看生成的代码还有什么差别~
zero99 回答时间:2018-7-16 17:12:42
谢谢分享
KEY1 回答时间:2018-7-21 09:47:46
我在用Cube 感觉也是 会出现各种奇怪的问题,很恶心,  时不时就得重新生成工程
wenyangzeng 回答时间:2018-7-21 09:57:04
本帖最后由 wenyangzeng 于 2018-7-21 09:58 编辑
" K, M$ ^: c7 P6 u; E3 K5 B
50031185 发表于 2018-7-21 09:474 m8 T2 e) L' z0 p- A3 P
我在用Cube 感觉也是 会出现各种奇怪的问题,很恶心,  时不时就得重新生成工程 ...
, H( f# }" F  i/ T
只要过程中某一步参数没有设置好,后面就很麻烦了。1楼链接的版主的那篇帖子很具体,可以按照贴中方法进行。
, V: X' x+ _* U  ?. f% ~
KEY1 回答时间:2018-9-18 09:25:25
wolfgang2015 发表于 2018-7-9 21:55
' Q  f2 Z, V- v你图3 原本就是402、403,按照图4修改为802、803后,
' J/ ~% R2 h' m+ p  E# X5 T后来又按照图6、图7修改会402、403
9 A! P% J: }+ C* E1 _$ h3 F这怎么在围绕打 ...

: X) U- S1 W9 B+ ]3 r3 z, d0 C是的,我也出现了相同问题,感觉就是方向错了,找了半天没找到地方, 最后搜索关键字找到了& }' V  C# y" O- ^( m
初始化成了:
9 ~. @* |* `, W9 POTM8009A_Init(OTM8009A_FORMAT, OTM8009A_ORIENTATION_PORTRAIT);. Q8 t. F7 W  T
/ X3 f1 }& R6 Q* ^0 q
OTM8009A_ORIENTATION_PORTRAIT  指竖屏模式  显示人像方向
; e' T) B1 U( X  [- nOTM8009A_ORIENTATION_LANDSCAPE  横屏模式, 显示风景方向

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版