OpenEdv-开源电子网

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

UCOSII点灯出现问题!!求解释。。

[复制链接]

19

主题

86

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2012-11-8
在线时间
0 小时
发表于 2012-12-10 14:32:09 | 显示全部楼层 |阅读模式
正常运行是可以看到灯交替闪烁的,可是一用按键去挂起任务(挂起一个LED),两个灯就都不闪了,按恢复任务的那个键还是没反应,无论按什么键都是这样,程序就死在那了,求大神解释,有没有遇到这种情况,部分代码贴出:
static void led0_task(void *p_arg)   //led0
{
  p_arg=p_arg;//防止编译器产生警告
 while(1)
 {
  if(OSTaskDelReq(OS_PRIO_SELF)==OS_TASK_DEL_REQ) //判断是否有删除请求
  OSTaskDel(OS_PRIO_SELF);         //删除任务本身TaskLed
  LED0=!LED0;
  OSTimeDlyHMSM(0,0,0,500); 
 }
}

static void led1_task(void *p_arg)
{
  p_arg=p_arg;//防止编译器产生警告
 while(1)
 {
  if(OSTaskDelReq(OS_PRIO_SELF)==OS_TASK_DEL_REQ) //判断是否有删除请求
  OSTaskDel(OS_PRIO_SELF); 
  LED1=!LED1;
  OSTimeDlyHMSM(0,0,0,200); 
 }
}

static void key_task(void *p_arg)
{
 
 u8  key=0;
 while(1)
 {
   key=KEY_Scan();
    if(key==1)
    {
     OSTaskSuspend(LED0_TASK_PRIO);
  } 
  else if(key==2)
   {
     OSTaskResume(LED0_TASK_PRIO);
   }    
   else if(key==3)
   {
     OSTaskDelReq(LED0_TASK_PRIO);
   }
    OSTimeDlyHMSM(0,0,0,20);  
 }
}

static void startup_task(void *p_arg) 

  #if OS_CRITICAL_METHOD == 3  
 OS_CPU_SR cpu_sr;
 #endif
 
 systick_init();   
 
//创建任务
 OSTaskCreate(led0_task, 0, &led0_task_stk[LED0_TASK_STK_SIZE - 1], LED0_TASK_PRIO);
  OSTaskCreate(led1_task, 0, &led1_task_stk[LED1_TASK_STK_SIZE - 1], LED1_TASK_PRIO);
 OSTaskCreate(key_task, 0, &key_task_stk[KEY_TASK_STK_SIZE - 1], KEY_TASK_PRIO);
  OSTaskSuspend(STARTUP_TASK_PRIO); 
}
 
int main(void) 

     BSP_Init();
     OSInit(); 
     OSTaskCreate(startup_task, (void *)0, 
              &startup_task_stk[STARTUP_TASK_STK_SIZE - 1], 
              STARTUP_TASK_PRIO); 
     OSStart(); 
     return 0; 
}

用我三生烟火,换你一世迷离
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

96

主题

762

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1228
金钱
1228
注册时间
2012-10-19
在线时间
15 小时
发表于 2012-12-10 15:41:40 | 显示全部楼层
用的MINI板子? 个人认为你的问题在按键扫描!
回复 支持 反对

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2012-12-10 16:00:51 | 显示全部楼层
你是把任务删了吧?把除了挂起任务之外的代码屏蔽掉试试。
业余程序玩家。
回复 支持 反对

使用道具 举报

19

主题

86

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2012-11-8
在线时间
0 小时
 楼主| 发表于 2012-12-10 16:16:45 | 显示全部楼层
回复【2楼】tian123chi:
---------------------------------
对,是用mini的板子,能否详细讲解一下,我一按按键它就死了
用我三生烟火,换你一世迷离
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-12-10 16:19:42 | 显示全部楼层
用了我们的delay函数的缘故吧。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

19

主题

86

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2012-11-8
在线时间
0 小时
 楼主| 发表于 2012-12-10 16:28:52 | 显示全部楼层
回复【3楼】ofourme:
---------------------------------
只留了一个按键扫描 来挂起任务的,还是不行
用我三生烟火,换你一世迷离
回复 支持 反对

使用道具 举报

19

主题

86

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2012-11-8
在线时间
0 小时
 楼主| 发表于 2012-12-10 16:30:53 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
其他地方有用到,比如key的防抖动等等,没在ucos的APP里用,原子哥 这会出现问题??
用我三生烟火,换你一世迷离
回复 支持 反对

使用道具 举报

96

主题

762

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1228
金钱
1228
注册时间
2012-10-19
在线时间
15 小时
发表于 2012-12-10 16:47:54 | 显示全部楼层
回复【7楼】末班车:
---------------------------------
你可以直接把按键程序写到任务里去,按1执行什么,按2执行什么。我之前做跟你一样结果,最后只知道按键程序有问题....后来自己写按键就好了~           原子哥说延时冲突了,有时间实践实践
回复 支持 反对

使用道具 举报

19

主题

86

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2012-11-8
在线时间
0 小时
 楼主| 发表于 2012-12-10 21:10:39 | 显示全部楼层
回复【8楼】tian123chi:
---------------------------------
嗯 找到了错误了,是延时的问题,多谢各位及原子哥了
用我三生烟火,换你一世迷离
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-19 08:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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