有限状态机
**有限状态机FSM(Finite State Machine)**思想广泛应用于硬件控制电路设计,也是软件上常用的一种处理方法(软件上称为FMM–有限消息机)。
它把复杂的控制逻辑分解成有限个稳定状态,在每个状态上判断事件,依据判断进入下一个状态,变连续处理为离散数字处理,符合计算机的工作特点。同时,因为有限状态机具有有限个状态,所以可以在实际的工程上实现。但这并不意味着其只能进行有限次的处理,相反,有限状态机是闭环系统,有限无穷,可以用有限的状态,处理无穷的事务。
有限状态机的思想为我们编写状态较为复杂的程序提供了很方便的解决方案。例如通过代码来反应小车的运动,首先小车启动是一个加速的状态,然后小车匀速运动一段距离是一个匀速的状态,最后小车停下来又是一个减速的状态。这就可以将这三个状态反应到代码上:
enum
{
WATING, //等待启动
STRAT, //启动
CONSTANT, //匀速
BRAKE, //刹车
}CarState = WATING; //初始状态为启动
STATE_UPDATE()
{
switch(CarState)
{
case WATING:
if(收到启动指令)
{
CarState = START;
}
break;
case START:
velocity += delt_vel;
if(velocity == 匀速行驶的速度)
{
CarState = CONSTANT;
}
break;
case CONSTANT:
distance += delt_distance;
if(distanc