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

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

[复制链接]
wenyangzeng 发布时间:2018-7-9 13:42
本帖最后由 wenyangzeng 于 2018-7-10 20:20 编辑
0 l9 V$ r7 w; e0 a. @# ^+ y; ~# K' w" U( O) {% j! c2 n' t/ a; z' k
CubeMX配置STM32F769I GUI过程出现的BUG及解决方法

7 |* P& q! w. f- W% `

. V  `3 C  l/ m) a9 `: Q* T& A3 l  T- H5 u5 p$ k' g# B

* J' T" r: n- K  v
    按照帖子介绍的方法,很快就配置完成了STM32F769I DiscvoeryGUI工程。可能所用的CubeMX4.26.0版本与版主的不同,编译下载后运行结果如图1,图像显示不正常。

7 m& }2 C6 |2 k2 T
1.png
                             图1

$ ~) P% }9 Z0 J9 m  I
这个demo背景色是黑色,从图中可以看到H方向水平扫描大概只扫描了屏幕的一半400DPI,好像是从下往上扫描而不是从左往右扫描。右边的彩条是复位时留下了的。
6 Y' s0 m4 I9 V
针对400DPI进行分析
4 ~' B. |# o5 a6 C. L: K! @
步骤1
尝试将MX_LCD_Init()函数中的
hltdc.Init.AccumulatedActiveW=402改成802
hltdc.Init.TotalWidth=403改成 803;参见图6

3 s8 O% S' a  s2 Q5 a
编译运行后结果如下图2:
0 v+ k1 f6 o& J- C; r* ^: g

7 _7 t) ]* {" a
2.png
                                图2

. [9 f! R2 J4 z8 Y* T5 e
H方向拉长了,W方向没有改变,问题还是没有解决。

! h# K$ i' w7 ~3 A# C" v; p; N
步骤2
回到CubeMX
3 X- c: [) A* r7 R
3.png

& w! D5 ~4 V/ O8 U$ a5 E& S3 F
                        图3
9 U+ ^: T" Z4 `0 d" U

4 z* B& H/ L0 n
修改CubeMXLTDC Parameter参数配置将Activa width400修改成800

( E, L0 Z1 \2 x% N' R+ R
4.png
                                  图4
) K% Z' b4 Y/ P) l' U
重新生成工程,编译下载运行,结果见图5:
/ \- E+ Z3 D9 W# q( b
5.png
                             图5

5 C: d, m) o, V
W方向扫描正常了,但H垂直方向坐标明显有误。
% A  e! b6 v2 s" P5 W! @
先小结一下:
为什么在MDK中直接修改函数参数Activa width(步骤1),改变W方向扫描无效?
而在CubeMX中(步骤2)修改Activa width生成新工程有效,改变W方向扫描有效,但H方向坐标出错?
判断:可能是CubeMX的一个BUG。大概从CubeMX中更新工程时不只更新了MX_LCD_Init()函数的内容,应该还有某个文件也更新了,但更新对象错了,可能是W坐标数据更新到H坐标数据去了
( t" Y7 U" l5 a# j) T
这个BUG只能靠ST专家来解决了,我们只能用修补的办法来应急使用:
既然我们从CubeMX中(步骤2)修改了ActiveWidth=800,W方向扫描就正常了,H方向扫描却错误了。
而我们在步骤1修改的:hltdc.Init.AccumulatedActiveW   和  hltdc.Init.TotalWidth 的参数可以影响H方向。
9 d2 o  g% H2 X! N
修改步骤(2步)
1、先在CubeMX中修改:Activa width=800,(图4)
生成新工程(一定要生成新工程!!)。
2、然后在MDK下修改修改MX_LCD_Init()
3 t  Z- {3 W; E1 T
  hltdc.Init.AccumulatedActiveW = 402;  //(原802)
  hltdc.Init.TotalWidth = 403;                 //(原803)

$ d7 r/ O8 }' `8 }
图6改成图7的参数:
4 I# t3 C! j( H; R0 _7 E
6.png
                                图6
- c+ r7 u2 J3 t

" M$ H, ^2 \% d+ y7 J' u* ?
8 J+ ?8 B/ Q% E
7.png

7 H/ H, G7 T, {  ?  w6 t( n. N9 B) y
                               图7
# L- W) j1 C- n, ]" f4 E7 L3 k" M
编译、下载、运行:

; L: V; G  s" o# g
OK!

& _% L9 z3 }% D4 h% V; u% c
8.png
                          图8

; l8 n# k! R1 d- e; S
使用不同版本CubeMX的朋友也要试试哦!

6 m. _6 |9 a3 k( K! I8 _% [& z9 A' S1 x' S, H! W8 G3 ^

2 R/ ]( g  |8 ?6 W5 b& @- b/ c+ b4 ]. T8 x8 q0 B  Y
/ _6 J  U3 I/ i2 Z( q# S+ n9 `
收藏 评论12 发布时间:2018-7-9 13:42

举报

12个回答
wolfgang 回答时间:2018-7-9 21:55:37
wenyangzeng 发表于 2018-7-9 16:07
5 m; x0 `1 x8 K# \CubeMX按照图4修改后生成新的工程,图4 里的802、803在MDK里显示在图6的参数中,不改成图7就显示图5的图像 ...

3 K, o2 n# {3 Q: _你图3 原本就是402、403,按照图4修改为802、803后,
2 ~+ s( x0 G. t$ v4 _8 V1 R9 c后来又按照图6、图7修改会402、403
( w  t6 Z% i9 ]* E2 D这怎么在围绕打转呢?这个402、403修改来修改去,( X2 d$ o/ F' q, G+ j  p
6 Z! e' h* k. S
其实你没说到问题的重点,看我原贴后边的 补充说明
' b; Q6 u. }8 d- \4 [% v* Q9 m针对图一,最终还是 + n/ S7 I' z2 x$ s. G
OTM8009A_ORIENTATION_PORTRAIT 和 OTM8009A_ORIENTATION_LANDSCAPE 的问题
; ?5 L7 G8 q  h, ^/ V- R, q/ H( E% I
* C- P! b9 ^3 G( a9 o# U4 V% I
wolfgang 回答时间:2018-7-9 14:51:28
1.jpg 3 U) j2 \; P5 u( C5 Y
应该是某些参数没设置对造成,不过我看你的内容,之前不就是402、403?
6 [) v, N& O8 J( M" e4 Z/ @4 k; x& r2 h6 d6 x: l) h8 P

' A7 B, ~; s1 V' P我的CubeMX与你的事一样的。 4.26) p! M$ Q; J' P
wolfgang 回答时间:2018-7-9 14:53:18
不过还是值得恭喜,开启了 MIPI DSI学习的大门
wenyangzeng 回答时间:2018-7-9 15:04:51
wolfgang2015 发表于 2018-7-9 14:51
$ J- S) }2 v, x1 P应该是某些参数没设置对造成,不过我看你的内容,之前不就是402、403?
5 W5 l# a$ }9 j$ v% X  s: h
Active=400时,底下2个是402、403 ,显示不正常
; m$ c1 `1 s/ N' A9 MActive=800时是802,803
wolfgang 回答时间:2018-7-9 15:31:23
wenyangzeng 发表于 2018-7-9 15:04
5 q3 {2 P4 ?  q4 f' c" aActive=400时,底下2个是402、403 ,显示不正常
/ }. ?6 l9 p' PActive=800时是802,803

2 J3 j# E1 t% q5 h9 I3 T2 Z! z9 r我是说“图6改成图7的参数”这里( Z3 j6 R) h. {; C- @. N
这不是也配置成为:402、403   }/ F- X0 q* w; V6 y
wenyangzeng 回答时间:2018-7-9 16:07:46
本帖最后由 wenyangzeng 于 2018-7-9 16:14 编辑
& G" ~- P: H' W$ n% R! y
wolfgang2015 发表于 2018-7-9 15:31
0 h  r$ n/ O6 D" e$ l; b# y5 p1 m我是说“图6改成图7的参数”这里
1 p; I; b8 X0 J' B2 s. p) X9 [2 B这不是也配置成为:402、403

, `" ?! S( Q& W# \/ ^* Q! m- oCubeMX按照图4修改后生成新的工程,图4 里的802、803在MDK里显示在图6的参数中,不改成图7就显示图5的图像了。
wenyangzeng 回答时间:2018-7-9 22:17:09
本帖最后由 wenyangzeng 于 2018-7-9 22:19 编辑
+ t) g9 k4 \% K6 \
wolfgang2015 发表于 2018-7-9 21:55
9 P8 u$ _9 y8 }7 z" c7 s* n" T" e你图3 原本就是402、403,按照图4修改为802、803后,
5 w9 n) M# {; a: }后来又按照图6、图7修改会402、403
' \- F9 s0 c/ x) D这怎么在围绕打 ...
- k+ {8 F' a! r" S* I3 @
版主没有理解我的思路,那个402、403必须是在cubeMX里修改Active=800,得到802和803.生成工程后,在MDK里改回402和403.没有打转。cubeMX里不修改,没有生成新工程,在MDK里改没有用的。
0 ]  k- k' j6 t; f) z- e
# r  y* z0 f  x
wolfgang 回答时间:2018-7-9 22:42:26
wenyangzeng 发表于 2018-7-9 22:17& m) Q! a9 o6 R
版主没有理解我的思路,那个402、403必须是在cubeMX里修改Active=800,得到802和803.生成工程后,在MDK里 ...
7 l6 m0 G, w$ b5 A8 y
对比一下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 编辑 ' g5 y0 `: d7 s8 @# Z& q
50031185 发表于 2018-7-21 09:47- k/ F4 Z* Z# ?' W2 @- z8 W
我在用Cube 感觉也是 会出现各种奇怪的问题,很恶心,  时不时就得重新生成工程 ...
# G; G+ a2 n' A! i! D7 G0 e
只要过程中某一步参数没有设置好,后面就很麻烦了。1楼链接的版主的那篇帖子很具体,可以按照贴中方法进行。5 Y- H% c% K1 J2 O" t
KEY1 回答时间:2018-9-18 09:25:25
wolfgang2015 发表于 2018-7-9 21:550 c) B" M5 x$ B2 }3 k# [
你图3 原本就是402、403,按照图4修改为802、803后,
+ y! W' L% P0 h6 ]% {后来又按照图6、图7修改会402、403
# d  u" P3 s* }+ l# N) w" d这怎么在围绕打 ...
5 M% N& L0 A7 U" M8 X
是的,我也出现了相同问题,感觉就是方向错了,找了半天没找到地方, 最后搜索关键字找到了* R* g1 P% Z. v2 g" Y' Z# c6 ?
初始化成了:
# P; v6 q; j9 k! U! {/ TOTM8009A_Init(OTM8009A_FORMAT, OTM8009A_ORIENTATION_PORTRAIT);, g) F% Z* o7 j5 @. d( d; a( E

, J9 T9 T- i1 a4 \3 uOTM8009A_ORIENTATION_PORTRAIT  指竖屏模式  显示人像方向
) u  |; y. A+ [+ R6 @! J" _OTM8009A_ORIENTATION_LANDSCAPE  横屏模式, 显示风景方向
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版