91视频免费?看_蜜芽MY188精品TV在线观看_国产免费无遮挡在线观看视频_深夜国产_亚洲精品欧洲精品_欧美黑人粗暴多交

程序小白
認證:優質創作者
所在專題目錄 查看專題
【第二章】HSM層次式狀態機理論(進階版)
【第三章】有限狀態機(FSM)之炸彈項目(實戰1)
【第四章】有限狀態機(FSM)之炸彈項目(實戰2)
【第五章】有限狀態機(FSM)之炸彈項目(實戰3)
【第六章】層次式狀態機HSM = 有限狀態機FSM + 面向對象
【第七章】如何創建基于HSM狀態機的應用
作者動態 更多
基于stm32采用PWM驅動伺服控制器學習筆記
05-13 15:25
基于STM32驅動TM1638學習筆記——軟件篇
04-19 12:42
基于TM1638驅動8位數碼管設計分享
02-24 11:26
RT-Thread驅動之路: Studio創建FAL分區⑤
01-02 08:30
RT-Thread驅動之路: Studio 掛載通用SPI flash④
2024-12-23 13:41

【第七章】如何創建基于HSM狀態機的應用

      如何創建一個狀態機的應用程序,是比較簡單的,如果把你的應用程序改造成狀態機是比較困難的,換個說法,如何把應用程序優雅的用狀態機實現,這有點考驗你對項目需求和狀態機兩方面的理解能力。這一篇我們只講把一個簡單的應用編程一個狀態機應用程序。

      第一步,就是枚舉信號,也就是整個狀態機應用里面用到的所有信號都枚舉出來。如下:

     

      注意下,第一個信號A_SIG 的默認值是Q_USER_SIG,也就是說他是第一個Q_USER_SIG信號,而狀態機本身是有幾個被默認信號的,Q_ENTRY_SIG/Q_EXIT_SIG/Q_INIT_SIG,這幾個默認的信號已經在QEP處理器中被事先定義好了:

      第二步,定義事件類型,QEP有默認的事件類型,叫QEvt,他只提供一個最簡單的類型,或者說是事件處理器需要的類型,實際應用中你可能需要一個事件帶有其它的參數,這時候你需要繼承QEP的默認事件來創建你的事件類型。這兩種情況給出官方定義的兩種事件類型的例子如下:

      第三步、派生狀態機類型,這個詞在C++中用來還是比較合適,針對C來講,我們暫且稱之為定義狀態機類型。

      第四步、聲明狀態處理函數。

      第五步、實例化一個特定狀態機對象、以及實例化一個通用狀態機全局指針。

      第六步、構造狀態機、類似于C++中的構造函數。

      第七步、定義狀態處理函數。

      到這里應該沒有遺漏的了,關于狀態機相關的內容編碼就完畢了,下面就是要真正的讓狀態機跑起來,你需要在main函數中進行一些操作,讓這個狀態機真正的運行起來,針對事件驅動型系統來講,狀態機本身是被動的,他不會主動進行任何操作,他需要事件處理器進行分發事件,然后根據分發的事件觸發狀態處理或轉換。

      關于如何讓狀態機運行起來,我們需要在main函數中進行一下操作,還是拿這個例程為模板進行說明吧。

      第一步、顯式調用ctor函數,構造狀態機。

      第二步、顯式調用init函數,初始化狀態機。

      第三步、采集輸入信號、構造事件對象、調用事件處理器,將相應的事件發送給狀態機。

以上步驟就完成了一個單一狀態機的編碼及應用。

聲明:本內容為作者獨立觀點,不代表電子星球立場。未經允許不得轉載。授權事宜與稿件投訴,請聯系:editor@netbroad.com
覺得內容不錯的朋友,別忘了一鍵三連哦!
贊 7
收藏 8
關注 151
成為作者 賺取收益
全部留言
0/200
  • RTX51 2021-07-14 20:41
    您好,請發一下狀態機專題的源碼,謝謝 517016995@qq.com
    回復 3條回復
主站蜘蛛池模板: 烟台市| 衡东县| 长兴县| 澄城县| 定襄县| 肇东市| 柏乡县| 监利县| 泸水县| 汉源县| 南江县| 嵊州市| 尖扎县| 始兴县| 西青区| 武陟县| 弥勒县| 梅河口市| 汝州市| 洪湖市| 阿巴嘎旗| 庆元县| 连云港市| 哈密市| 宿州市| 克山县| 铜陵市| 郸城县| 新建县| 霞浦县| 拜泉县| 阿勒泰市| 武清区| 永新县| 通江县| 水城县| 新源县| 宝山区| 衡东县| 凤阳县| 河北区|