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

查看: 4949|回复: 4

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

[复制链接]

1182

主题

3785

回帖

1

蝴蝶豆

论坛元老

最后登录
2020-3-17
发表于 2017-3-9 10:14:03 | 显示全部楼层 |阅读模式
基于 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的用户手册可以看到很多功能的实现方法,有时候也需要结合实际的代码看下,具体功能实现方法有没有修改,根据代码需求进行一些差异化的修改。





文档下载

更多实战经验
回复

使用道具 举报

50

主题

1057

回帖

67

蝴蝶豆

论坛元老

最后登录
2020-12-2
发表于 2017-3-9 12:45:57 | 显示全部楼层
这类实战经验很有用
回复 支持 反对

使用道具 举报

1182

主题

3785

回帖

1

蝴蝶豆

论坛元老

最后登录
2020-3-17
 楼主| 发表于 2017-3-16 15:27:58 | 显示全部楼层
watershade 发表于 2017-3-9 12:45
这类实战经验很有用

谢谢支持
回复 支持 反对

使用道具 举报

13

主题

31

回帖

0

蝴蝶豆

高级会员

最后登录
2019-7-25
发表于 2017-4-21 14:12:33 | 显示全部楼层
楼主你好,针对修改宏LCD_MIRROR_X,LCD_MIRROR_Y,LCD_SWAP_XY,这是配置编译时起作用吧?
我要在程序运行中切换横竖屏,使用GUI_SetOrientation()函数总是失败,请问是啥原因呢,用的是RGB屏,也怀疑内存不够,增加缓存也不行,请问应该怎么解决呢?
回复 支持 反对

使用道具 举报

1

主题

1

回帖

0

蝴蝶豆

新手上路

最后登录
2018-8-14
发表于 2018-8-14 15:29:29 | 显示全部楼层
你好,我使用的emwin里面GUIDRV_Lin.h文件里面的宏不能用,就算用了也是报错。请问这是什么情况呢??
回复 支持 反对

使用道具 举报

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