1. 程式人生 > >stm32 開發環境MDK+庫檔案配置

stm32 開發環境MDK+庫檔案配置

stm32 是一款arm cortex-m3 架構的晶片 結合庫函式使用 可以更方便的實現各種功能 尤其是結合各種匯流排開發應用時 因為庫函式已經封裝很多匯流排的處理方法和驅動 直接呼叫對應庫函式 就可以操作各個匯流排 相比於 直接操作暫存器來說 操作I2C SPI CAN 等匯流排結構 會簡單很多

stm32 的開發工具有很多MDK ADS AVR 等 我用的是MDk 其實就是可以編譯arm的keil 介面和keil是一樣的 之前安裝過keil 直接把MDK 覆蓋原來的keil 就可以支援51微控制器和arm的晶片的開發

關於開發應用 是使用庫函式 還是直接操作暫存器的問題 我覺得使用庫函式 有很多的好處 尤其是在團隊開發應用的時候 每個程式設計師都有自己的程式碼風格 加上操作暫存器的複雜 專案巨大的程式碼量 會讓開發和維護變得困難 當然想更為深入瞭解arm 的原理 直接操作暫存器當然可取 而且當你熟悉到一定程度  可能寫出的程式碼 會比庫函式的效率更高 不過一般的應用 使用庫函式都可以實現 庫函式很類似於 php 等語言中框架的概念 對開發很有幫助

韌體庫設定

庫函式中很多內容是可以刪減的  減小專案的大小 可以根據自己的習慣 改變庫函式結構

首先解壓縮下載的韌體庫(保留一個備份,你懂的)

    _htmresc : ST 的logo 完全無用,可以刪去。

    Libraries: 比較重要的檔案包含STM32的系統檔案和大量標頭檔案,也就是庫檔案了。

    Project: 包含大量外設的例程,和各個軟體版本的評估版工程模板。KEIL 對應的就是MDK-ARM 檔案下的工程模板。你也可以利用這個工程模板來修改,得到你自己的工程模組,開發中不需要,可以刪去。

    Utilities: 就是評估版的相關檔案:也不會用到,可以刪去。

需要先去掉這四個檔案的只讀屬性,選擇資料夾後,右鍵屬性,勾去只讀。。。

我刪減後庫函式結構如下圖:

stm32_lib_file.jpgSTM32 v3.5 庫函式實際檔案結構

Cmsis 包含微控制器外設訪問層和核心裝置訪問層檔案;

Startup 當然包含的是stm32的 啟動檔案,與晶片Flash容量有關,詳見手冊

Libraries 包含的是 標準外設庫驅動原始檔(src資料夾) 和 (inc) 標準外設庫驅動標頭檔案

User中包含的是專案的程式碼 和中斷程式碼

Project 用於包含編譯是時生成的一系列檔案,Output 用來放置輸出檔案 .hex .axf,Listing用來放置Listing資訊

MDK設定

在庫函式壓縮包中找到相應檔案  如上圖分配好各個檔案 (可參考此文:stm32韌體庫使用V3.5) 就可以繼續下一步 

在keil中新建工程  比如建TEST.uvproj,儲存在剛才的Project 資料夾下面。選擇你使用的STM32晶片,比如我用的是103RB 的,就選擇那個,確定後,會跳出來個視窗,問你是否複製啟動程式碼,選擇否,因為我們庫函式中已經有了,前面的準備工作不是白做的。

option_keil.png

然後右鍵TARGET 1,選擇Manage Ccmponents,根據剛才的庫函式檔案結構把檔案加進去,新建資料夾,再加入相應檔案。

設定好的介面如下:

set_keil.png

keil下的這些資料夾會虛的 不一定是對應存在的資料夾的 

最後在右鍵TARGET 1,選擇Options for TARGET1 。。在tab頁 Listing,Output下點選Select Folder for Objects...設定對應的輸出資料夾 。

Output設定如下:

Output_set.png

在C/C++下 還需要設定下Include Paths路徑,這個路徑根據你的實際檔案目錄結構相關:

C_tab_set_mdk.png

設定完成後就可以編譯一下測試 庫函式可以正常執行。