请选择 进入手机版 | 继续访问电脑版

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

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

[复制链接]
zero99 提问时间:2017-3-9 10:14 /
基于 STemWin的屏幕旋转

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

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

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


查看LCDConf_stm32f429i_disco_MB1075.c中代码发现驱动程序中有如下的定义,也就是上文提到的方法二,客户基于这宏进行了修改,但是屏幕旋转功能并没有生效。
24.jpg
通过跟踪代码,发现这些宏在代码中并没有用到,所以客户在修改这些宏定义是完全不会起作用的,然后通过代码调试,发现可以通过
25.jpg
此行驱动的选择中的宏DISPLAY_DRIVER_0来设置屏幕的旋转功能也就是我们说的第三种方法,
可以找到对应的宏定义
26.jpg
可以修改宏DISPLAY_DRIVER_0 对应的参数设置成如下就查找对应的表,就可以得到相关的显示效果。 其他的宏定义在文件GUIDRV_Lin.h如下
27.jpg

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

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





文档下载

更多实战经验
收藏 1 评论4 发布时间:2017-3-9 10:14

举报

4个回答
watershade 回答时间:2017-3-9 12:45:57
这类实战经验很有用
zero99 回答时间:2017-3-16 15:27:58
watershade 发表于 2017-3-9 12:45
这类实战经验很有用

谢谢支持
xiang90721 回答时间:2017-4-21 14:12:33
楼主你好,针对修改宏LCD_MIRROR_X,LCD_MIRROR_Y,LCD_SWAP_XY,这是配置编译时起作用吧?
我要在程序运行中切换横竖屏,使用GUI_SetOrientation()函数总是失败,请问是啥原因呢,用的是RGB屏,也怀疑内存不够,增加缓存也不行,请问应该怎么解决呢?
yangxijun01 回答时间:2018-8-14 15:29:29
你好,我使用的emwin里面GUIDRV_Lin.h文件里面的宏不能用,就算用了也是报错。请问这是什么情况呢??

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版