天天看點

狀态機 switch-case方式 C語言 實作

(有限)狀态機是系統狀态變化的流程圖,詳細看見百度,這裡隻講解如何設計程式設計

設計狀态機的步驟:

1.确定系統所有狀态,最好畫出圖形,如下圖

2.每個狀态觸發/切換的條件

3.軟體編寫驗證

BLDC常用狀态機切換流程圖:

狀态機 switch-case方式 C語言 實作

 bldc常用的6個狀态,切換條件這裡隻是示意,實際的觸發條件比這個要複雜;

代碼編寫,這裡采用switch-case格式

switch (state)

{

        case idle:function;break;

        .......

        case run:function;break;

        default:break;

}

編寫狀态機程式時可以先在VC++6.0或visual studio中程式設計調試效果,效率更高

case 的條件事先宏定義,這裡也可以采用if -else if -else格式,不過太分散;

一般電機控制的狀态比較少,少于10個,是以用switch-case比較合适

但是如果要切換的狀态達到幾十甚至上百個時,這種結構就不太合适了,太費時了,那時就要使用函數指針數組的形式了,見下一篇文章

繼續閱讀