前段时间开发一个小设备,
结构很简单,
里面是六个一样的串行通讯模块,
奇怪的是,
一个模块的话,
通讯是正常的,
二个的话就会有错的,
六个全部编译完成后,
基本就不干活了,
一直以为是布局的问题,
优化了一遍又一遍完全没有起色。
跟踪了无数次,
终于发现程序卡在状态机上。
状态机本质上就是一些与门,
它与它与出来就是状态一,
它跟它与出来就是状态二……
一旦输入状态出现不可能出现的情况时,
它就不进入任何状态了,
完了。
解决办法很简单,
选“安全状态机”,
就OK了,
出错时就倒向其中一个了,
程序简单处理一下,
转一圈就转回来了。