有限状态机(FSM)
一、什么是有限状态机
有限状态机就是一种用来描述对象不同状态之间如何相互转换的模型,这里最简单的例子就是动画状态机 animator 我们每一次都只能处于一个状态,每一个状态又可以通过一定的条件相互转换。
二、主要特点
有限状态机是具有离散输入和输出的系统的一种数学模型。
其主要特点有以下几个方面:
– (1)系统具有有限个状态,不同的状态代表不同的意义。按照实际的需要,系统可以在不同的状态下完成规定的任务。
– (2)我们可以将输入字符串中出现的字符汇集在一起构成一个字母表。系统处理的所有字符串都是这个字母表上的字符串。
– (3)系统在任何一个状态下,从输入字符串中读入一个字符,根据当前状态和读入的这个字符转到新的状态。
– (4)系统中有一个状态,它是系统的开始状态。
– (5)系统中还有一些状态表示它到目前为止所读入的字符构成的字符串是语言的一个句子。
三、如何实现
在嵌入式系统开发里面,我们多使用C语言来实现,即使用swicth()语句。将有限的状态以enum声明,并在swith-case中遍历与跳转。我们以IIC的实现为例进行说明:
我们先看看I2C状态流转图
我们需要将上述IIC状态以enum声明,并在case语句中标明即可。
在后续的帖子里面,版主会上传以状态机形式编写的IIC的源代码 。