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