//-----------------------------------------------------------
(*A_Task_Ptr)(); // jump to an A Task (A1,A2,A3,...)
//-----------------------------------------------------------
}
Alpha_State_Ptr = &B0; // Comment out to allow only A tasks
}
void B0(void)
{
// loop rate synchronizer for B-tasks
if(CpuTimer1Regs.TCR.bit.TIF == 1)
{
CpuTimer1Regs.TCR.bit.TIF = 1; // clear flag
//-----------------------------------------------------------
(*B_Task_Ptr)(); // jump to a B Task (B1,B2,B3,...)
//-----------------------------------------------------------
}
Alpha_State_Ptr = &C0; // Allow C state tasks
}
void C0(void)
{
// loop rate synchronizer for C-tasks
if(CpuTimer2Regs.TCR.bit.TIF == 1)
{
CpuTimer2Regs.TCR.bit.TIF = 1; // clear flag
//-----------------------------------------------------------
(*C_Task_Ptr)(); // jump to a C Task (C1,C2,C3,...)
//-----------------------------------------------------------
}
Alpha_State_Ptr = &A0; // Back to State A0
}
任务A:
[cpp] view plain copy
void A1(void)
{
do something
//the next time CpuTimer0 'counter' reaches Period value go to A2
A_Task_Ptr = &A2;
}
void A2(void)
{
do something
//the next time CpuTimer0 'counter' reaches Period value go to A3
A_Task_Ptr = &A3;
}
void A3(void)
{
do something
//the next time CpuTimer0 'counter' reaches Period value go to A4
A_Task_Ptr = &A4;
}
void A4(void)
{
do nothing
//the next time CpuTimer0 'counter' reaches Period value go to A1
A_Task_Ptr = &A1;
}