硬汉嵌入式论坛

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

[emWin] 有关于STEMWIN 的菜单(MENU) 操作问题,不知是否是BUG

[复制链接]

2

主题

16

回帖

22

积分

新手上路

积分
22
发表于 2015-10-16 16:09:20 | 显示全部楼层 |阅读模式
实例用的模拟器里面的NEMU 例程进行更改的。

  case WM_MENU:
    pData = (MENU_MSG_DATA*)pMsg->Data.p;
    switch (pData->MsgType) {
    case MENU_ON_ITEMPRESSED:
      //
      // This message is send regardless of the item state is disabled or not
      //
      MENU_GetItem(pMsg->hWinSrc, pData->ItemId, &Data);
      if (Data.Flags & MENU_IF_DISABLED) {
        _MessageBox("The pressed item was disabled", "Message");
      }
      break;
    case MENU_ON_ITEMACTIVATE:
      //
      // This message is send on highlighting a menu item
      //
      Index = pData->ItemId - ID_MENU_FILE_NEW;
      if (Index >= 0) {
        TEXT_SetText(_hText, _paDescription[pData->ItemId - ID_MENU_FILE_NEW]);
      } else {
        TEXT_SetText(_hText, "Ready");
      }
      break;
    case MENU_ON_ITEMSELECT:
      //
      // This message is send only if an enabled item has been selected
      //
      //sprintf(acBuffer, "ID of the selected\nitem is 0x%X", pData->ItemId);
      //_MessageBox(acBuffer, "Message");

     GUI_EndDialog(hWin,0);     //上面代码注释掉,这里增加了这条点击任何一个菜单就关闭当前的窗口。
      break;
    }

#define GUI_NUMBYTES  1024*30  
#define GUI_BLOCKSIZE 32


这里把内存设置为30K   此时在开发板上运行点击菜单关闭就死机,进入硬件错误
r0  = 0x 1FFF97BC        内存地址越标了。
r1  = 0x 200039C8        
r2  = 0x        4
r3  = 0x 200039C8        
r12 = 0x       10
lr  = 0x  800D7C5        
pc  = 0x  80035EA        
psr = 0x 21000000        

#define GUI_NUMBYTES  1024*20      分配20K 内存给他,此时运行正常,点击菜单可以关闭。    后来我设置20K 也不能正常运行了。

以上的程序是在5.26,5.28  都存在这问题。

但是用5.22版本运行上面的程序内存分配多少都可以正常运行。    (其它的版本就没有测试) emwin.rar (4 KB, 下载次数: 57)


菜单源码在附件。哪位高手帮看下是什么问题?万分感激!                        同样的代码在5.26,5.28的模拟器上又是可以正常运行的。


死机.jpg               


这图是死机的样子,      正常关闭是全黑屏的。


正常.jpg


这个是正常关闭的
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117564
QQ
发表于 2015-10-16 18:51:52 | 显示全部楼层
楼主的这个问题,稍有些麻烦,待我测试后跟楼主交流下。
回复

使用道具 举报

2

主题

16

回帖

22

积分

新手上路

积分
22
 楼主| 发表于 2015-10-16 18:54:23 | 显示全部楼层

回 eric2013 的帖子

eric2013:楼主的这个问题,稍有些麻烦,待我测试后跟楼主交流下。 (2015-10-16 18:51) 
好的,等你测试下是什么问题了。
回复

使用道具 举报

2

主题

16

回帖

22

积分

新手上路

积分
22
 楼主| 发表于 2015-10-16 19:43:01 | 显示全部楼层

回 eric2013 的帖子

eric2013:楼主的这个问题,稍有些麻烦,待我测试后跟楼主交流下。 (2015-10-16 18:51) 
FRAMEWIN_SetDefaultSkin(FRAMEWIN_SKIN_FLEX);  
    PROGBAR_SetDefaultSkin(PROGBAR_SKIN_FLEX);
    RADIO_SetDefaultSkin(RADIO_SKIN_FLEX);
    SCROLLBAR_SetDefaultSkin(SCROLLBAR_SKIN_FLEX);
    SLIDER_SetDefaultSkin(SLIDER_SKIN_FLEX);
    SPINBOX_SetDefaultSkin(SPINBOX_SKIN_FLEX);
    BUTTON_SetDefaultSkin(BUTTON_SKIN_FLEX);
    DROPDOWN_SetDefaultSkin(DROPDOWN_SKIN_FLEX);
    MENU_SetDefaultSkin(MENU_SKIN_FLEX);

加上这段设置皮肤代码,再分配20K 内存给EMWIN  (#define GUI_NUMBYTES  1024*20)   就可以关闭了,但是设置30K 就不行了。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117564
QQ
发表于 2015-10-17 09:29:11 | 显示全部楼层
帮楼主在我们的V4(STM32F103)板子上面测试了一下。没问题的。动态内存分配的30KB。STemWin5.28默认是使能了皮肤色的。
版本信息如下:
1. ST固件库到V3.6.1版本
2. BSP驱动包V1.2
3. uCOS-III版本V3.05.00
4. uC/CPU版本V1.30.02
6. FatFS版本V0.11
7. STemWin版本V5.28
=====================================
V5-502a_移植步骤_STemWin5.28+uCOS-III+FatFS(含IAR和MDK).rar (6.5 MB, 下载次数: 65)

楼主的代码我放在了这个文件里面:
1.png
回复

使用道具 举报

2

主题

16

回帖

22

积分

新手上路

积分
22
 楼主| 发表于 2015-10-17 11:17:59 | 显示全部楼层

回 eric2013 的帖子

eric2013:帮楼主在我们的V4(STM32F103)板子上面测试了一下。没问题的。动态内存分配的30KB。STemWin5.28默认是使能了皮肤色的。
版本信息如下:
1. ST固件库到V3.6.1版本
2. BSP驱动包V1.2
3. uCOS-III版本V3.05.00
....... (2015-10-17 09:29) 
#define EX_SRAM   0  /*1 used extern sram, 0 used internal sram */

#if EX_SRAM
#define GUI_NUMBYTES  (1024*1024)
#else
#define GUI_NUMBYTES  (30*1024)
#endif

/* Define the average block size */
#define GUI_BLOCKSIZE 0x80

#define GUI_BLOCKSIZE 0x40       改为0x40  或者 0x20    再试下看看

还有就是你再用上面改了你外部1024*1024 内存再试下,都结合试下。

比如:
一:
#define GUI_NUMBYTES  (30*1024)
#define GUI_BLOCKSIZE 0x40


二:
#define GUI_NUMBYTES  (20*1024)
#define GUI_BLOCKSIZE 0x40
三:

#define GUI_NUMBYTES  (1024*1024)
#define GUI_BLOCKSIZE 0x80

四:
#define GUI_NUMBYTES  (512*1024)
#define GUI_BLOCKSIZE 0x80
五:
#define GUI_NUMBYTES  (512*1024)
#define GUI_BLOCKSIZE 0x40

六:
#define GUI_NUMBYTES  (750*1024)
#define GUI_BLOCKSIZE 0x40
七:
#define GUI_NUMBYTES  (750*1024)
#define GUI_BLOCKSIZE 0x80

八:
#define GUI_NUMBYTES  (256*1024)
#define GUI_BLOCKSIZE 0x80
九:
#define GUI_NUMBYTES  (256*1024)
#define GUI_BLOCKSIZE 0x40

~~~~~~~~~~~~省略~~~
等等的结合试下看看,按理论上面设置都不会有影响的,但是有时可以有时不行,这个我也不确定哪个不行,比如两个工程,在工程1 可以,在工程2同样的设置就不行。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-14 17:36 , Processed in 0.046846 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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