|
本帖最后由 wenyangzeng 于 2018-7-10 20:20 编辑 , w2 ^& r; M7 l/ H! L8 x3 [ + O" }/ q3 K, P, f( y+ v CubeMX配置STM32F769I GUI过程出现的BUG及解决方法 - c1 ~6 M8 n- O0 b / A& u9 S4 H3 N2 A6 `$ L- A8 c& x, y \5 ^) ~1 f 按照帖子介绍的方法,很快就配置完成了STM32F769I Discvoery的GUI工程。可能所用的CubeMX4.26.0版本与版主的不同,编译下载后运行结果如图1,图像显示不正常。 ; V# |1 i# H/ @8 M0 W# K
图1 这个demo背景色是黑色,从图中可以看到H方向水平扫描大概只扫描了屏幕的一半400DPI,好像是从下往上扫描而不是从左往右扫描。右边的彩条是复位时留下了的。 针对400DPI进行分析 步骤1: 尝试将MX_LCD_Init()函数中的 hltdc.Init.AccumulatedActiveW=402改成802, hltdc.Init.TotalWidth=403改成 803;参见图6 ) ]' l! p3 x n: l j编译运行后结果如下图2:
图2 * ^! B6 s$ ~$ }. G7 @2 vH方向拉长了,W方向没有改变,问题还是没有解决。 步骤2: 回到CubeMX。
图3 . O+ N. M( J9 t4 A/ F; L8 m修改CubeMX中LTDC Parameter参数配置将Activa width的400修改成800: % G, j. F# b: L! U2 I
图4 重新生成工程,编译下载运行,结果见图5: ! ]3 U% O% O8 O2 @5 n( i" Z; b
图5 W方向扫描正常了,但H垂直方向坐标明显有误。 . E8 l. Q2 Y, q/ H8 W 先小结一下: 为什么在MDK中直接修改函数参数Activa width(步骤1),改变W方向扫描无效? 而在CubeMX中(步骤2)修改Activa width生成新工程有效,改变W方向扫描有效,但H方向坐标出错? 判断:可能是CubeMX的一个BUG。大概从CubeMX中更新工程时不只更新了MX_LCD_Init()函数的内容,应该还有某个文件也更新了,但更新对象错了,可能是W坐标数据更新到H坐标数据去了。 0 _- {' Y0 u$ s d. c这个BUG只能靠ST专家来解决了,我们只能用修补的办法来应急使用: 既然我们从CubeMX中(步骤2)修改了ActiveWidth=800,W方向扫描就正常了,H方向扫描却错误了。 而我们在步骤1修改的:hltdc.Init.AccumulatedActiveW 和 hltdc.Init.TotalWidth 的参数可以影响H方向。 修改步骤(2步) 1、先在CubeMX中修改:Activa width=800,(图4) 生成新工程(一定要生成新工程!!)。 2、然后在MDK下修改修改MX_LCD_Init() " v6 a8 G( [8 t hltdc.Init.AccumulatedActiveW = 402; //(原802) hltdc.Init.TotalWidth = 403; //(原803) 图6改成图7的参数:
图6 4 K" V' A L, q+ U" R5 k& @4 x4 B) _# F' e1 L- U
图7 7 g; F9 a) U# |2 {编译、下载、运行: + R7 `. c( m. ?6 u! N9 sOK!
图8 % }/ W- r) h% \5 A' g. u2 u% J2 l, u使用不同版本CubeMX的朋友也要试试哦! $ e+ i, ~" x5 W & _0 C9 h& \( \" r% e |
STM32F746G-DISCO移植lvgl9.0性能基准测试
直播:低成本打造高体验:STM32 GUI 图形方案直播来袭,带你解锁嵌入式界面开发新思路
STM32F745 USART1 Bootloader启动失败排查与解决的流程分析
STM32芯片命名规则
STM32 引脚到底有多少?为什么一个引脚能当好几个用?
入门嵌入式,为什么STM32是“优选起步”?
嵌入式-单片机-STM32 EXTI中断
STM32单片机进行除零运算,为何程序不崩溃?
STM32 LL为什么比HAL高效?
STM32时钟详解
微信公众号
手机版
你图3 原本就是402、403,按照图4修改为802、803后,# y+ G: A$ v& b. R8 R
后来又按照图6、图7修改会402、403
这怎么在围绕打转呢?这个402、403修改来修改去,0 H5 ]7 q6 j* U8 X3 h
- r$ V, C5 T( W0 n' }( a
其实你没说到问题的重点,看我原贴后边的 补充说明$ ?$ }$ q' a, d1 x
针对图一,最终还是 : z# N, U5 f2 G4 E/ [
OTM8009A_ORIENTATION_PORTRAIT 和 OTM8009A_ORIENTATION_LANDSCAPE 的问题, D, ^1 E6 x" z/ _7 L' ?
) m. K3 Z, H# J _1 R+ g$ P
9 C% |5 S0 i, r+ m
应该是某些参数没设置对造成,不过我看你的内容,之前不就是402、403?
0 k* M! g/ n' u& Q4 t
我的CubeMX与你的事一样的。 4.26
Active=400时,底下2个是402、403 ,显示不正常
Active=800时是802,803
我是说“图6改成图7的参数”这里
这不是也配置成为:402、403 ( [) U# u# @% t2 V
CubeMX按照图4修改后生成新的工程,图4 里的802、803在MDK里显示在图6的参数中,不改成图7就显示图5的图像了。
版主没有理解我的思路,那个402、403必须是在cubeMX里修改Active=800,得到802和803.生成工程后,在MDK里改回402和403.没有打转。cubeMX里不修改,没有生成新工程,在MDK里改没有用的。
, R( l: p" G; [
对比一下active=800 和active=400 其他代码呢?看看生成的代码还有什么差别~
只要过程中某一步参数没有设置好,后面就很麻烦了。1楼链接的版主的那篇帖子很具体,可以按照贴中方法进行。9 w1 I! | ^0 W1 |2 z
是的,我也出现了相同问题,感觉就是方向错了,找了半天没找到地方, 最后搜索关键字找到了
初始化成了:* ~* @$ V- t0 t1 k7 A
OTM8009A_Init(OTM8009A_FORMAT, OTM8009A_ORIENTATION_PORTRAIT);
) T. o. [1 ^- `: y; R- p- A+ ]! J
OTM8009A_ORIENTATION_PORTRAIT 指竖屏模式 显示人像方向5 v! u; ?' z% `1 ?1 o1 O1 B
OTM8009A_ORIENTATION_LANDSCAPE 横屏模式, 显示风景方向