OpenEdv-开源电子网

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

EMWIN中移动光标出现花屏

[复制链接]

1

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
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 (163.94 KB, 下载次数: 368)

QQ图片20160213223533.jpg

最佳答案

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

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

使用道具 举报

1

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2016-2-13
在线时间
16 小时
2#
 楼主| 发表于 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 ...

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

使用道具 举报

1

主题

13

帖子

0

精华

初级会员

Rank: 2

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

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

使用道具 举报

1

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2016-2-13
在线时间
16 小时
4#
 楼主| 发表于 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;

}

回复

使用道具 举报

1

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2016-2-13
在线时间
16 小时
5#
 楼主| 发表于 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;
}

回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

如发现本坛存在违规或侵权内容, 请点击这里发送邮件举报 (或致电020-38271790)。请提供侵权说明和联系方式。我们将及时审核依法处理,感谢配合。

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

GMT+8, 2026-9-25 13:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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