OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6027|回复: 7

9486 EMwin鼠标异常

[复制链接]

4

主题

28

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
358
金钱
358
注册时间
2018-8-6
在线时间
17 小时
发表于 2018-8-8 19:58:50 | 显示全部楼层 |阅读模式
1金钱
STMF407 LIL9486 移植EMWIN后鼠标异常http://www.openedv.com/forum.php ... &fromuid=113251
(出处: OpenEdv-嵌入式技术学习分享网)

用这个帖子的方法,使用ILI9486的屏 在阿波罗核心板+母版都没问题。

但是用阿波罗核心板+上自己的母版的时候,鼠标就变黑静止不动了。请看图,注意左上角的黑色鼠标(hello world 旁边),本来应该是白色的啊。查了下,鼠标打点函数打的就是0x0000的颜色(应该就是黑色吧)。程序唯一的区别就是之前用的FMC的NE1 (阿波罗母版) ,现在用的NE4(自己的母版)。求大神解答下
鼠标.jpg


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               
        }

}

最佳答案

查看完整内容[请看2#楼]

在EMWIN的驱动里 有个NE1的地址 也要改为NE4 总共要改两处地方
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

28

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
358
金钱
358
注册时间
2018-8-6
在线时间
17 小时
 楼主| 发表于 2018-8-8 19:58:51 | 显示全部楼层
h418452224 发表于 2018-8-24 09:56
楼主,问题解决了么?我是同样的问题啊。卡了两三天了。NE4改成了NE1,EMWIN战舰的汉字显示实验移植到我的板 ...

在EMWIN的驱动里  有个NE1的地址 也要改为NE4   总共要改两处地方
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2018-8-9 01:27:07 | 显示全部楼层
帮顶
回复

使用道具 举报

4

主题

28

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
358
金钱
358
注册时间
2018-8-6
在线时间
17 小时
 楼主| 发表于 2018-8-10 11:52:54 | 显示全部楼层
同样的程序,同样的“秀鼠标'的函数“        GUI_CURSOR_Show()”,使用NE1和 NE4的区别如附件图:
但我仅仅只改了
        SRAM_Handler.Init.NSBank=FMC_NORSRAM_BANK4;     //使用NE4

#define LCD_BASE        ((u32)(0x6c000000 | 0x0007FFFE));这两条语句
为什么GUI_CURSOR_Show()的示波器图会不一样?

使用FMC的NE1

使用FMC的NE1

NE4

NE4
回复

使用道具 举报

4

主题

28

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
358
金钱
358
注册时间
2018-8-6
在线时间
17 小时
 楼主| 发表于 2018-8-10 11:54:02 | 显示全部楼层

原子哥  帮忙看一下。
回复

使用道具 举报

4

主题

28

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
358
金钱
358
注册时间
2018-8-6
在线时间
17 小时
 楼主| 发表于 2018-8-10 11:56:33 | 显示全部楼层
忘记说了,黄色的是DB0,蓝色的是LCD的CS信号
回复

使用道具 举报

40

主题

259

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
459
金钱
459
注册时间
2016-5-19
在线时间
192 小时
发表于 2018-8-24 09:56:01 | 显示全部楼层
楼主,问题解决了么?我是同样的问题啊。卡了两三天了。NE4改成了NE1,EMWIN战舰的汉字显示实验移植到我的板子上,鼠标一直在最左上角,请教楼主,解决的话分享下方法,万分感谢了!!
回复

使用道具 举报

40

主题

259

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
459
金钱
459
注册时间
2016-5-19
在线时间
192 小时
发表于 2018-9-7 15:24:01 | 显示全部楼层
yangmiao0223 发表于 2018-8-8 19:58
在EMWIN的驱动里  有个NE1的地址 也要改为NE4   总共要改两处地方

是的,我已经改过来了。LCD_BASE的地址
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 08:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表