作系統 | Windows 11 注意: 對Windows Server 2019的支持將在即將發布的版本中停止 |
處理器 | 最低:任何具有兩個或更多內核 |
內存 | 最低:8 GB 建議:16 GB |
存儲 | 3.8 GB,僅 MATLAB |
圖形 | 不需要特定的顯卡,但建議使用支持 OpenGL 3.3 和 1GB GPU 內存的硬件加速顯卡。 使用并行計算工具箱的 GPU 加速需要具有特定計算能力范圍的 GPU。 |
第1步:找到安裝文件
第一步
等待初始化完成
等待中
第2步:選擇如圖所示
選擇安裝方式
第3步:填入安裝密鑰
填入密鑰
第4步:選擇許可證文件(.Lic結尾文件),點擊下一步。
選擇許可證文件
第5步:選擇要安裝的位置,建議新手默認安裝
選擇文件夾
第6步:選擇要安裝的模塊,根據自己所需要的進行安裝。行業不同需要的也不同。
選擇要安裝的模塊
第7步:選擇創建快捷方式后點擊下一步。
等待安裝
完成安裝
安裝過程根據所選擇的模塊不同、電腦配置不同等安裝的時間長短也不一樣,請耐心等待。
安裝中
安裝完成后根據自己需要再進行添加相關的環境比如、Python、java、c# 環境等等。
提示
1
2
3
4
5
6
7
8
9
10
11
12
Matlab版本:2021b
操作系統:Win10專業版
硬件平臺:YF-STM32-ALPHA 1R4
本次實驗所用到的Simulink模型如圖5.1所示,狀態機(Stateflow)內部模型如圖5.2所示。
實驗現象: 按鍵按下、松開LED實現亮滅翻轉效果,當按鍵按下時會產生上升下降沿脈沖,通過狀態機來控制LED燈狀態,當LED狀態為0時,LED點亮,當LED狀態為1時,LED熄滅。
按鍵電路采用對電源負極外部上拉連接方式,如圖5.3所示,按鍵松開狀態為高電平H,即邏輯1,按鍵按下狀態為低電平L,即邏輯0,按鍵在實際電路板中的位置如圖5.4所示。
溫馨提示:圖5.3中的電路接了上拉,而在之前的文章中介紹的按鍵沒有接上拉,經過仔細研究發現官方的支持包默認是浮空輸入,容易受外部信號干擾,這也是為什么之前文章中測得的波形跳動比較大,出現很多跳變波形。
圖5.1 按鍵控制LED亮滅simulink模型
圖5.2 按鍵控制狀態機(Stateflow)模型
5.3 按鍵控制LED亮滅原理圖
圖5.4 按鍵在開發板中的位置
溫馨提示:本篇介紹的操作方式適用于2021b版本matlab,其他版本在使用上會有略微差異。
關于輸入輸出的模型前面有介紹,本篇就不再贅述,這里重點介紹“chart”模型部分,本次實驗用到的模型整體外觀如圖5.5所示,simulink中“chart”模型位置位于“建?!睓谥械摹安迦雸D”處,如圖5.6所示,整個模型外觀包含一個兩個事件輸入和兩個狀態量輸出。
圖5.5 按鍵模型中的“chart”模型
圖5.6 “chart”模型在simulink中位置
雙擊“chart”模型打開該模型內部如圖5.7所示,在simulink“建模”欄處找到“模型資源管理器”單擊打開,然后再點擊“chart”處,可以看到整個狀態機所包含的信息。
按鍵狀態模型中總共包含四個狀態(初始狀態,按下狀態、松開狀態、復位狀態)、兩個事件(Event)輸入(上升、下降沿輸入)和兩個數據(Data)狀態量輸出(LED狀態、按鍵狀態)以及四個狀態傳輸線(Transition)。
圖5.7 “char”打開模型內部
如何搭建該模型?首先選中“建模”欄點擊“插入”四個狀態,如圖5.8所示,然后填寫相應的信息,如圖5.9所示,這里需要特別注意中間的格式,至于格式為什么是這樣的,這是規定,就像C語言的語法規則一樣,讀者朋友暫且按照這種方式填寫,后面熟練了再靈活去修改。細心的朋友可能注意到有個其中有一個狀態有一條連接線跟其他幾個不一樣,單向的還帶有一個點,這是整個狀態機的入口位置,當模型運行時,首先運行到該處,然后有相應的輸入實際或數據輸入時才會做狀態轉移。
圖5.8 狀態插入
圖5.9 狀態中填入的信息
在狀態轉換中填入信息后,需要在“模型資源管理器”中添加與這些信息同名的事件和數據,如圖5.10所示,點擊上面有很多“1010”的圖標來添加數據量,點擊“閃電”圖標添加事件,時間,事件有四種觸發方式,根據實際的用途進行修改,例如我們需要實現“TIC_UP”上升沿時觸發事件則將“Trigger”處改為“Rising”,由于該事件為輸入所以還需要在該事件中將“Scope”處改為“Input”,“LED_State”和"Key_State"可以保持默認,將“Scope”處改為“Output”即可,模型中出現的after(20,msec)表示此處延時20ms進入下一個狀態,前提是整個模型的采樣需要設置為20ms的整數倍,本實驗模型設置的采樣周期為10ms。
溫馨提示:這里需要特別注意,事件或數據量一定要與狀態模型中的名字保持一致,例如:在狀態模型中出現LED_State=1;數據量則在添加數據量時也需要將其命名為“LED_State”
圖5.10 添加事件和狀態數據
圖5.11 事件觸發方式修改
所有模型設置完成進入到主模型中會出現一個事件輸入端口和兩個數據輸出端口,如圖5.12所示,由于時間輸入端口包含連個事件,而實際輸入端口只有一個,所以這里需要添加一個“Mux”模型用于將按鍵輸入的狀態通過兩路信號合成為一路信號輸入。
圖5.12 模型上的輸入輸出端口
圖5.13 "Mux"模型
本實驗中使用Statflow模型實現按鍵狀態輸入控制LED狀態變化,對于很多熟悉使用C語言的讀者而言,狀態機的靈活性無疑是非常方便的,狀態機編程思想無論是使用傳統C編程方式還是基于模型方式都是非常重要且實用的,甚至還有專門開發基于狀態機嵌入式框架的,例如QM,http://www.state-machine.com/index.html,如圖5.14所示為QM狀態機官方宣傳圖片。其實當你深入研究系統中的每個任務時會發現,每個任務或事件的運行它都是在等待一些條件,有可能是延時條件,有可能是資源占用信號量或其它影響該任務運行的量,而一旦該任務或事件運行完畢就會切入到其它狀態并進行標記,這里就不展示討論了,感謝興趣的讀者朋友可以深入去研究下這種編程思想。
圖5.14 QM官方宣傳圖