OpenEdv-开源电子网

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

为啥在对话画框的回调函数里调用创建消息框函数会死机进入硬件错误

[复制链接]

17

主题

293

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
388
金钱
388
注册时间
2012-12-26
在线时间
1 小时
发表于 2014-3-14 14:04:19 | 显示全部楼层 |阅读模式

/**********************************************************************************************************
** Function name:      FileBrowserCallBack
** Descriptions:       文件浏览对话框回调函数
** input parameters:   WM_MESSAGE *pMsg:消息
** output parameters:  无
** Returned value:     无
**********************************************************************************************************/
static void FileBrowserCallBack(WM_MESSAGE *pMsg)
{
 int Id,NCode;
 char  buf[30],i,*DIRinf;
 u16   file_num = 0;
 LISTBOX_Handle hFileBrowseListBox;
 WM_HWIN hWin = pMsg->hWin;
 hFileBrowseListBox = WM_GetDialogItem(hWin,GUI_ID_LISTBOX0);
 switch(pMsg -> MsgId) {
  
  case WM_INIT_DIALOG:
   MenuDisnable++;
    LISTBOX_SetAutoScrollV (hFileBrowseListBox, 1);
//     FRAMEWIN_AddCloseButton(pMsg->hWin, FRAMEWIN_BUTTON_RIGHT,0);
      FRAMEWIN_AddMaxButton(pMsg->hWin, FRAMEWIN_BUTTON_RIGHT, 0);
      FRAMEWIN_AddMinButton(pMsg->hWin, FRAMEWIN_BUTTON_RIGHT, 0);
   WINDOW_SetDefaultBkColor(GUI_GREEN);
   if(device == SPIFlash)
   {
    FRAMEWIN_SetText(pMsg->hWin,"SPIFlash存储设备");
    strcpy(FilePath,"1:");
    FatFs_Open("1:");
   }
   else if(device == SDCard)
   {
    FRAMEWIN_SetText(pMsg->hWin,"SDCard存储设备");
    strcpy(FilePath,"0:");
    FatFs_Open("0:");//打开SD卡,获取根目录列表
   }
   for(Id = 0;Id < filecount;Id++){
      LISTBOX_AddString(hFileBrowseListBox, (char*)FileList[Id]);
     }
   break;
   case WM_NOTIFY_PARENT:
    Id = WM_GetId(pMsg ->hWinSrc);
    NCode = pMsg ->Data.v;
    switch(NCode) {
    
      case WM_NOTIFICATION_RELEASED:
       if(Id == Button_ID6){
      file_num = LISTBOX_GetSel(hFileBrowseListBox);//返回值即为选中项所在的行数
          LISTBOX_GetItemText(hFileBrowseListBox,file_num,buf,30);
      FilePath_process(FilePath,buf);
      DIRinf = mymalloc(SRAMEX,30);
      sprintf(DIRinf,"文件夹的大小是%dBytes",exf_fdsize(FilePath));
      
      MESSAGEBOX_Create("sdfa","dsef",0);                      -------------------------------------------------》》》执行到这一步会死机进入硬件错误,怎么回事呀,硬件错误寄存器信息如下:
      myfree(SRAMEX,DIRinf);
     }
     else if (Id == Button_ID7) {
      FileOpen(hFileBrowseListBox,"..");     //返回上一级
      FRAMEWIN_SetText(pMsg->hWin, (const char*)FilePath);
     } else if (Id == Button_ID8) {
       file_num = LISTBOX_GetSel(hFileBrowseListBox);//返回值即为选中项所在的行数
           LISTBOX_GetItemText(hFileBrowseListBox,file_num,buf,30);
       FileOpen(hFileBrowseListBox,buf);
       FRAMEWIN_SetText(pMsg->hWin, (const char*)FilePath);
     } else if(Id == Button_ID9) {
     
      ClearPath(FilePath);
      GUI_EndDialog(pMsg->hWin, 1);
      MenuDisnable--;
     }
     break;
    default:
      break;
    }  
      break;   
  default:
      WM_DefaultProc(pMsg);
    break;
  }
}

 

硬件错误寄存器信息:

CFSR:   40000
HFSR:40000000
DFSR:       1
AFSR:       0

 

怎么解决,什么原因引起的

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165225
金钱
165225
注册时间
2010-12-1
在线时间
2107 小时
发表于 2014-3-14 23:10:31 | 显示全部楼层
回复 支持 反对

使用道具 举报

3

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2015-3-18
在线时间
25 小时
发表于 2016-3-29 09:32:36 | 显示全部楼层
请问楼主,最后是怎么解决的呢?我也遇到了这个问题!我用的是stemwin5.28
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-1 18:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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