硬汉嵌入式论坛

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

[emWin] 请教各位,STEmWin移植后窗口与控件不显示的问题

[复制链接]

3

主题

16

回帖

25

积分

新手上路

积分
25
发表于 2019-12-13 08:51:36 | 显示全部楼层 |阅读模式
请教各位高手,本人前一段时间学习移植STEmWin 5.44,现在用到了别的地方。开发平台是STM32L4R9系列单片机,之前没有外置SDRAM芯片,用的是自带的RAM,RAM容量是640Kbyte,flash是1M。我的显示屏是536*240分辨率和MIPIDSI接口。我的驱动办法是在单片机内部定义一个分辨率(300多K)大小的数组,用LTDC-DMA将数组定时发送到显示屏的GRAM上来刷新界面。画点函数就是在数组里面写数据,目前结果是写字,画框这些函数都可以正常执行,但是绘制窗口和按钮控件的时候显示不出来。定义内存是#define GUI_NUMBYTES  (1024*150),窗口很简单。在电脑上仿真是正常的,程序如下,
#include "MainTask.h"
#define ID_FRAMEWIN_0            (GUI_ID_USER + 0x00)
#define ID_BUTTON_0            (GUI_ID_USER + 0x01)
#define ID_BUTTON_1            (GUI_ID_USER + 0x02)


// USER START (Optionally insert additional defines)
// USER END

/*********************************************************************
*
*       Static data
*
**********************************************************************
*/

// USER START (Optionally insert additional static data)
// USER END

/*********************************************************************
*
*       _aDialogCreate
*/
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
  { FRAMEWIN_CreateIndirect, "Abc", ID_FRAMEWIN_0, 0, 0, 276, 118, 0, 0x0, 0 },
  { BUTTON_CreateIndirect, "Button", ID_BUTTON_0, 84, 0, 95, 59, 0, 0x0, 0 },
  { BUTTON_CreateIndirect, "Button", ID_BUTTON_1, 0, 0, 80, 20, 0, 0x0, 0 },
  // USER START (Optionally insert additional widgets)
  // USER END
};

/*********************************************************************
*
*       Static code
*
**********************************************************************
*/

// USER START (Optionally insert additional static code)
// USER END

/*********************************************************************
*
*       _cbDialog
*/
static void _cbDialog(WM_MESSAGE * pMsg) {
  WM_HWIN hItem;
  int     NCode;
  int     Id;
  // USER START (Optionally insert additional variables)
  // USER END

  switch (pMsg->MsgId) {
  case WM_INIT_DIALOG:
    //
    // Initialization of 'Abc'
    //
    hItem = pMsg->hWin;
    FRAMEWIN_SetFont(hItem, GUI_FONT_32_ASCII);
    // USER START (Optionally insert additional code for further widget initialization)
    // USER END
    break;
  case WM_NOTIFY_PARENT:
    Id    = WM_GetId(pMsg->hWinSrc);
    NCode = pMsg->Data.v;
    switch(Id) {
    case ID_BUTTON_0: // Notifications sent by 'Button'
      switch(NCode) {
      case WM_NOTIFICATION_CLICKED:
        // USER START (Optionally insert code for reacting on notification message)
        // USER END
        break;
      case WM_NOTIFICATION_RELEASED:
        // USER START (Optionally insert code for reacting on notification message)
        // USER END
        break;
      // USER START (Optionally insert additional code for further notification handling)
      // USER END
      }
      break;
    case ID_BUTTON_1: // Notifications sent by 'Button'
      switch(NCode) {
      case WM_NOTIFICATION_CLICKED:
        // USER START (Optionally insert code for reacting on notification message)
        // USER END
        break;
      case WM_NOTIFICATION_RELEASED:
        // USER START (Optionally insert code for reacting on notification message)
        // USER END
        break;
      // USER START (Optionally insert additional code for further notification handling)
      // USER END
      }
      break;
    // USER START (Optionally insert additional code for further Ids)
    // USER END
    }
    break;
  // USER START (Optionally insert additional message handling)
  // USER END
  default:
    WM_DefaultProc(pMsg);
    break;
  }
}

/*********************************************************************
*
*       Public code
*
**********************************************************************
*/
/*********************************************************************
*
*       CreateAbc
*/
WM_HWIN CreateAbc(void);
WM_HWIN CreateAbc(void) {
  WM_HWIN hWin;

  hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);
  return hWin;
}
/*
*********************************************************************************************************
*        函 数 名: MainTask
*        功能说明: GUI主函数
*        形    参: 无
*        返 回 值: 无
*********************************************************************************************************
*/
void MainTask(void)
{
       
        /* 初始化 */
        GUI_Init();
        CreateAbc();
                while(1)
        {
                GUI_Delay(500);
        }
}

回复

使用道具 举报

3

主题

16

回帖

25

积分

新手上路

积分
25
 楼主| 发表于 2019-12-13 08:59:49 | 显示全部楼层
仿真效果如图
微信图片_20191213085903.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115787
QQ
发表于 2019-12-13 09:48:58 | 显示全部楼层

方便的话,发下你的板子移植工程
回复

使用道具 举报

3

主题

16

回帖

25

积分

新手上路

积分
25
 楼主| 发表于 2019-12-13 09:59:42 | 显示全部楼层
在附件中,程序有点乱,谢谢硬汉哥

PumpIII_1.rar

35.22 MB, 下载次数: 12

回复

使用道具 举报

3

主题

16

回帖

25

积分

新手上路

积分
25
 楼主| 发表于 2019-12-13 10:13:00 | 显示全部楼层
谢谢硬汉哥指导,程序有点乱

PumpIII_1.rar

35.22 MB, 下载次数: 0

回复

使用道具 举报

3

主题

16

回帖

25

积分

新手上路

积分
25
 楼主| 发表于 2019-12-13 16:32:58 | 显示全部楼层
自己顶一下
回复

使用道具 举报

0

主题

102

回帖

102

积分

初级会员

积分
102
发表于 2019-12-13 17:04:23 | 显示全部楼层
我也碰到了
仿真界面显示正常,换到MDK后就刷不出来了
关注下
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115787
QQ
发表于 2019-12-13 22:53:48 | 显示全部楼层
zhumx6 发表于 2019-12-13 09:59
在附件中,程序有点乱,谢谢硬汉哥

好的,明天上午就帮你看下工程。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115787
QQ
发表于 2019-12-14 11:47:30 | 显示全部楼层
1、看了,你的驱动做的有问题,用MIPI接口怎么emWin底层里面用了个通用移植方法,接口里面只有一个LCD_Draw_Point(240-y,x,PixelIndex);

2、你配置的GUI_DEVICE_CreateAndLink(GUIDRV_TEMPLATE, GUICC_888, 0, 0);

但你这个函数的返回值确是16bit

static void * _GetDevData(GUI_DEVICE * pDevice, int Index)


回复

使用道具 举报

3

主题

16

回帖

25

积分

新手上路

积分
25
 楼主| 发表于 2019-12-15 17:58:16 | 显示全部楼层
eric2013 发表于 2019-12-14 11:47
1、看了,你的驱动做的有问题,用MIPI接口怎么emWin底层里面用了个通用移植方法,接口里面只有一个LCD_Draw ...

谢谢硬汉哥,请问只用一个LCD_Draw_Point影响窗口行成吗?
回复

使用道具 举报

3

主题

16

回帖

25

积分

新手上路

积分
25
 楼主| 发表于 2019-12-15 18:06:20 | 显示全部楼层
eric2013 发表于 2019-12-14 11:47
1、看了,你的驱动做的有问题,用MIPI接口怎么emWin底层里面用了个通用移植方法,接口里面只有一个LCD_Draw ...

硬汉哥,我试了你的【V6-553_STemWin实验_Window窗口控件(裸机)】例程,是可以出现窗口和按钮的,不知道什么原因
回复

使用道具 举报

3

主题

16

回帖

25

积分

新手上路

积分
25
 楼主| 发表于 2019-12-16 08:07:00 | 显示全部楼层
硬汉哥你好,请问mipi接口的移植有其他方式吗,附件中是显示屏驱动datasheet,谢谢指导

RM67162 DataSheet_V0.0_20160307.pdf

4.88 MB, 下载次数: 13

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115787
QQ
发表于 2019-12-16 08:46:53 | 显示全部楼层
zhumx6 发表于 2019-12-16 08:07
硬汉哥你好,请问mipi接口的移植有其他方式吗,附件中是显示屏驱动datasheet,谢谢指导

你用的这个型号,我记得有个官方探索板子的,是可以使用的。
回复

使用道具 举报

3

主题

16

回帖

25

积分

新手上路

积分
25
 楼主| 发表于 2019-12-16 10:09:56 | 显示全部楼层
eric2013 发表于 2019-12-16 08:46
你用的这个型号,我记得有个官方探索板子的,是可以使用的。

好的,我试试
回复

使用道具 举报

3

主题

16

回帖

25

积分

新手上路

积分
25
 楼主| 发表于 2019-12-16 10:11:15 | 显示全部楼层
eric2013 发表于 2019-12-14 11:47
1、看了,你的驱动做的有问题,用MIPI接口怎么emWin底层里面用了个通用移植方法,接口里面只有一个LCD_Draw ...

我的c语言比较菜,移植起来比较吃力,多谢
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-18 12:50 , Processed in 0.317978 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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