stm32 開發(fā)環(huán)境MDK+庫文件配置
掃描二維碼
隨時(shí)隨地手機(jī)看文章
stm32 是一款arm cortex-m3 架構(gòu)的芯片 結(jié)合庫函數(shù)使用 可以更方便的實(shí)現(xiàn)各種功能 尤其是結(jié)合各種總線開發(fā)應(yīng)用時(shí) 因?yàn)閹旌瘮?shù)已經(jīng)封裝很多總線的處理方法和驅(qū)動(dòng) 直接調(diào)用對(duì)應(yīng)庫函數(shù) 就可以操作各個(gè)總線 相比于 直接操作寄存器來說 操作I2C SPI CAN 等總線結(jié)構(gòu) 會(huì)簡單很多
stm32 的開發(fā)工具有很多MDK ADS AVR 等 我用的是MDk 其實(shí)就是可以編譯arm的keil 界面和keil是一樣的 之前安裝過keil 直接把MDK 覆蓋原來的keil 就可以支持51單片機(jī)和arm的芯片的開發(fā)
MDK官網(wǎng)下載地址 :https://www.keil.com/arm/demo/eval/arm.htm
stm32 V3.5.0 庫文件官網(wǎng)下載:stm32f10x_stdperiph_lib.zip
stm32 相關(guān)資料:http://www.st.com/internet/mcu/product/164492.jsp
關(guān)于開發(fā)應(yīng)用 是使用庫函數(shù) 還是直接操作寄存器的問題 我覺得使用庫函數(shù) 有很多的好處 尤其是在團(tuán)隊(duì)開發(fā)應(yīng)用的時(shí)候 每個(gè)程序員都有自己的代碼風(fēng)格 加上操作寄存器的復(fù)雜 項(xiàng)目巨大的代碼量 會(huì)讓開發(fā)和維護(hù)變得困難 當(dāng)然想更為深入了解arm 的原理 直接操作寄存器當(dāng)然可取 而且當(dāng)你熟悉到一定程度 可能寫出的代碼 會(huì)比庫函數(shù)的效率更高 不過一般的應(yīng)用 使用庫函數(shù)都可以實(shí)現(xiàn) 庫函數(shù)很類似于 php 等語言中框架的概念 對(duì)開發(fā)很有幫助
固件庫設(shè)置
庫函數(shù)中很多內(nèi)容是可以刪減的 減小項(xiàng)目的大小 可以根據(jù)自己的習(xí)慣 改變庫函數(shù)結(jié)構(gòu)
首先解壓縮下載的固件庫(保留一個(gè)備份,你懂的)
_htmresc : ST 的logo 完全無用,可以刪去。
Libraries: 比較重要的文件包含STM32的系統(tǒng)文件和大量頭文件,也就是庫文件了。
Project: 包含大量外設(shè)的例程,和各個(gè)軟件版本的評(píng)估版工程模板。KEIL 對(duì)應(yīng)的就是MDK-ARM 文件下的工程模板。你也可以利用這個(gè)工程模板來修改,得到你自己的工程模塊,開發(fā)中不需要,可以刪去。
Utilities: 就是評(píng)估版的相關(guān)文件:也不會(huì)用到,可以刪去。
需要先去掉這四個(gè)文件的只讀屬性,選擇文件夾后,右鍵屬性,勾去只讀。。。
我刪減后庫函數(shù)結(jié)構(gòu)如下圖:
STM32 v3.5 庫函數(shù)實(shí)際文件結(jié)構(gòu)Cmsis 包含微控制器外設(shè)訪問層和內(nèi)核設(shè)備訪問層文件;
Startup 當(dāng)然包含的是stm32的 啟動(dòng)文件,與芯片F(xiàn)lash容量有關(guān),詳見手冊(cè)
Libraries 包含的是標(biāo)準(zhǔn)外設(shè)庫驅(qū)動(dòng)源文件(src文件夾) 和 (inc) 標(biāo)準(zhǔn)外設(shè)庫驅(qū)動(dòng)頭文件
User中包含的是項(xiàng)目的代碼 和中斷代碼
Project 用于包含編譯是時(shí)生成的一系列文件,Output 用來放置輸出文件 .hex .axf,Listing用來放置Listing信息
MDK設(shè)置
在庫函數(shù)壓縮包中找到相應(yīng)文件 如上圖分配好各個(gè)文件 (可參考此文:stm32固件庫使用V3.5) 就可以繼續(xù)下一步
在keil中新建工程 比如建TEST.uvproj,保存在剛才的Project 文件夾下面。選擇你使用的STM32芯片,比如我用的是103RB 的,就選擇那個(gè),確定后,會(huì)跳出來個(gè)窗口,問你是否復(fù)制啟動(dòng)代碼,選擇否,因?yàn)槲覀儙旌瘮?shù)中已經(jīng)有了,前面的準(zhǔn)備工作不是白做的。
然后右鍵TARGET 1,選擇Manage Ccmponents,根據(jù)剛才的庫函數(shù)文件結(jié)構(gòu)把文件加進(jìn)去,新建文件夾,再加入相應(yīng)文件。
設(shè)置好的界面如下:
keil下的這些文件夾會(huì)虛的 不一定是對(duì)應(yīng)存在的文件夾的
最后在右鍵TARGET 1,選擇Options for TARGET1 。。在tab頁 Listing,Output下點(diǎn)擊Select Folder for Objects...設(shè)置對(duì)應(yīng)的輸出文件夾 。
Output設(shè)置如下:
在C/C++下 還需要設(shè)置下Include Paths路徑,這個(gè)路徑根據(jù)你的實(shí)際文件目錄結(jié)構(gòu)相關(guān):
設(shè)置完成后就可以編譯一下測試 庫函數(shù)可以正常運(yùn)行。