|
用FSMC驱动的。debug发现LCD_RD_DAT();返回的数据是0。- /*------- 读数据 -------*/
- u16 LCD_RD_DAT(void)
- {
- vu16 dat;
-
- dat = LCD_DAT;
- return dat;
- }
复制代码
- u16 LCD_ReadPoint(u16 x,u16 y)//x坐标,y坐标
- {
- u16 r,g,b;
-
- /*设置点的坐标*/
- LCD_WR_CMD(LCD_CMD_COLADDR);//设置列地址
- LCD_WR_DAT_def(x>>8); //x起始地址
- LCD_WR_DAT_def(x&0x00ff);
- LCD_WR_DAT_def(x>>8); //x结束地址
- LCD_WR_DAT_def(x&0x00ff);
-
- LCD_WR_CMD(LCD_CMD_ROWADDR);//设置行地址
- LCD_WR_DAT_def(y>>8); //y起始地址
- LCD_WR_DAT_def(y&0x00ff);
- LCD_WR_DAT_def(y>>8); //y结束地址
- LCD_WR_DAT_def(y&0x00ff);
-
- LCD_WR_CMD(LCD_CMD_GRAM);
-
-
- LCD_RD_DAT(); //读GRAM时,第一次读出数据是无效的
- lcddelay_us(2);
-
- r = LCD_RD_DAT();//接下来读出的是RG值,R在前,G在后,各占8位
- lcddelay_us(2);
- b = LCD_RD_DAT();//蓝色值
- g = (r & 0x00ff) << 8;//绿色值
-
- return ((r & ~0x07ff) | ((g & ~0x03ff) >> 5) | (b >> 11));
- }
复制代码- /*读时序配置*/
- readwriteTiming.FSMC_AddressSetupTime = 1;//ADDSET地址建立(保持)时间为1+1个HCLK,RD保持高电平的时间
- readwriteTiming.FSMC_AddressHoldTime = 0; //ADDHLD地址保持时间,A模式未使用到,给0即可
- readwriteTiming.FSMC_DataSetupTime = 15; //DATAST数据建立(保持)时间为15+1个HCLK,RD保持低电平的时间
- readwriteTiming.FSMC_BusTurnAroundDuration = 0;
- readwriteTiming.FSMC_CLKDivision = 0; //时钟不分割
- readwriteTiming.FSMC_DataLatency = 0;
- readwriteTiming.FSMC_AccessMode = FSMC_AccessMode_A;//访问模式,使用模式A
复制代码
|
|