void Task0 (void *pdata)
{
uint8 err;
uint16 i;
pdata = pdata;
Uart0ReviceMbox = OSMboxCreate(NULL);
Uart3ReviceMbox = OSMboxCreate(NULL);
OSMutexCreate(3,&err);
Test2toTest = OSSemCreate(0);
OSTaskCreate(TaskGetTime,(void *)0,&TaskGetTimeStk[TaskGetTimeStkLenth-1],13);
OSTaskCreate(TaskDealTime,(void *)0,&TaskDealTimeStk[TaskDealTimeStkLenth-1],12);
OSTaskCreate(TaskClrDog,(void *)0,&TaskClrDogStk[TaskClrDogStkLenth-1],1);
OSTaskCreate(TaskTest,(void *)0,&TaskTestStk[TaskTestLength-1],11);
OSTaskCreate(TaskTest2,(void *)0,&TaskTest2Stk[TaskTest2Length-1],10);
TargetInit ();
Gpio_Init();
UART0Init(115200); // 取默认串口0的通信波特率为115200
UART3Init(115200); // 取与模块默认通信波特率为115200
UART1_AllIni(9600); // 取默认串口1通信波特率为300
UART2_AllIni(115200); // 取默认串口2通信波特率为115200
RS485_CSHIGH1;
RS485_CSLOW; // 低电平485允许接收
UART0_SendStr(what);//发送what字符串
OSTaskDel(OS_PRIO_SELF);
}
这时串口仍然周期发送what这个字符串,这是为什么???然后由这个任务创建的其他的任务无论我调用ostimedly函数想延时多长时间都不行,都差不多是一秒的周期在运行,是不是因为这个任务在周期运行,然后周期创建其他任务,导致其他任务也周期运行,只是延时无效???
在OSTaskDel(OS_PRIO_SELF);之前加上
OSIntNesting=0; //清UCOSII中断标志
OSLockNesting=0; //可不加
应该就没问题了,具体你看下OSTaskDel();这个函数定义就明白了
[ 本帖最后由 SuperStar515 于 2011-8-9 13:38 编辑 ]