初级会员

- 积分
- 182
- 金钱
- 182
- 注册时间
- 2012-11-8
- 在线时间
- 0 小时
|
正常运行是可以看到灯交替闪烁的,可是一用按键去挂起任务(挂起一个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;
}
|
|