我已经实现了一个有限状态机,它基本上保证了外部芯片的配置,该芯片通过I2C与我的单片机通信。配置状态机的框架如下所示:

而配置寄存器N状态是它们自己的状态机。这是相当简单的状态图,但有一个复杂。该芯片可以异步产生“故障”事件,该事件通过断言“故障”引脚进行信号处理。用执行状态机的同一周期读取故障引脚的状态。故障引脚激活的服务基于另一个状态机。因此,包含故障引脚激活服务的基本状态图如下所示:

乍一看,状态图中有几种重复的模式。首先是寄存器配置的状态图,其次是故障引脚激活处理的状态图。我想利用这些模式,避免在几个地方重复相同的代码。有人能给我建议解决办法吗?
发布于 2021-02-17 10:40:52
如果在断言错误后重复配置寄存器不是远程设备的问题,那么您可以使用带有历史伪状态的嵌套状态机,如下所示

如果没有历史记录,则来自历史状态的箭头指示哪个状态将变为活动状态,否则最后一个活动子状态将被重新激活。
如果所有“配置寄存器N”状态机实际上是相同的,唯一的区别是数据被传输,那么您也可以为所有寄存器使用一个状态机,并使用不同的数据反复调用它,如下所示:

https://softwareengineering.stackexchange.com/questions/422376
复制相似问题