中级会员
 
- 积分
- 273
- 金钱
- 273
- 注册时间
- 2017-7-19
- 在线时间
- 89 小时
|
1金钱
用FSMC驱动。代码也基本和原子哥的一样。
[mw_shl_code=c,true]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));
}[/mw_shl_code]
[mw_shl_code=c,true]/*读时序配置*/
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[/mw_shl_code]
|
|