请问用定时器调用任务的程序段是什么样的逻辑,如何理解??
教程中结构体定义任务static TASK_COMPONENTS Task_Comps[]=
{
{0, 300, 300, LED0_Blink}, /* task 1 Period£º 300ms */
{0, 600, 600, LED1_Blink}, /* task 1 Period£º 600ms */
{0, 900, 900, LED2_Blink}, /* task 1 Period£º 600ms */
{0, 10, 10, KEY_Task}, /* task 1 Period£º 600ms */
};
任务回调函数
void Task_Marks_Handler_Callback(void)
{
u8 i;
for(i=0; i<Tasks_Max; i++)
{
if(Task_Comps.TIMCount) /* If the time is not 0 */
{
Task_Comps.TIMCount--; /* Time counter decrement */
if(Task_Comps.TIMCount == 0) /* If time arrives */
{
/*Resume the timer value and try again */
Task_Comps.TIMCount = Task_Comps.TRITime;
Task_Comps.Run = 1; /* The task can be run */
}
}
}
}
任务函数
void LED1_Blink(void)
{
State2 = !State2;
P01 = State2;
}
void LED2_Blink(void)
{
State3 = !State3;
P02 = State3;
}
请教高手,这三者之间是什么关系,之间是怎么调用的?
<p>上面那个所谓的任务回调函数,干的是在定时器中断中对计数值操作的活,,当某个任务的run被置1了之后,应该在主函数里面有一个轮询这个标志位的代码,再执行结构体中的函数指针。这个函数指针指向的就是下面两个任务函数。</p>
页:
[1]