|
请教KL25移植ucOSII时,一直在空闲任务打转
[复制链接]
本帖最后由 em78447 于 2015-8-25 16:15 编辑
移植后,两个子任务运行一遍,然后就在空闲任务OS_TaskIdle里打转,请教是怎么回事
主程序部分代码是:
int main(void)
{
OSInit();
OSTaskCreate(task0,(void *)0,(OS_STK*)&task0_stk[64-1],0);
OSStart();
return 0;
}
static void task0(void *pvalue)
{
pvalue=pvalue;
irq_off(); //关总中断
main_init(); //目标板初始化
#if(0
// OSStatInit(); //任务统计初始化,不加,否则延迟处有问题
#endif
event_create(); //事件的建立,建立子任务的响应事件
task_create(); //系统多任务的建立(不用了,为空)
irq_enable(PIT_NUM);
irq_enable(UART0_NUM);
irq_enable(UART1_NUM);
irq_on(); //开总中断
while(1)
{
//参数:(1)建立任务(2)数据指针、传递给任务的参数(3)指向任务堆栈顶的指针(4)任务优先级
OSTaskCreate(task1,(void *)0,(OS_STK*)&task1_stk[63],2);
OSTaskCreate(task2,(void *)0,(OS_STK*)&task2_stk[63],3);
OSTaskSuspend(OS_PRIO_SELF);
}
}
static void task1(void *pvalue)
{
pvalue=pvalue; //为避免出现警告而用,函数里没用到,没实际意义
while(1)
{
GPIOE_PTOR |= (1<<3); //PTE3翻转
OSTimeDlyHMSM(0,0,0,500); //延迟0小时0分0秒500毫秒
}
}
static void task2(void *pvalue)
{
pvalue=pvalue;
while(1)
{
GPIOE_PTOR |= (1<<4); //PTE4翻转
OSTimeDlyHMSM(0,0,0,200); //延迟0小时0分0秒200毫秒
}
}
|
|