Skip to content

Advanced-lj/Learning-FSM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Learning-FSM(有限状态机)

概念

  1. 定义:有限状态机(finite-state machine,FSM,简称状态机)是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。
  2. 在嵌入式程序设计中,如果一个系统需要处理一系列连续发生的任务,或在不同的模式下对输入进行不同的处理,常常使用有限状态机。

四要素(事件 动作 状态 转换)

  1. 现态:是指当前所处的状态。
  2. 次态:条件满足后要迁往的新状态。“次态”是相对于“现态”而言的,“次态”一旦被激活,就转变成新的“现态”了。
  3. 条件:又称为“事件”,当一个条件被满足,将会触发一个动作,或者执行一次状态的迁移。
  4. 动作:条件满足后执行的动作。动作执行完毕后,可以迁移到新的状态,也可以仍旧保持原状态。动作不是必需的,当条件满足后,也可以不执行任何动作,直接迁移到新状态。

作用

  1. 分解耗时过长的任务。
  2. 避免软件延时对CPU资源的浪费。
  3. 使程序逻辑更加清晰。

实现

  1. 通过switch-case语句实现。
  2. 通过Arduino的FSM开源库实现。
  3. 其它方式:对于一些更复杂的任务,用switch-case语句,代码会不太简洁。

流程图

  1. 状态机的实现需要完善的流程图指导。
  2. 好的流程图才能设计出好的代码。
  3. 流程图绘制软件推荐:draw.io

About

有限状态机

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published