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功能,这是一种直接简单的方法,现在正在想此方法的优缺点。
状态机实现与评估
本文介绍了一种通过枚举和函数指针数组实现的状态机方法,并讨论了每秒切换状态来展示不同模式的方式。该方法简单直观,适用于有限状态转换的应用场景。
1377

被折叠的 条评论
为什么被折叠?



