OpenEdv-开源电子网

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

emwin+ucos窗口刷不出来

[复制链接]

28

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
444
金钱
444
注册时间
2013-8-10
在线时间
36 小时
发表于 2015-4-8 16:42:16 | 显示全部楼层 |阅读模式
5金钱



第一张图片是print_task  随意,一开始如果在这里进去music_maintask(),把mainview_maintask()注释掉的话,进去music_maintask(),界面能够刷出来跟后台的music_task任务都是正常;
如果,注释掉music_maintask(),由mainview_maintask()中控件iconview控件去进入music_maintask()的话,后台的任务music_task正常运行,但是这时候界面刷不出来,其他任务都正常,仿真到GUI_Exec()这里就仿真不下去,但是其他任务正常运行,内存使用情况也正常;
如果,从
mainview_maintask()中进来music_maintask()的话,把music_task注释掉,创建uart_task 这个任务,这个任务正常运行,界面也能刷出来;我现在都无从下手了。
控件之间的GUI_USER_ID是不冲突的,还有,任务堆栈设置的大小我也试过改变到2048这么大,还是不行,监控着内存的使用时正常的,搞两天了,求助。

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

使用道具 举报

28

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
444
金钱
444
注册时间
2013-8-10
在线时间
36 小时
 楼主| 发表于 2015-4-8 16:44:33 | 显示全部楼层
[mw_shl_code=c,true]void Main_cb_BkWindow(WM_MESSAGE *pMsg) { int Id; int NCode; static int Sel; switch(pMsg->MsgId) { case WM_TIMER: Mainview_TimeEvent(pMsg); //TEXT_SetText(WM_GetDialogItem(hWin, TEXT_NOW),"123"); // printf("nimenhao\r\n"); WM_RestartTimer(pMsg->Data.v,100); break; case WM_PAINT: GUI_DrawBitmap(&bmbackground,0,0); //GUI_SetBkColor(GUI_BLUE); //GUI_Clear(); break; case WM_NOTIFY_PARENT: Id=WM_GetId(pMsg->hWinSrc); NCode=pMsg->Data.v; switch(Id) { case MAIN_ICONVIEW: //ICONVIEW0控件 switch(NCode) //通知代码 { case WM_NOTIFICATION_CLICKED: Sel=ICONVIEW_GetSel(pMsg->hWinSrc); switch(Sel) { case 0: //APP0 call_MainTask(); break; case 1: //APP1 Calculator_MainTask(); break; case 2: //APP2 break; case 3: //APP3 break; case 4: //APP4 break; case 5: //APP5 break; case 6: //APP6 WM_HideWindow(WM_GetDialogItem(pMsg->hWin,MAIN_ICONVIEW)); WM_HideWindow(WM_GetDialogItem(pMsg->hWin,MAIN_TEXT_INFO)); WM_HideWindow(WM_GetDialogItem(pMsg->hWin,MAIN_TEXT_CALENDAR)); WM_HideWindow(WM_GetDialogItem(pMsg->hWin,MAIN_TEXT_TIME)); WM_HideWindow(WM_GetDialogItem(pMsg->hWin,MAIN_TEXT_CALL)); WM_HideWindow(WM_GetDialogItem(pMsg->hWin,MAIN_TEXT_MSG)); GUI_SetBkColor(GUI_BLUE); GUI_Clear(); Music_MainTask(); GUI_Delay(1000); WM_SetCallback(WM_HBKWIN,Main_cb_BkWindow); WM_ShowWindow(WM_GetDialogItem(pMsg->hWin,MAIN_ICONVIEW)); WM_ShowWindow(WM_GetDialogItem(pMsg->hWin,MAIN_TEXT_INFO)); WM_ShowWindow(WM_GetDialogItem(pMsg->hWin,MAIN_TEXT_CALENDAR)); WM_ShowWindow(WM_GetDialogItem(pMsg->hWin,MAIN_TEXT_TIME)); WM_ShowWindow(WM_GetDialogItem(pMsg->hWin,MAIN_TEXT_CALL)); WM_ShowWindow(WM_GetDialogItem(pMsg->hWin,MAIN_TEXT_MSG)); break; case 7: //APP7 break; case 8: //APP8 break; case 9: //APP9 break; } break; case WM_NOTIFICATION_RELEASED: break; case WM_NOTIFICATION_SEL_CHANGED: break; } break; } break; default: WM_DefaultProc(pMsg); break; } } void Music_MainTask(void) { OS_CPU_SR cpu_sr=0; GUI_Init(); music_new=mymalloc(SRAMEX,10); mymemset(music_new,0,10); if(!mp3) { OS_ENTER_CRITICAL(); // music_msg=OSMboxCreate((void*)0); //创建消息邮箱 用于传输通信 UI->AUDIOPLAY task OSTaskCreate(music_task,(void *)0,(OS_STK *)&MUSIC_TASK_STK[MUSIC_STK_SIZE-1],MUSIC_TASK_PRIO ); //OSTaskCreate(uart_task,(void *)0,(OS_STK*)&UART_TASK_STK[UART_STK_SIZE-1],UART_TASK_PRIO); OS_EXIT_CRITICAL(); } else { audio_start(); OSTaskResume(UART_TASK_PRIO); } // music_msg=OSMboxCreate((void*)0); mp3=true; // GUI_EnableAlpha(1); // WM_SetDesktopColor(GUI_WHITE); /* Automacally update desktop window */ WM_SetCreateFlags(WM_CF_MEMDEV); /* Use memory devices on all windows to avoid flicker */ FRAMEWIN_SetDefaultSkin(FRAMEWIN_SKIN_FLEX); PROGBAR_SetDefaultSkin(PROGBAR_SKIN_FLEX); BUTTON_SetDefaultSkin(BUTTON_SKIN_FLEX); SLIDER_SetDefaultSkin(SLIDER_SKIN_FLEX); OS_ENTER_CRITICAL(); Win=GUI_CreateDialogBox(Music_aDialogCreate, GUI_COUNTOF(Music_aDialogCreate), &Music_cbCallback, 0, 0, 0); GUI_Exec(); OS_EXIT_CRITICAL(); flage=true; while(flage) { GUI_Delay(500); } myfree(SRAMEX,music_new); return; } void print_task(void *pdata) { WM8978_ADDA_Cfg(1,0); //开启DAC WM8978_Input_Cfg(0,0,0);//关闭输入通道 WM8978_Output_Cfg(1,0); //开启DAC输出 while(1) { // Calculator_MainTask(); // call_MainTask(); // OSTimeDlyHMSM(0,0,0,5);//延时5ms //GUIDEMO_Skinning(); // Music_MainTask(); //Input_MainTask(); //Sendmsg_MainTask(); // Read_msg_MainTask(); Mainview_MainTask(0); // jpegshow("1:/测试用文件/示例图片.jpg"); // TESTMainTask(); GUI_Delay(200); // mp3_play_song("1:/测试用文件/这条街.mp3"); // mp3_play_song("1:/","测试用文件/这条街.mp3"); // lrc_test("1:/测试用文件/","这条街.mp3"); //jpegdisplay_demo(); } }[/mw_shl_code]

回复

使用道具 举报

28

主题

119

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
444
金钱
444
注册时间
2013-8-10
在线时间
36 小时
 楼主| 发表于 2015-4-8 16:46:39 | 显示全部楼层
以上是三个函数的代码,有些乱,求谅解,其中从mainview_maintask()进去call_MainTask(),Calculator_MainTask()这两个窗口是正常的,就是把之前做好的music这个APP加载到这里上面就出问题。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-4-8 22:34:46 | 显示全部楼层
帮顶....
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 16:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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