最近移植了ucGUI ,发现触摸光标会拖影,初步怀疑是读点函数有问题,查了datasheet,在8位模式下读GRAM 前两次是dummy,从第三次开始读出高8位,第4次是低八位,程序也查此写了,就是不行。求高手赐教。感谢!下面是我的读点函数。
我使用的是8位模式,ILI9235的数据线只有DB0-DB7,分别接GPIOB的p0-p7口。买的ILI9235模块就是八位,没有DB8-DB15管脚.
原子大哥,求帮助!
unsigned int LCD_L0_GetPixelIndex(int x, int y)
{
u16 temp;
Clr_Cs;
Clr_Rs;
Set_nRd;
GPIOB->ODR = 0x0000;
Clr_nWr;
Set_nWr;
GPIOB->ODR = 0x0020;
Clr_nWr;
Set_nWr;
Set_Rs;
Set_nRd;
GPIOB->ODR = y>>8;
Clr_nWr;
Set_nWr;
GPIOB->ODR = y;
Clr_nWr;
Set_nWr;
Clr_Rs;
Set_nRd;
GPIOB->ODR = 0x0000;
Clr_nWr;
Set_nWr;
GPIOB->ODR = 0x0021;
Clr_nWr;
Set_nWr;
Set_Rs;
Set_nRd;
GPIOB->ODR = (319-x)>>8; //我使用的是横屏模式
Clr_nWr;
Set_nWr;
GPIOB->ODR = (319-x);
Clr_nWr;
Set_nWr;
Clr_Rs;
Set_nRd;
GPIOB->ODR = 0x0000;
Clr_nWr;
Set_nWr;
GPIOB->ODR = 0x0022;
Clr_nWr;
Set_nWr;
GPIOB->CRL=0X88888888; //PB0-7 上拉输入
GPIOB->ODR=0X00FF; //全部输出高
Set_Rs;
Clr_nRd;
Set_nRd;
Clr_nRd;
Set_nRd;
Clr_nRd;
Set_nRd;
temp = GPIOB->IDR;
temp =temp<<8;
Clr_nRd;
Set_nRd;
temp|= GPIOB->IDR;
GPIOB->CRL=0X33333333; //PB0-7 上拉输出
GPIOB->ODR=0X00FF; //全部输出高
return (((temp) & 0x1f)<<11) + (((temp>>5) & 0x3f)<<5) + (((temp>>11) & 0x1f)); //转换成RGB数据
} |