求大神指教,我创建了一个启动任务,用启动任务来创建两个任务,代码如下
[mw_shl_code=c,true]int main (void)
{
SysTick_Configuration(); //?????¨?±?÷??????
USART_Configuration(); //?®????????
OSInit(); //usos ii??????
err = OSTaskCreate(AppTaskCreate,
(void *)0,
(OS_STK *)&AppTaskStk[APP_TASK_STK_SIZE-1],
0);//???¨????
if(err==OS_NO_ERR)
{USART_Send_Str("AppTask Created seccess;\r\n");} //???¨????????
else
{USART_Send_Str("AppTask Created Fault;\r\n");} //???¨?????§°?
OSStart(); //?????????÷??
return 0 ;
}
/*********************************************************************************************************
** ????AppTask
********************************************************************************************************/
static void AppTaskCreate(void *p_arg)
{
p_arg=p_arg;
USART_Send_Str("Create Task 1;\r\n");
err = OSTaskCreate(AppTask1,
(void *)0,
(OS_STK *)&AppTask1Stk[APP_TASK1_STK_SIZE-1],
APP_TASK1_PRIO);
if(err==OS_NO_ERR)
{USART_Send_Str("Task 1 Created seccess;\r\n");} //???¨????1????
else
{USART_Send_Str("Task 1 Created Fault;\r\n");} //???¨????1?§°?
printf("%d\r\n",err);
USART_Send_Str("Create Task 2;\r\n");
err = OSTaskCreate(AppTask2,
(void *)0,
(OS_STK *)&AppTask2Stk[APP_TASK2_STK_SIZE-1],
APP_TASK2_PRIO);
if(err==OS_NO_ERR)
{USART_Send_Str("Task 2 Created seccess;\r\n");} //???¨????2????
else
{USART_Send_Str("Task 2 Created Fault;\r\n");} //???¨????2?§°?
OSTaskSuspend(OS_PRIO_SELF); //TaskStart????
USART_Send_Str("Task AppTask is will delete;\r\n");
OSTaskDel(OS_PRIO_SELF); //TaskStart????
}[/mw_shl_code]
[mw_shl_code=c,true]
[/mw_shl_code]
[mw_shl_code=c,true]
[/mw_shl_code]
[mw_shl_code=c,true]
[/mw_shl_code]
[mw_shl_code=c,true]
[/mw_shl_code]
[mw_shl_code=c,true]现在不知道为什么如果,如果创建启动任务时的判断 if(err==OS_NO_ERR) 那几个语句如果用的话,串口显示启动任务创建成功,但是Tak1和Task2创建失败,失败原因为 OS_ERR_TASK_CREATE_ISR,如果注释掉这个if语句,Tak1和Task2都可以创建成功,而且都可以进入运行,求大神指点。[/mw_shl_code]
|