打印

请教下 ucGUI +uCOS 死循环的问题

[复制链接]
1432|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lhwaizhu|  楼主 | 2013-7-23 20:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我创建了三个任务,Task_Touch优先级最高,Task_Start任务最低,Task_Menu任务中间,在Task_Menu中创建了一些按钮,我现在想点击某个按钮,用
GUI_MessageBox("Function does not support!","NOTE",GUI_MESSAGEBOX_CF_MOVEABLE);
弹出一个消息框,现在的问题是弹出消息框后 无法点击消息框的按钮,仿真发现卡在函数WM_Exec()函数里面,甚至连任务Task_Touch都进不去了....不明白什么原因,望指教...谢谢了
下面是主要代码:
void   Task_Start(void*p_arg)
{
               
                OSTaskCreate(Task_Touch,(void*)0,&TASK_TOUCH_STK[TASK_TOUCH_STK_SIZE-1],TASK_TOUCH_PRIO);
                OSTaskCreate(Task_Menu,(void*)0,&TASK_MENU_STK[TASK_MENU_STK_SIZE-1],TASK_MENU_PRIO);                                    
                while(1)
                {                                
                                LED1(ON);               
                                OSTimeDlyHMSM(0,0,0,300);
                                LED1(OFF);
                                OSTimeDlyHMSM(0,0,0,300);
                }        
}


void  Task_Touch(void*p_arg)
{
                GUI_PID_STATE   TouchPoint;
                (void)p_arg;
                while(1)
                {                                
                                GUI_TOUCH_Exec();
                                GUI_TOUCH_GetState(&TouchPoint);
                                if (TouchPoint.Pressed)
                                {
                                                if(TouchFlag == TouchUnPressed)
                                                {
                                                                TouchFlag = TouchPress;
                                                }

                                }
                                else
                                {
                                                if(TouchFlag == TouchPressed)
                                                {
                                                                TouchFlag = TouchUnPress;        
                                                }
                                }        
                                GUI_Exec();//重绘            
                                OSTimeDlyHMSM(0,0,0,5);                                    
                }               
}


void  Task_Menu(void*p_arg)
{
                (void)p_arg;
                MainMenu_Init(); //在桌面上创建了一些按钮
                while(1)
                {               
                                if((Menu_ID==MainMenu_ID)&&TouchCmd==1) //为了区分当前的界面
                                {               
                                                TouchCmd = 0;
                                                switch(GUI_GetKey())
                                                {
                                                                case GUI_ID_BUTTON0:
                                                                                GUI_MessageBox("Function does not support!","NOTE",GUI_MESSAGEBOX_CF_MOVEABLE);//就是卡在这里了
                                                                                break;
                                                                default:
                                                                                TouchCmd = 1;
                                                                                break;                                
                                                }                                                
                                }
                                OSTimeDlyHMSM(0,0,0,20);
                 }
}

#define GUI_ALLOC_SIZE          10240   //这个也够大了吧

相关帖子

沙发
lhwaizhu|  楼主 | 2013-7-24 16:57 | 只看该作者
顶一下了。。。。

使用特权

评论回复
板凳
sunhaojie| | 2013-9-14 12:29 | 只看该作者
你的堆栈分配的小了吧,你试试吧 窗口按键任务 和 触摸任务的堆栈加大,比如512和256

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

79

帖子

2

粉丝