大学生
最后登录1970-1-1
在线时间 小时
注册时间2013-12-17
|
在你们的历程中(UCOS II 不是III,,原来的例程),三个LED显示的例程里面 主函数里面
int main(void)
{
BSP_Init();
OSInit();
OSTaskCreate(Task_Start,(void *)0,
&startup_task_stk[STARTUP_TASK_STK_SIZE-1], STARTUP_TASK_PRIO);
OS_ENTER_CRITICAL(); ////加这一句代码 进入临界段的作用是什么?
OSStart();
return 0;
}
我把进入临街段的代码注释掉,,也可以正常运行,,那加这一句代码的作用是什么??这个例程里面并没有加入别的中断,应该可以不加这个语句。
还有在APP的C文件里面,,
void Task_Start(void *p_arg) //task1
{
(void)p_arg; // 'p_arg' 2¢ûóDóÃμ½£¬·àÖ1±àòëÆ÷ìáê¾¾ˉ¸æ
SysTick_init(); //重新初始化滴答定时器的作用是什么?
OSTaskCreate(Task_LED2,(void *)0, //′′½¨èÎÎñ2
&task_led2_stk[TASK_LED2_STK_SIZE-1], TASK_LED2_PRIO);
OSTaskCreate(Task_LED3,(void *)0, //′′½¨èÎÎñ3
&task_led3_stk[TASK_LED3_STK_SIZE-1], TASK_LED3_PRIO);
OSTaskCreate(Task_LED4,(void *)0, //′′½¨èÎÎñ4
&task_led4_stk[TASK_LED4_STK_SIZE-1], TASK_LED4_PRIO);
while (1)
{
LED1( ON );
OSTimeDlyHMSM(0, 0,0,100);
LED1( OFF);
OSTimeDlyHMSM(0, 0,0,100);
}
}
//èÎÎñ2
void Task_LED2(void *p_arg)
{
(void)p_arg;
// SysTick_init();//重新初始化滴答定时器的作用是什么?
while (1)
{
LED2( ON );
OSTimeDlyHMSM(0, 0,0,200);
LED2( OFF);
OSTimeDlyHMSM(0, 0,0,200);
}
}
//èÎÎñ3
void Task_LED3(void *p_arg)
{
(void)p_arg;
// SysTick_init();//重新初始化滴答定时器的作用是什么?
while (1)
{
//LED3( ON );
OSTimeDlyHMSM(0, 0,0,300);
//LED3( OFF);
OSTimeDlyHMSM(0, 0,0,300);
}
}
void Task_LED4(void *p_arg)
{
(void)p_arg;
// SysTick_init();//重新初始化滴答定时器的作用是什么?
while (1)
{
LED3( ON );
OSTimeDlyHMSM(0, 0,0,40);
LED3( OFF);
OSTimeDlyHMSM(0, 0,0,40);
}
}
每一个任务都重新初始化滴答定时器的作用是什么?
我把开始任务的初始化注释掉,就不能工作了。。。。但我注释掉LED任务的初始化 却还可以正常工作。。这又为什么呢? |
|