本帖最后由 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; U; }7 \& G0 e% Y( L+ v' u, X. e2 W 按照帖子介绍的方法,很快就配置完成了STM32F769I Discvoery的GUI工程。可能所用的CubeMX4.26.0版本与版主的不同,编译下载后运行结果如图1,图像显示不正常。 图1 g5 `0 ~# e5 _ b% M$ H/ Y4 ? Z这个demo背景色是黑色,从图中可以看到H方向水平扫描大概只扫描了屏幕的一半400DPI,好像是从下往上扫描而不是从左往右扫描。右边的彩条是复位时留下了的。 $ I7 i) `0 f& X3 w针对400DPI进行分析 步骤1: 尝试将MX_LCD_Init()函数中的 hltdc.Init.AccumulatedActiveW=402改成802, hltdc.Init.TotalWidth=403改成 803;参见图6 2 _- J" s8 I; b% G' B编译运行后结果如下图2: 3 C8 i1 a' O A& M& B 图2 H方向拉长了,W方向没有改变,问题还是没有解决。 ; |6 D- L8 }" ~& R7 w4 m+ m 步骤2: 回到CubeMX。 ) U8 O& s2 x/ ~+ o8 r 图3 1 ?& O) z) U) A4 ^5 j. k$ J( [ 修改CubeMX中LTDC Parameter参数配置将Activa width的400修改成800: ; T& f$ M( Y- i9 X. X- c$ b! E 图4 重新生成工程,编译下载运行,结果见图5: 7 |! B/ |" _6 G% U6 M! _. ~; A 图5 ' c- I2 s6 z5 d' DW方向扫描正常了,但H垂直方向坐标明显有误。 先小结一下: 为什么在MDK中直接修改函数参数Activa width(步骤1),改变W方向扫描无效? 而在CubeMX中(步骤2)修改Activa width生成新工程有效,改变W方向扫描有效,但H方向坐标出错? 判断:可能是CubeMX的一个BUG。大概从CubeMX中更新工程时不只更新了MX_LCD_Init()函数的内容,应该还有某个文件也更新了,但更新对象错了,可能是W坐标数据更新到H坐标数据去了。 这个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() hltdc.Init.AccumulatedActiveW = 402; //(原802) hltdc.Init.TotalWidth = 403; //(原803) 图6改成图7的参数: ' l6 u0 H, R# n4 S+ K0 b7 Z$ N4 T% C+ \) T 图6 6 n, [: x' D" p% \& J9 h2 L' k * Q- ]: n2 x& v* `, L o- k 图7 / q$ U+ q' {/ {4 L. b, M编译、下载、运行: , ]$ V; ~' ^7 Q0 [# YOK! 图8 , y, @) I7 H+ Y$ o: i. j使用不同版本CubeMX的朋友也要试试哦! 3 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 |
STM32F3DISCOVERY + UCGUI3.90A的移植(源码+视频)
STM32MP135F-DK开发板评测-Linux系统下基于gtk的计算器应用
基于STM32F746G-Discover的扩展电路板
STM32MP135F-DK开发板评测-Linux系统下的GTK计算器
【合集】STM32F7教程、资料大集合
STM32MP135F-DK开发板评测-裸机LTDC亮屏
基于STM32GUI TouchGFX 屏幕切换功能经验分享
F769 Discovery实现播放U盘音乐的播放器
STM32 VS Code Extension (在Ubuntu上开发STM32,ST官方vscode插件使用指南)
STM32 GUI开发技能分享
你图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修改来修改去,
! X) F/ C! L& G1 n- n) m
其实你没说到问题的重点,看我原贴后边的 补充说明9 J1 W! w! z* r0 g
针对图一,最终还是
OTM8009A_ORIENTATION_PORTRAIT 和 OTM8009A_ORIENTATION_LANDSCAPE 的问题
+ N# z* D( c& O/ C# b
. J) z4 @/ j" U r* M
应该是某些参数没设置对造成,不过我看你的内容,之前不就是402、403?3 T8 `' \$ U) z4 U# E$ ]
7 A/ ]4 M( P8 ~) ?1 `
我的CubeMX与你的事一样的。 4.26
Active=400时,底下2个是402、403 ,显示不正常
Active=800时是802,803
我是说“图6改成图7的参数”这里7 d' |! V# ?/ C9 C: v) `
这不是也配置成为:402、403 ! M0 [9 G0 I! i5 f* L0 v# A. |
CubeMX按照图4修改后生成新的工程,图4 里的802、803在MDK里显示在图6的参数中,不改成图7就显示图5的图像了。
版主没有理解我的思路,那个402、403必须是在cubeMX里修改Active=800,得到802和803.生成工程后,在MDK里改回402和403.没有打转。cubeMX里不修改,没有生成新工程,在MDK里改没有用的。
对比一下active=800 和active=400 其他代码呢?看看生成的代码还有什么差别~
只要过程中某一步参数没有设置好,后面就很麻烦了。1楼链接的版主的那篇帖子很具体,可以按照贴中方法进行。
是的,我也出现了相同问题,感觉就是方向错了,找了半天没找到地方, 最后搜索关键字找到了
初始化成了:+ U0 k- j$ F* L6 h+ ?( A
OTM8009A_Init(OTM8009A_FORMAT, OTM8009A_ORIENTATION_PORTRAIT);
OTM8009A_ORIENTATION_PORTRAIT 指竖屏模式 显示人像方向/ E4 C4 E' V, @" I: W" K d
OTM8009A_ORIENTATION_LANDSCAPE 横屏模式, 显示风景方向