OpenEdv-开源电子网

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

uCOS+uCGUI, 调用GUI_Delay和调用OSTimeDlyHMSM为什么效果会不同, 会死机

[复制链接]

5

主题

154

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
205
金钱
205
注册时间
2013-6-8
在线时间
2 小时
发表于 2013-11-4 21:30:43 | 显示全部楼层 |阅读模式

问题:1,红色部分如果分别换成GUI_Delay(80)和GUI_Delay(4000)的话会死机?
         2,绿色部分如果换成OSTimeDlyHMSM(0,0,0,10)的话,那光标就不会跟着动了?

求讲解下,谢谢!!!


--------------------------------------------------------------------------------

这是正在运行的4个任务
void led_task(void *parg)//优先级10
{
    for(;;)
    {
        led0_on();
        OSTimeDlyHMSM(0, 0, 0, 80);
        led0_off();
        OSTimeDlyHMSM(0, 0, 4, 0);
    }
}

void touch_task(void*parg)//优先级11
{
    GUI_CURSOR_Show();
    for(;;)
    {
        GUI_Delay(10);
        GUI_TOUCH_Exec();
    }
}


void main_task(void *parg)//优先级12
{
   u8 sec;

   for(;;)
   {
      if(sec!=Calendar.sec)
      {
         sec=Calendar.sec;// xx:xx:xx
         GUI_DispDecAt(Calendar.hour, 250,0,2);
         GUI_DispChar(':');
         GUI_DispDec(Calendar.min, 2);
         GUI_DispChar(':');
         GUI_DispDec(Calendar.sec, 2);
       }
       GUI_Delay(100);
    }
}

void tgui_task(void*parg)//优先级13

{
   for (;;)
   {
     GUI_Delay(1000); 
   }
}

即使爬到最高的山上,一次也只能脚踏实地地迈一步。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
12086
金钱
12086
注册时间
2013-3-8
在线时间
1285 小时
发表于 2013-11-4 23:04:07 | 显示全部楼层
我记得 OSTimeDlyHMSM(0, 0, 0, 80)这个函数内有任务调度,而GUI_Delay(10)中没有任务调度。任务如果不调度,对操作系统来说就等于死机了!
回复 支持 反对

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
12086
金钱
12086
注册时间
2013-3-8
在线时间
1285 小时
发表于 2013-11-4 23:06:13 | 显示全部楼层
回复【楼主位】倒拔萝卜:
---------------------------------
GUI_Delay(10)中有一些对显示内容刷新的函数,我用的是ucgui3.9版的。因一年没用过了,自己查一下这个函数看一下吧!
回复 支持 反对

使用道具 举报

5

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
67
金钱
67
注册时间
2013-9-23
在线时间
2 小时
发表于 2013-12-24 14:53:50 | 显示全部楼层
楼主你的这个问题解决了吗,我也遇到了类似的问题?
回复 支持 反对

使用道具 举报

44

主题

121

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
412
金钱
412
注册时间
2012-7-1
在线时间
58 小时
发表于 2014-11-4 15:59:59 | 显示全部楼层
楼主问题解决了吗?我也遇到了这样的问题不知道怎么办
回复 支持 反对

使用道具 举报

10

主题

561

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1841
金钱
1841
注册时间
2014-6-27
在线时间
982 小时
发表于 2014-11-4 16:07:17 | 显示全部楼层
首先,你用自己的延时函数的任务优先级最高,所以,一旦调度,一直进入这里,全部换成OSTimeDlyHMSM()看看,或者把它的优先级降低,起码要低于光标的。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-29 19:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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