打印
[信息]

【实战经验】基于 STemWin的屏幕旋转

[复制链接]
1742|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 香水城 于 2017-8-14 11:56 编辑

基于 STemWin的屏幕旋转

1前言
客户反馈利用的F429-Disco板上的STemwin的Demo程序无法实现的屏幕的0,90,180,270度的旋转。

2 问题跟进与分析
通过查看stemwin 的手册,发现有如下三种方式可以实现屏幕的旋转功能。
1) 利用GUI_SetOrientation()和相对应的宏参数GUI_MIRROR_X,GUI_MIRROR_Y,GUI_SWAP_XY

2)利用LCD_MIRROR_X,LCD_MIRROR_Y,LCD_SWAP_XY


3)可以选择不同的驱动函数GUIDRV_LIN_32,GUIDRV_LIN_OX_32等,此种方法只是基于LTDC屏的写的,所以只能用在LTDC屏,如下



查看LCDConf_stm32f429i_disco_MB1075.c中代码发现驱动程序中有如下的定义,也就是上文提到的方法二,客户基于这宏进行了修改,但是屏幕旋转功能并没有生效。

通过跟踪代码,发现这些宏在代码中并没有用到,所以客户在修改这些宏定义是完全不会起作用的,然后通过代码调试,发现可以通过

此行驱动的选择中的宏DISPLAY_DRIVER_0来设置屏幕的旋转功能也就是我们说的第三种方法,
可以找到对应的宏定义

可以修改宏DISPLAY_DRIVER_0 对应的参数设置成如下就查找对应的表,就可以得到相关的显示效果。 其他的宏定义在文件GUIDRV_Lin.h如下

4)另外客户又询问了如何在FMC屏实现GUI界面的旋转功能,查找对应的代码发现有GUI_MIRROR_X,GUI_MIRROR_Y,GUI_SWAP_XY相关的宏定义,如是用GUI_SetOrientation()函数去设置,发现不能起作用,并且此函数返回值一直是1,有看相关的资料,怀疑是为GUI分配的虚拟内存不够,但是加大内存也是返回1,查看LCDConf.c文件中的code发现有如下定义可以取代GUI_SetOrientation()函数的功能

对照表一中的参数修改即可得到对应的显示效果。

结论
在查看STemWin的用户手册可以看到很多功能的实现方法,有时候也需要结合实际的代码看下,具体功能实现方法有没有修改,根据代码需求进行一些差异化的修改。

对应的PDF基于STemwin的屏幕旋转
更多实战经验请看:【ST MCU实战经验总帖】


发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:意法半导体(中国)投资有限公司
简介:STM32技术专家

596

主题

17108

帖子

288

粉丝