「話說嵌入式」STM32算法的翅膀之MATLAB
不知道大家有沒有研究過PID或者一些更高級的算法,仿真吧我們根本不知道我們要研究的對象的系統(tǒng)傳遞函數(shù),不仿真直接在設備上運行如果是復雜的算法,沒有借助Matlab的話首先找到合適的C算法就很困難,更別說進行調(diào)試,數(shù)據(jù)采集可視化以及分析了。今天阿圓就要帶大家把Matlab和STM32結(jié)合起來,強強聯(lián)合!
(為什么阿圓感覺所有人都可以來吃嵌入式這碗飯了呢?????!!??。浚?/strong>
廢話不多說,開始搞事情!要實現(xiàn)阿圓這篇文章,首先你得準備好下面的軟件環(huán)境(今天的文章有點復雜,圖片有點多,大家注意一點嘍~)
-
MATLAB (阿圓用的是MATLAB R2016a)
en.stm32-mat_target.zip
STM32CubeMX(軟件包看你使用哪個MCU)
KEIL MDK
MATLAB,STM32CubeMX及Keil的下載安裝阿圓不廢話了,自行百度。
en.stm32-mat_target.zip這是個什么玩意???
這個其實相當于MATLAB和STM32CubeMX的中間件,用于生成代碼以及工程。根據(jù)ST官方的介紹,它支持
-
Simulink應用程序?qū)TM32進行配置
STM32配置的生成依賴STM32CubeMX
生成的C代碼依賴STM32CubeMX HAL 庫
支持串口RTioStream PIL(Processor In the Loop)
Ok,上下載鏈接
http://www.stmicroelectronics.com.cn/content/ccc/resource/technical/software/sw_development_suite/91/4c/d3/45/f1/83/48/ba/stm32-mat_target.zip/files/stm32-mat_target.zip/_jcr_content/translations/en.stm32-mat_target.zip
這個STM32MAT/TARGET需要在安裝好MATLAB后安裝,另外大家要注意它安裝的位置
E:MATLABSTM32-MATSTM32 這是阿圓的安裝位置,阿圓的MATLAB安裝在D盤
好了,安裝好后就可以開始啦
[1]打開Matlab,設置好workspace的路徑,非常關鍵,如果workspace在系統(tǒng)路徑,在后面會有很多想不到的錯誤。
阿圓這里設置的路徑為E:ProjectMatlabTestworkspace
[2]添加 STM32MAT/TARGET路徑,在命令窗口輸入pathtool后會跳出設置路徑,點擊[添加并包含子文件夾] 需要添加的路徑為E:MATLABSTM32-MATSTM32
注意,這里有個坑,添加完后如果直接繼續(xù)后面的步驟會有問題,建議保存后重啟下MATLAB。
[3]新建Simulink Model,這里只需要新建一個空的Model即可
[4]在新建的Simulink并進行STM32CubeMX工程配置
點擊小齒輪
再點擊左側(cè)的Code Generation選擇System target file為stm32.tlc(需要點擊Browse進行選擇)
點擊Comments勾選 上Comments里的Simulink block/Stateflow object comments,不然編譯會報錯,有點奇怪。
還沒完?。▋?nèi)心崩潰。。。。)
點擊STM32 Options設置好STM32CubeMx Path update,并且勾上(MATLAB可以自動識別,不過有點慢,最好自己填了)
搞定配置?。▏u噓噓噓噓噓噓噓噓噓噓噓噓噓噓)
[5]現(xiàn)在來準備生成框圖了!
點擊View->Library Browser進行庫的瀏覽
拉到最下,這里一定要有Target Support Package – STM32 Adapter
將STM32_Conifg拖到Simulink(MATLBA基本操作),并雙擊
點擊New ioc file生成所需要的一個工程,這里呢,就是生成普通的工程,完全沒有什么特別的,生成完工程后點擊
Select STM32 configuration file選中生成的工程的ioc就可以了!
為演示目的,阿圓用的是STM32F437ZGT6,并使用PA1和PA2,目標是將PA1配置成輸入,并將值輸出到PA2引腳,就這么簡單。
STM32CubeMX可關可不關,不影響使用。
[6]配置最簡單的系統(tǒng)框圖
將GPIO_Read/GPIO_Write拖過來,雙擊配置
會發(fā)現(xiàn)只有配置好的PIN才能選擇,很方便!
最后將兩個引腳連接在一起!框圖就算好了!
[7]生成KEIL支持的代碼工程,終于到最后一步了
等待一會,電腦差的就去休息一下吧,正常的話就會跳出要
打開Open Project。
工程左側(cè)多了一欄的MATLAB文件夾, 看下代碼MatlabTest.c里的內(nèi)容,確實是輸入輸出的
試試能不能編譯下載!阿圓在MatlabTest.c下了個斷點,編譯運行,正常!
萬里長征第一步,終于把MATLAB的代碼在STM32上跑起來了!
看到這兒,MATLAB還有好多功能沒有用到,阿圓會在后面的合適的機會再向大家展示。
在這里不得不吐槽一下,MATLAB的配置過程中遇到了好多問題,要么是STM32CubeMX 不能生成工程,要么是奇怪的編譯錯誤,還不是很順手,大家遇到問題,可以來阿圓這里進行討論~
好了,今天阿圓的分享就到這,謝謝大家?。ɡ鄣脡騿埽。?/p>