學生在基于stm32的單片機程序,查到可以結合Matlab快速開發程序,有篇論文《基于Matlab的STM32軟件快速開發方法》,有所介紹,但是整個過程并不是很清楚,嘗試了一把,過程詳細總結一下吧!
首先需要安裝RapidSTM32開發模塊,網址為https://www./download/

點擊上圖的Download Now即可。
下載完成后解壓,文件how_to_setup.txt中詳細說明了安裝步驟
How to install RapidSTM32 Blockset
=========================================================
1. Unzip rapidstm32_####.7z to any temporary directory.
(#### represents release
version.)
2. Open Matlab
3. Open and run install_rapidstm32.m from Matlab environment
4. Install Keil RealView MDK for ARM (if not yet installed)
5. Install Microsoft dot NET Framework 3.5 (if not yet
installed)
第1步已經完成了,下一步打開matlab,在edit中打開install_rapidstm32.m文件運行,這將完成此模塊的安裝,另外還有個uninstall_rapidstm32.m文件,即如果不想用此模塊了,可以運行此文件卸載模塊。
然后如果電腦上沒有安裝Keil RealView MDK for ARM,需要安裝此程序,網上有破解版,按步驟正常安裝就行。NET
Framework 3.5也需要安裝,不過貌似如果安裝了VS,這個默認已經配置好了。
至此,模塊就配置好了!
下面說說一個例子吧,此模塊的官網上有不少資料,當然是英文的,但如果選擇中文語言,就跳出404錯誤找不到網頁,還是積極看英文吧,網址http://www./learn/index.php/Learn_RapidSTM32_Home
另外在http://www./learn/index.php/Your_First_Matlab/STM32_Program也講了2個例子,基本也是一步一步教的,視頻是在youtube上,看不了,不過最下面提供了例子和視頻的下載鏈接,老外做東西就是厚道。
這里簡單講一個matlab協助產生正弦波的仿真例子:
首先用matlab產生正弦波的數據
clear
f=50;
w = 2*pi*f;
T = 1/f;
Ts = 1/(200*f);
t = 0:Ts:(T-Ts);
y = sin(w*t)+2;
plot(t,y)
即產生一個50Hz,時長一個周期0.02s的正弦波,采樣周期0.0001s。y的值后面會用到,如何用,一會說。
matlab中輸入simulink打開Simulink Library
Browser,新建一個模型,保存,取名為sin_boxing。然后向模型中插入如下模塊
Simulink->Sinks->Scope示波器

RapidSTM32 Blockset->Device
Configuration->Setup System Clocks &
SysTick系統時鐘,如下

RapidSTM32 Blockset->On-Chip
Peripherals->Arbitrary–Function
Generator任意函數產生器,如下

此模塊只需要一個出口就夠了,所以雙擊此模塊,在屬性對話框中設置Mode為Arbitrary DAC1,如下

這時就變成一個接口了。
并如下連接

然后進行仿真設置,選擇菜單欄Simulation/Configuration
Parameters,選擇Code
Generation,Matlab2011b是選這個,其他版本的matlab可能不同。設置Target
selection下的System target file為rapidstm32.tlc,language選為c,如下圖

選擇Code Generation下的RapidSTM32
Options,設置Cross-Compiler為Realview MDK,如下

下面設置加入的模塊的參數,雙擊Arbitrary–Function
Generator,設置Sample time為0.0001

在Data for DAC1中輸入剛才產生的y的所有值,由于數值比較多,可以如下操作,在matlab的Command
Window中輸入y',即y的轉置,復制顯示的一列數值

粘貼到Data for DAC1中,點擊Apply,數值自動變成如下格式

這時的數值是用;分號隔開的,這是一列,不能作為輸入,需要轉化為一行,方法很簡單,定位到最后,在]后輸入一個',即轉置符

離開文本框,則自動轉化為一行數據

設置完成,點擊OK。
然后在空白處右擊,彈出右鍵菜單,如下,點擊Update Diagram

此后,matlab會快速更新、編譯程序,編譯成功后各模塊變為紅色。
設置工具欄上的仿真總時間為0.1,然后點擊左邊的三角號運行

運行結束后,雙擊示波器Scope,可以看到仿真結果

注意的是,在matlab的Command Window里會顯示warning,不用管它,是設置的問題。
以上演示了matlab與RapidSTM32模塊的聯合仿真,當然這只是開始,后面可以將此matlab仿真程序轉化為c代碼,這才是此RapidSTM32模塊真正功能所在,所以在RapidSTM32模塊的幫助,本來需要用c編寫的程序,現在全部轉化在matlab中完成了,是不是很贊!具體實現參考文獻和網上資料吧!
|