打开TFT_eSPI/TFT_Drivers/GC9A01_Rotation.h (其他屏幕驱动同理)
用以下代码覆盖
// This is the command sequence that rotates the GC9A01 driver coordinate frame
rotation = m % 5;
writecommand(TFT_MADCTL);
switch (rotation) {
case 0: // Portrait
writedata(TFT_MAD_BGR);
_width = _init_width;
_height = _init_height;
break;
case 1: // Landscape (Portrait + 90)
writedata(TFT_MAD_MX | TFT_MAD_MV | TFT_MAD_BGR);
_width = _init_height;
_height = _init_width;
break;
case 2: // Inverter portrait
writedata(TFT_MAD_MX | TFT_MAD_MY | TFT_MAD_BGR);
_width = _init_width;
_height = _init_height;
break;
case 3: // Inverted landscape
writedata(TFT_MAD_MV | TFT_MAD_MY | TFT_MAD_BGR);
_width = _init_height;
_height = _init_width;
break;
/****添加case4**********/
case 4:
writedata(TFT_MAD_MY | TFT_MAD_BGR);// 设置镜像旋转
_width = _init_width;
_height = _init_height;
break;
}
观察到,此代码将rotation = m % 4;
改为了rotation = m % 5;
并且添加了case 4:
选项
writedata()
后选项含义:
TFT_MAD_BGR不解释,遇到镜像后RB翻转就加上
镜像前:
TFT_MAD_MX沿Y轴翻转
TFT_MAD_MY沿X轴翻转
TFT_MAD_MV沿Y轴翻转并顺时针旋转270
TFT_MAD_ML沿X轴翻转 (与TFT_MAD_MY作用相同,暂不清楚作用)
可以看到,原代码中就是用了TFT_MAD_MX
TFT_MAD_MY
TFT_MAD_MV
TFT_MAD_ML
用|
连接
实现了90,180,270的旋转