enum STATE_MACHINE {
MODE_INIT,
MODE_NORM,
MODE_ADVANCED,
MODE_SLEEP
};
extern INT8U StateIndex;
void Mode_Transit( void );
===========
const void (*State_Machine[])(void)={
Mode_Init,
Mode_Norm,
Mode_Advanced,
Mode_Sleep,
};
INT8U StateIndex;
void Mode_Transit( void )
{
if ( StateIndex > MODE_SLEEP ){
StateIndex = 0;
}
State_Machine[StateIndex]();
}
我们可以在每一秒钟切换一次state,即改变StateIndex的值,然后再每个state对应的函数下,把当前mode的名字显示出来,举例:
void Mode_Init( void )
{
//display “Initial Mode”
}
这一页的描述就实现了state machine功能,这是一种直接简单的方法,现在正在想此方法的优缺点。