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