|
先贴代码,再问问题
void TestTask1(void *pdata)
{
pdata = pdata;
TIMER1_InitTimer ();
while (1) {
printf("##############run Task3!!!################\n");
OSTimeDly(500);
}
}
void TestTask2 (void *pdata)
{
pdata = pdata;
while(1) {
printf("##############run Task2!!!################\n");
OSTimeDly(500);
}
}
int main (void)
{
InitBoard();
ConfigurePLL();
LED_Display();
testpwm ();
OSInit();
(void)OSTaskCreateExt(TestTask1,(void *)1,&TestTask1Stk[TaskStkLeath-1],1,0,&TestTask1Stk[0],TaskStkLeath,(void *)0,OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
(void)OSTaskCreateExt(TestTask2,(void *)2,&TestTask2Stk[TaskStkLeath-1],50,0,&TestTask2Stk[0],TaskStkLeath,(void *)0,OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
OSStart();
}
程序运行的结时果是串口打印出:##############run Task3!!!################
我不知道我的uc/os内核跑起来没有。要验证uc/os跑起来了,是不是要建两个任务,让它能够切换是对的?
TIMER1_InitTimer ()我是参照2410的uc/os移植代码里Init_Timer4 ();这句来添加的,其实我还不知道为什么要加这一名,想是这个函数是初始化定时器Timer4。lpc2478只有两个定时器,其中TIMER0是被OS占用了的,这里的TIMER1_InitTimer ()我只是看它的名字才添加进去的,这样做是错的吗?
void TIMER1_InitTimer( LPC_INT32U prescaleValue)
{
TIMER1_IR=0xFF;
TIMER1_TCR=0;
TIMER1_TC=0;
TIMER1_PR=prescaleValue;
TIMER1_PC=0;
TIMER1_MCR=0;
TIMER1_MR0=0;
TIMER1_MR1=0;
TIMER1_MR2=0;
TIMER1_MR3=0;
TIMER1_CCR=0;
TIMER1_CR0=0;
TIMER1_CR1=0;
TIMER1_CR2=0;
TIMER1_CR3=0;
TIMER1_EMR=0;
}
请大侠们帮忙看看这是不是初始化定时器的代码。
|
|