硬汉嵌入式论坛

 找回密码
 立即注册
查看: 6275|回复: 7
收起左侧

[emWin] 使用窗口回调函数花屏

[复制链接]

11

主题

59

回帖

11

积分

初级会员

积分
11
发表于 2014-7-11 11:28:41 | 显示全部楼层 |阅读模式
不用回调函数的时候是正常的,一但用了回调函数就花屏。

WM_SelectWindow(WM_HBKWIN);
  GUI_SetBkColor(GUI_WHITE);
  GUI_SetColor(GUI_BLACK);
  GUI_Clear();
上面这样,正常

static void _cbBk(WM_MESSAGE *pMsg)
{
  switch (pMsg->MsgId)
  {
  case WM_PAINT:
    GUI_SetBkColor(GUI_LIGHTBLUE);
    GUI_Clear();
    break;
  default:
    WM_DefaultProc(pMsg);
    break;
  }
}

一旦用了这个就花屏了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107221
QQ
发表于 2014-7-11 14:38:51 | 显示全部楼层
发个再稍完整点的,是不是你的回调函数设置有误
回复

使用道具 举报

11

主题

59

回帖

11

积分

初级会员

积分
11
 楼主| 发表于 2014-7-11 15:54:19 | 显示全部楼层
int main(void)
{
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);
  GPIO_Config();
  SRAM_Init();
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_CRC, ENABLE);
  WM_SetCreateFlags(WM_CF_MEMDEV);
  GUI_Init();
  SysTick_Config(SystemCoreClock/100);
  GUI_UC_SetEncodeUTF8();
  WM_SelectWindow(WM_HBKWIN);
  GUI_SetBkColor(GUI_BLACK);
  GUI_SetColor(GUI_WHITE);
  GUI_Clear();
  
  GUI_SetFont(&GUI_Fontas24);
  GUI_DispStringHCenterAt("正在初始化……",400,350);
  
  WM_SetCallback(WM_HBKWIN, _cbBk);
  
  while(1)
  {
    GPIOF->ODR ^= 0x0040;
    GUI_Delay(20);
  }
}
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107221
QQ
发表于 2014-7-11 15:57:49 | 显示全部楼层
这两个的位置换一下试试:  
WM_SetCreateFlags(WM_CF_MEMDEV);  
GUI_Init();
回复

使用道具 举报

11

主题

59

回帖

11

积分

初级会员

积分
11
 楼主| 发表于 2014-7-11 16:15:25 | 显示全部楼层
还是一样
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107221
QQ
发表于 2014-7-11 18:39:54 | 显示全部楼层
怀疑你的底层驱动有问题,尝试下面两种方法:
1. 在你原有的程序基础上把这个函数注释掉WM_SetCreateFlags(WM_CF_MEMDEV);  
2. 把这个函数  WM_SetCallback(WM_HBKWIN, _cbBk);去掉,换成WM_SetDesktopColor(GUI_LIGHTBLUE)试试
回复

使用道具 举报

11

主题

59

回帖

11

积分

初级会员

积分
11
 楼主| 发表于 2014-7-12 08:27:26 | 显示全部楼层
GUI_SetBkColor(GUI_LIGHTBLUE);
//  WM_SetDesktopColor(GUI_LIGHTBLUE);
  GUI_Clear();
这样正常

//  GUI_SetBkColor(GUI_LIGHTBLUE);
  WM_SetDesktopColor(GUI_LIGHTBLUE);
  GUI_Clear();
这样花屏
回复

使用道具 举报

11

主题

59

回帖

11

积分

初级会员

积分
11
 楼主| 发表于 2014-7-16 13:19:40 | 显示全部楼层
找到原因了,是底层驱动出的问题。
RA8875有的时候WAIT信号一直有效是怎么回事呢?在网上找,有人说是划线的时候起点和终点是同一个点的时候会出现RA8875一直是忙状态。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-22 08:35 , Processed in 0.170213 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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