您的位置:首页 > 其它

嵌入式程序开发中一种实现state machine的方法

2010-06-18 13:28 603 查看
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功能,这是一种直接简单的方法,现在正在想此方法的优缺点。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: