有两种方式。一种是通过lvgl自带的软件选择。但是这个效率很慢。而且只支持90度、180度、270度的旋转。不一定达到想要的效果。我需要实现的是这种效果。软件旋转没有办法实现。旋转后会镜像过去。而且如果你的屏幕不是等比例的。比如240*240 320*320软件旋转270度或者90度后。硬件没有跟着旋转就会花屏
![](https://img-blog.csdnimg.cn/994468c9990b4c63b0b96eb922397362.png)
这里我用了硬件旋转的方式。不用lvgl自带的软件旋转
首先我默认的是横屏320*240
![](https://img-blog.csdnimg.cn/e78009cc427a48c2bbc32cf48db9f329.png)
注册到lvgl里面去。
通过调用lv_disp_drv_update这个函数来更新我驱动程序。让屏幕驱动改变刷新方向来实现横竖屏切换
直接贴代码:
![](https://img-blog.csdnimg.cn/ee27046d5d7d49b593972e8573a041cc.png)
![](https://img-blog.csdnimg.cn/155e260763a64e4f96cc2c8caae702c1.png)
这里注意当你切换屏幕方向后要及时改变屏幕驱动刷新的方向。通过在lvgl提供的将屏幕数据写入显示器的函数修改
![](https://img-blog.csdnimg.cn/556eff1c0a0143cda193ff7fe1b0ce7f.png)
![](https://img-blog.csdnimg.cn/16ddfddd4b5c449b91a86cd9a682e41c.png)
同时要注意。由于不是软件旋转。此时tp还是会维持原来的方向。所以TP这边也需要跟着旋转过来
这里是tp获取x y坐标的代码
![](https://img-blog.csdnimg.cn/c6c831e6a7cb48f7baa89ae8b3caf043.png)
效果如下:
![](https://img-blog.csdnimg.cn/c736dfecb38e41478ffac47b74256bd4.jpeg)
![](https://img-blog.csdnimg.cn/1ed9d32a5b214d6b80f3585ae081fb5e.jpeg)
视频链接:
https://live.csdn.net/v/281870