|
求解答,ucos 任务不能再 节拍中断下切换?
[复制链接]
刚学习 ucos, 请各位大侠解答啊, 感谢
main 函数 如下, 将延时 改成 OSTimeDlyHMSM 后 两个灯都闪了,用 延时vDelayNms的话只有 LED1闪,pp2任务都没运行LED2点不亮, 中断函数不能切换啊?
void vDelayNms(WORD16 i)
{
WORD32 k = 11000 * i / 3;
while (k--);
}
void pp1(void * pdata)
{
pdata = pdata;
GPIO_OUT(LED1,LOW); //先点亮
while(1)
{
GPIO_BitToggle(LED1);
vDelayNms(333);
//OSTimeDlyHMSM(0, 0, 0, 333);
}
}
void pp2(void * pdata)
{
pdata = pdata;
GPIO_OUT(LED2,LOW); //先点亮
while(1)
{
GPIO_BitToggle(LED2);
vDelayNms(444);
//OSTimeDlyHMSM(0, 0, 0, 444);
}
}
/*
节拍中断 入口函数
*/
void OSTimeTickISR(void)
{
RTC->ILR = 0x3;
//OSIntExit();
OSTimeTick();
//OS_Sched();
//UART0->RBR_THR_DLL='a';
}
void TaskStart(void * pdata)
{
pdata = pdata;
RTC_vInit(); /* 初始化系统时钟节拍,10ms */
OSTaskCreate(pp1,(void *)0, &tpp1[TASK_STK_SIZE-1], 1);
OSTaskCreate(pp2,(void *)0, &tpp2[TASK_STK_SIZE1-1], 2);
OSTaskDel(OS_PRIO_SELF);
}
int main(void)
{
OSInit();
OSTaskCreate(TaskStart,(void *)0, &TaskStartStk[TASK_START_STK_SIZE-1], 5);
OSStart();
}
[ 本帖最后由 cldr 于 2013-5-1 11:56 编辑 ]
|
|