OpenEdv-开源电子网

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

EMWIN中移动光标出现花屏

[复制链接]

1

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2016-2-13
在线时间
16 小时
发表于 2016-2-13 22:40:48 | 显示全部楼层 |阅读模式
4金钱
我的触摸屏是用RA8875实现的,参考了原子哥的EMWIN文本显示例程,任务如下:
void emwindemo_task(void *p_arg)
{
      emwin_texttest();//文本测试
      GUI_CURSOR_Show(); //光标
      while(1)
      {
           GUI_Delay(100);
       }
}
下载到板子,移动光标至文本处时发现花屏,如图所示,我想问这现象是不是读点函数的问题,还是本来就是如此的,另外,调用GUI_Delay(100)时会执行一次刷黑屏操作,这也是一个搞不清楚原因的地方,望大神能提点提点~~






QQ图片20160213223533.jpg

最佳答案

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

已找到问题,确实是读点问题,执行两次读点就行了~
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2016-2-13
在线时间
16 小时
 楼主| 发表于 2016-2-13 22:40:49 | 显示全部楼层
hero779 发表于 2016-2-14 12:13
#define LCD_COMM_ADD  *((vu16 *)0x60020000)//LCD_COMM_ADD,用了FSCM方式的BANK1-BORSRAM1 驱动RA8875 ...

已找到问题,确实是读点问题,执行两次读点就行了~
回复

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2016-2-14 09:12:41 | 显示全部楼层
读点函数移植正确?是用自带的屏幕驱动还是自己的
回复

使用道具 举报

1

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2016-2-13
在线时间
16 小时
 楼主| 发表于 2016-2-14 10:36:27 | 显示全部楼层
八度空间 发表于 2016-2-14 09:12
读点函数移植正确?是用自带的屏幕驱动还是自己的

读点函数是自己写的,主要就三条语句,光标定位、读显存命令、读值,去掉这三条语句光标是有重影的了,是不是光标每移动一次都会从起始位置读出该点像素,然后移动下个位置时会把该像素点写进去。。。
回复

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2016-2-14 10:49:00 | 显示全部楼层
hero779 发表于 2016-2-14 10:36
读点函数是自己写的,主要就三条语句,光标定位、读显存命令、读值,去掉这三条语句光标是有重影的了,是 ...

贴代码
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

1

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2016-2-13
在线时间
16 小时
 楼主| 发表于 2016-2-14 11:12:37 | 显示全部楼层

/*********************************************************************
*
读点函数,红色部分是自己写的驱动,驱动确定是没问题的,读出来的像素是BGR格式,所以我的EMWIN 用的是GUICC_565
*/
static unsigned int _GetPixelIndex(GUI_DEVICE * pDevice, int x, int y) {
   unsigned int PixelIndex;
    #if (LCD_MIRROR_X == 1) || (LCD_MIRROR_Y == 1) || (LCD_SWAP_XY == 1)
      int xPhys, yPhys;

      xPhys = LOG2PHYS_X(x, y);
      yPhys = LOG2PHYS_Y(x, y);
    #else
      #define xPhys x
      #define yPhys y
    #endif
    GUI_USE_PARA(pDevice);
    GUI_USE_PARA(x);
    GUI_USE_PARA(y);
    {
   Memory_read_Coordinate(x,y);//定位光标位置
    WriteCommand(0x02);  //MRWC  REG[02h] -- Memory Read/Write Command,读显存命令
   PixelIndex=ReadData();//读像素点

    }
    #if (LCD_MIRROR_X == 0) && (LCD_MIRROR_Y == 0) && (LCD_SWAP_XY == 0)
      #undef xPhys
      #undef yPhys
    #endif
  return PixelIndex;

}

回复

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2016-2-14 11:45:15 | 显示全部楼层
hero779 发表于 2016-2-14 11:12
/*********************************************************************
*
读点函数,红色部分是自 ...

ReadData()这个函数的代码贴出来看下
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

1

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2016-2-13
在线时间
16 小时
 楼主| 发表于 2016-2-14 12:13:15 | 显示全部楼层
八度空间 发表于 2016-2-14 11:45
ReadData()这个函数的代码贴出来看下

#define LCD_COMM_ADD  *((vu16 *)0x60020000)//LCD_COMM_ADD,用了FSCM方式的BANK1-BORSRAM1 驱动RA8875,读写命令
#define LCD_DATA_ADD  *((vu16 *)0x60000000)//LCD_DATA_ADD,读写数据
/****************************************************************************
* 内联函数,读数据
****************************************************************************/
__INLINE u16 ReadData(void)
{   
return LCD_DATA_ADD;
}

回复

使用道具 举报

7

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2016-2-12
在线时间
28 小时
发表于 2016-2-15 02:16:10 | 显示全部楼层
gvsdfvdsfsadffadsfads
回复

使用道具 举报

34

主题

83

帖子

0

精华

初级会员

Rank: 2

积分
177
金钱
177
注册时间
2016-10-30
在线时间
38 小时
发表于 2017-8-10 01:23:37 | 显示全部楼层
还是有点不理解 为什么读两次才行
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

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

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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