雖然一直ST用庫做實驗,但沒有進行認真的總結(jié)??偸窍忍砑觾r格文件,然后編譯。能通過就完成,通不過就再添加別的文件。今天就一步步來梳理下建立用庫工程的步驟。爭取做到傻瓜式,讓即使完全沒用過MDK的人都能使用。
第一步:到ST下載標準外設(shè)庫和演示工程,也可以問賣你開發(fā)板的人要。我的庫文件是淘寶商給的。可以通過我的百度網(wǎng)盤下載,地址:
【http://pan.baidu.com/share/link?shareid=497853&uk=3087328531】
下載后解壓縮即可。此時可以進入各個目錄簡單熟悉下外設(shè)庫里邊的東西
第二步,建立MDK工程
打開MDK程序,會自動打開上次的工程。我們關(guān)掉它,然后再新建我們自己的工程:
這時會彈出創(chuàng)建工程對話框,選擇要保存的位置,然后選擇你的MCU。
這里我建立的是一個使用Tim定時器的工程,工程文件名為TIM。使用的MVU為STM32F4VG。昨晚這些選擇點擊就會彈出對話框,詢問是否要將STM32F4系列MCU的啟動文件復(fù)制到工程文件夾,點擊確認讓復(fù)制到咱們的工程文件夾里邊。
這是我們就可以看到我們新建的工程了。
組織工程目錄:
工程目錄與實際文件目錄沒有必然的對應(yīng)關(guān)系。我們可以根據(jù)自己需要添加。
這里我定義的幾個目錄:user,存放主函數(shù)和一些功能函數(shù)。board:自己寫的外設(shè)初始化和外設(shè)應(yīng)用,periph存放ST標準外設(shè)庫
第三步,添加外設(shè)庫到工程【重點】
在第一步中解壓后的文件夾中,進入STM32F4-Discovery_FW_V1.1.0ProjectPeripheral_Examples中。這里存放的是ST標準庫的例程。我們需要在這里復(fù)制幾個文件到我們的工程中。
進入任一一個工程文件夾,我使用的是ADC3_DMA。找到以下幾個文件,將其復(fù)制到我們的工程中去:
stm32f4xx_conf.h stm32f4xx_it.c stm32f4xx_it.h system_stm32f4xx.c
其中system_stm32f4xx.c中定義了一些時鐘初始化的函數(shù),在剛才向工程中添加的啟動文件會調(diào)用這里的函數(shù)。
添加完這些文件之后,開始設(shè)置工程選項,在Project窗口中選擇Target1之后在Project菜單中調(diào)出工程屬性對話框:
先勾選這個:
打開C/C++選項卡
這里要可以將外設(shè)庫的inc文件夾、存放board目錄中文件文件夾、還有組工程目錄文件夾加入。
我加入玩引用的最終效果:
點擊OK退出即可。
之后我們就可以向工程中添加外設(shè)庫文件了。添加文件跟剛才的組織工程目錄一樣,點擊addfile,會彈出添加文件對話框。
在右邊對話框中定位到在剛才解壓縮的文件夾中:STM32F4xx_StdPeriph_lib v1.0.2STM32F4xx_StdPeriph_Driversrc
選擇需要的文件即可。因為我需要使用tim定時器,做PWM輸出實驗。所以除了tim庫還要添加GPIO庫。
此外misc.c文件是所有工程都要添加的,rcc庫是定義時鐘所必需的,也一并將其添加到工程中。
第四步:添加主函數(shù)文件
File-》new save 文件名可隨意,后綴必需為.c。我命名為main.c
在main.c中添加主函數(shù)定義和對公共頭文件stm32f4xx_conf.h的引用。stm32f4xx_conf.h包含了對所有的外設(shè)庫的引用。
#include "stm32f4xx_conf.h"
int main()
{
while(1);
}
保存之后,利用上邊的方法將這個文件添加到工程的user目錄中。
最后的工程目錄結(jié)構(gòu)是這樣的:
在
此時,如果安鍵盤上的F5進行編譯的話會報一堆錯誤:Undefined symbol assert_param
這是因為我們還缺少一個紅定義,庫文件里邊的一些條件編譯選項需要這個定義才能用。我們打開工程屬性菜單,重新定位到C/C++選項卡。添加宏定義:USE_STDPERIPH_DRIVER,
重新編譯即可。
到此工程建立完畢。如果你還需要用到別的外設(shè),只要將外設(shè)庫文件加入到工程中即可。
調(diào)試,編譯,設(shè)置仿真器等部分不做介紹。