STM32开发 -- 状态机与状态切换逻辑
生活随笔
收集整理的這篇文章主要介紹了
STM32开发 -- 状态机与状态切换逻辑
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
參看:有限狀態機的兩種寫法
參看:設計模式:一目了然的狀態機圖
假設狀態機的狀態轉換由下表所示:
簡單講一下狀態轉換過程:當處于State0時發生event0 則執行action0并將狀態變成state1,當state1狀態下發生event2則執行action6并將狀態變成state2。以此類推。
下面描述下實現上述狀態機的兩種不同的寫法:
1)豎著寫:在狀態中判斷事件,并執行相應的操作,完成相應的狀態轉換。
2)橫著寫:在事件中根據當前的狀態,執行相應的操作,完成相應的狀態轉換。
兩種寫法的實現C代碼:
上述兩種寫法實現的功能完全相同,對比兩種寫法:
1)寫法1(豎著寫)使用了if -else if語句隱含了優先級,破壞可事件間的原有關系(各個時間應該同優先級)
2)寫法1(豎著寫)在結構上是順序查詢方式(查詢事件),浪費大量的時間,而且時間不可估算。
寫法2(橫著寫)因為在某個時間點上狀態是唯一確定的,在時間處理函數中通過switch語句可直接定位到相同狀態,執行時間也可以估算。
3)寫法2(橫著寫)比較直觀,程序執行效率較高。
總體來說:寫法2要優于寫法1。
未完待續~~
總結
以上是生活随笔為你收集整理的STM32开发 -- 状态机与状态切换逻辑的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ArrayList的底层实现原理
- 下一篇: sqlyog for MySQL远程连接