状态机实现技术解析
1. 一维状态表与状态设计模式概述
在状态机的实现中,一维状态表的直接实现里,转换是更复杂的对象,包含以下内容:
- 指向守卫函数的指针
- 下一状态
- 指向动作函数的指针列表
而面向对象的状态机实现方法被称为状态设计模式。其目的是使状态机对象在运行时从一个状态转换到另一个状态时,看起来像是改变了其类。
1.1 时间炸弹状态机的一维状态转换表
以下是时间炸弹的一维状态转换表:
| 当前状态 | 事件 (参数) | [守卫条件] | 下一状态 | 动作 |
| ---- | ---- | ---- | ---- | ---- |
| setting | UP | [me->timeout < 60] | setting | ++me->timeout; BSP_display(me->timeout); |
| setting | DOWN | [me->timeout > 1] | setting | ––me->timeout; BSP_display(me->timeout); |
| setting | ARM | | timing | me->code = 0; |
| setting | TICK | | timing | |
| timing | UP | | timing | me->code <<= 1; me->code |= 1; |
| timing | DOWN | | timing | me->code <<= 1;
超级会员免费看
订阅专栏 解锁全文
172万+

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



