中级会员
- 积分
- 358
- 金钱
- 358
- 注册时间
- 2018-8-6
- 在线时间
- 17 小时
|
1金钱
STMF407 LIL9486 移植EMWIN后鼠标异常http://www.openedv.com/forum.php ... &fromuid=113251
(出处: OpenEdv-嵌入式技术学习分享网)
用这个帖子的方法,使用ILI9486的屏 在阿波罗核心板+母版都没问题。
但是用阿波罗核心板+上自己的母版的时候,鼠标就变黑静止不动了。请看图,注意左上角的黑色鼠标(hello world 旁边),本来应该是白色的啊。查了下,鼠标打点函数打的就是0x0000的颜色(应该就是黑色吧)。程序唯一的区别就是之前用的FMC的NE1 (阿波罗母版) ,现在用的NE4(自己的母版)。求大神解答下
u32 LCD_ReadPoint(u16 x,u16 y)
{
u16 r=0,g=0,b=0;
if(x>=lcddev.width||y>=lcddev.height)return 0; //超过了范围,直接返回
LCD_SetCursor(x,y);
if(lcddev.id==0X9341||lcddev.id==0X5310||lcddev.id==0X1963||lcddev.id==0X9486)LCD_WR_REG(0X2E);//9341/3510/1963 发送读GRAM指令
else if(lcddev.id==0X5510)LCD_WR_REG(0X2E00); //5510 发送读GRAM指令
r=LCD_RD_DATA(); //dummy Read
if(lcddev.id==0X1963)return r; //1963直接读就可以
opt_delay(2);
r=LCD_RD_DATA(); //实际坐标颜色
if(lcddev.id==0X9486)return r;
//9341/NT35310/NT35510要分2次读出
opt_delay(2);
b=LCD_RD_DATA();
g=r&0XFF; //对于9341/5310/5510,第一次读取的是RG的值,R在前,G在后,各占8位
g<<=8;
return (((r>>11)<<11)|((g>>10)<<5)|(b>>11)); //ILI9341/NT35310/NT35510需要公式转换一下
}
void LCD_SetCursor(u16 Xpos, u16 Ypos)
{
if(lcddev.id==0X9341||lcddev.id==0X5310)
{
LCD_WR_REG(lcddev.setxcmd);
LCD_WR_DATA(Xpos>>8);LCD_WR_DATA(Xpos&0XFF);
LCD_WR_REG(lcddev.setycmd);
LCD_WR_DATA(Ypos>>8);LCD_WR_DATA(Ypos&0XFF);
}
else if(lcddev.id==0X9486)
{
LCD_WR_REG(lcddev.setxcmd);
LCD_WR_DATA(Xpos>>8);
LCD_WR_DATA(0x00FF&Xpos);
LCD_WR_DATA(((lcddev.width - 1) )>>8);
LCD_WR_DATA(((lcddev.width - 1) ));
//
LCD_WR_REG(lcddev.setycmd);
LCD_WR_DATA(Ypos>>8);
LCD_WR_DATA(0x00FF&Ypos);
LCD_WR_DATA(((lcddev.height - 1) )>>8);
LCD_WR_DATA(((lcddev.height - 1) ));
//LCD_WriteRAM_Prepare(); //开始写入GRAM
}
}
|
|