STM32學(xué)習(xí)之新建工程模板_第1頁
STM32學(xué)習(xí)之新建工程模板_第2頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、 STM32學(xué)習(xí)之新建程模板前好久沒寫STM32的博客了,主要還是涉及到很多核技術(shù),再加上代碼量巨,懶得整理,就不了了之了。之前的開發(fā)的程都是在已有框架上的已有產(chǎn)品中增加新功能,這次我決定從0開始,學(xué)習(xí)STM32,從搭建環(huán)境開始,到燒錄程序運(yùn)成功,系統(tǒng)的從零開始學(xué)習(xí)。本已經(jīng)繪制成功塊STM32的電路版,已經(jīng)將硬件焊接成功,主要器件如下:STM32F407ZET6正點(diǎn)原2.8 LCD MODULE個攝像頭個極管本篇博客主要記錄從零創(chuàng)建個全新的STM32F407的項過程STM32單機(jī)學(xué)習(xí)資料均來 正點(diǎn)原 ,僅于學(xué)習(xí),如有侵權(quán)請聯(lián)系我刪除本博客內(nèi)容原創(chuàng),創(chuàng)作不易,轉(zhuǎn)載請注明資料下載資料均來 正點(diǎn)原,

2、感謝原哥的開源奉獻(xiàn)全部資料均來以上站要下載有兩個:個是作為主要檔STM32F407最系統(tǒng)板開發(fā)指南-庫函數(shù)版本還有個是作為庫函數(shù),全在 A盤 資料,有需要的在中下載。STM32F4xx固件庫創(chuàng)建程開發(fā)具:Keil uVision5接下來就跟著檔,從零創(chuàng)建個STM32的project本次學(xué)習(xí)標(biāo)主要是學(xué)會STM32F407實現(xiàn)攝像頭的應(yīng)創(chuàng)建錄所以先創(chuàng)建個新的空件夾叫:MyCamera然后在MyCamera錄下創(chuàng)建五個件夾:CORE,FWLIB,OBJ,SYSTEM,USER ,如下圖:于這些件夾名字,實際上是可以任取的,這樣取名只是為了便識別。來存儲特定的類型的件創(chuàng)建程 創(chuàng)建完錄之后,就要創(chuàng)建程了

3、打開KeilProjectNew Vison Project然后在彈出來的界中,選擇我們剛才創(chuàng)建的錄下的的程名稱致,是 ,然后點(diǎn)擊保存。錄下,也就是路徑下,然后輸件名,我這和我.MyCameraUSERUSERMyCamera之后就是彈出來選擇設(shè)備,我的CPU型號是所以說選擇STM32F407ZETx型號STM32F407ZET6有關(guān)STM32的型號,正點(diǎn)原的檔中都有解釋,再次感謝原哥然后接下來的Manager Run-Time Environment 界直接點(diǎn)擊Cancel就了。到此,我們的程框架就創(chuàng)建好了,現(xiàn)在在程,只有個然后我們在系統(tǒng)中點(diǎn)開件夾,發(fā)現(xiàn)在USER錄下多了個件:下的sourc

4、e Group 1Target1MDK5.14成的程件是以為后綴。這個不能刪除.uvprojxListings 和 Objects 件夾是 MDK 動成的件夾,于存放編譯過程產(chǎn)的中間件。這兩個件不管它復(fù)制庫函數(shù)件框架已經(jīng)建好,之后就是將官的庫函數(shù)復(fù)制到我們的項件了。件復(fù)制FWLib第個是:打開官固件庫包,定位到我們之前準(zhǔn)備好的固件庫包的錄:下,STM32F4xx_DSP_StdPeriph_Lib_V1.4.0LibrariesSTM32F4xx_StdPeriph_Driver將錄下的 src,inc 件夾 copy 到我們剛才建的件夾下。FWLibsrc 存放的是固件庫的.c 件,inc

5、存放的是對應(yīng)的.h 件,還有個html件是個說明件CODE打開官固件庫包下STM32F4xx_DSP_StdPeriph_Lib_V1.4.0LibrariesCMSISDeviceSTSTM32F4xxSourceTemplatesarm將件然后定位到錄復(fù)制到 CORE 錄下。startup_stm32f40_41xxx.sSTM32F4xx_DSP_StdPeriph_Lib_V1.4.0LibrariesCMSISInclud將的 四 個 頭件 :core_cm4.h、core_cm4_simd.h 、core_cmFunc.h 以及core_cmInstr.h同樣復(fù)制到 CORE 錄下

6、。復(fù)制完的CODE結(jié)構(gòu)如下圖:簡單的說明下,在件夾下有很多.s件,主要是和芯有關(guān),主要于啟動armUSER接下來我們要復(fù)制程模板需要的些其他頭件和源件到我們程。先定位到錄:STM32F4xx_DSP_StdPeriph_Lib_V1.4.0LibrariesCMSISDeviceSTSTM32F4xxInclude將的 2 個頭件和復(fù)制到USER錄之下。stm32f4xx.hsystem_stm32f4xx.h這兩個頭件是STM32F4 程常關(guān)鍵的兩個頭件。然后進(jìn)錄,STM32F4xx_DSP_StdPeriph_Lib_V1.4.0ProjectSTM32F4xx_StdPeriph_Tem

7、plates將 錄 下 的 5 個 件復(fù)制到 錄下。如下圖, ,system_stm32f4xx.cstm32f4xx_it.hmain.cstm32f4xx_conf.hstm32f4xx_it.cUSER 添加到程前的步驟,我們已經(jīng)將需要的固件庫相關(guān)件復(fù)制到了我們的程錄下下我們還要將這些件加我們的程中去。設(shè)置Groups在MDK5中,右鍵點(diǎn)擊,選擇,Manage Project ItemsTarget1然后在欄,我們雙擊將名字修改為,然后在欄刪掉個,Source Group 1Project TargetsTargetTemplateGroups建三個 Groups:。然后點(diǎn)擊 OK,可以

8、看到我們的名字以及 情況如下圖:GroupsUSER,CORE,FWLIBTargetGroups添加件FWLIB下我們往 Group 添加我們需要的件。我們按照上邊的法, 右鍵點(diǎn)擊點(diǎn)擊Tempate ,選擇.Manage Project Items然后選擇需要添加件的 Group,這第步我們選擇,然后點(diǎn)擊右邊的Add FilesFWLIB定位到我們剛才建的錄下,將所有的件選中(Ctrl+A),然后點(diǎn)擊,然后.CloseFWLIBsrcAdd可以看到 Files 列表下包含我們添加的件,如下圖這有個件 stm32f4xx_fmc.c 較特殊。這個件是 STM32F42 和 STM32F43 系

9、列才到,所以我們這要把它刪掉(注意是 stm32f4xx_fmc.c 要刪掉,不要刪掉 stm32f4xx_fsmc.c)。這需要說明下,對于我們寫代碼,如果我們只到了其中的某個外設(shè),我們就可以不添加沒有到的外設(shè)的庫件。例如我只 GPIO,我可以只添加stm32f4xx_gpio.c其他的可以不添加。這我們?nèi)刻砑舆M(jìn)來是為了后便,不每次添加,當(dāng)然這樣的壞處是程太,編譯起來速度慢,戶可以選擇。CODE/USER之后我們添加件到和中USERCORE下需要添加的件為COREstartup_stm32f40_41xxx.s*注意:默認(rèn)添加的時候件類型為.c,也就是添加 startup_stm32f40

10、_41xxx.s 啟動件的時候,你需要選擇件類型為 All files才能看得到這個件 *錄下需要添加的件為,。system_stm32f4xx.cUSERmain.cstm32f4xx_it.c這樣我們需要添加的件已經(jīng)添加到我們的程中去了,最后點(diǎn)擊 OK,回到程主界。如下圖設(shè)置頭件接下來要在 MDK 設(shè)置頭件存放路徑。也就是告訴 MDK 到那些錄下去尋找包含了的頭件。這步驟常重要。如果沒有設(shè)置頭件路徑,那么程會出現(xiàn)報錯頭件路徑找不到。設(shè)置錄先進(jìn) PATH 配置界,選擇標(biāo)簽,然后點(diǎn)擊Include PathsC/C+在彈出的界中,點(diǎn)擊,然后添加點(diǎn)擊添加路徑New(Insert)這我們需要添加的

11、頭件路徑包括:CORE, USER, FWLIBinc這家務(wù)必要仔細(xì),固件庫存放的頭件錄是FWLIBinc,不是 FWLIBsrc。很多朋友都是這弄錯導(dǎo)致報很多奇怪的錯誤。添加完成之后如下圖添加標(biāo)識符接下來對于 STM32F40 系列的程,還需要添加個全局宏定義標(biāo)識符。添加法是點(diǎn)擊魔術(shù)棒之后,進(jìn) C/C+選項卡,然后在 Define 輸框連輸:STM32F40_41xxx,USE_STDPERIPH_DRIVER 注意這是兩個標(biāo)識符如下圖:和 USE_STDPERIPH_DRIVER,他們之間是逗號隔開的。STM32F40_41xxx編譯接下來我們要編譯程,在編譯之前我們先要選擇編譯中間件編譯

12、后存放錄。法是點(diǎn)擊魔術(shù)棒 ,然后選擇選項下的錄。OutputSelect folder for objects然后選擇錄為我們之前新建的OBJ同時將下的三個選項框都勾上,如下圖:這說明下勾選的意義。選項選上是要求編譯之后成 HEX 件。Create HEX File選項選上是便我們查看程中的些函數(shù)變量定義。Browse Information然后更換成下的代碼main.c#include stm32f4xx.hvoid Delay(_IO uint32_t nCount);void Delay(_IO uint32_t nCount)while(nCount-)int main(void)GP

13、IO_InitTypeDef GPIO_InitStructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;GPIO_InitStructur

14、e.GPIO_PuPd = GPIO_PuPd_UP;GPIO_Init(GPIOF, &GPIO_InitStructure);while(1)GPIO_SetBits(GPIOF,GPIO_Pin_9|GPIO_Pin_10);Delay(0 x7FFFFF);GPIO_ResetBits(GPIOF,GPIO_Pin_9|GPIO_Pin_10);Delay(0 x7FFFFF);同時還需要將分組下的件內(nèi)容清空。stm32f4xx_it.cUSER或者刪掉其中的 32 對頭件的引以及 144 函數(shù)內(nèi)容。SysTick_Handlermain.h然后點(diǎn)擊編譯按鈕編譯程,可以看到程編譯通過沒

15、有任何錯誤和警告。Build(F7)恭喜,到這,個基于固件庫 V1.4 的程模板就建完成,同時在程的 OBJ 錄下成了對應(yīng)的 hex 件。系統(tǒng)時鐘設(shè)置還有個常重要的關(guān)鍵點(diǎn),就是系統(tǒng)時鐘的配置,有關(guān)系統(tǒng)時鐘,檔中4.3節(jié)有詳細(xì)的說明這我們要修改件,把 PLL 第級分頻系數(shù) M 修改為 8,這樣達(dá)到主時鐘頻率為 168MHz。System_stm32f4xx.c在316處修改如下: /* PLL Parameters */#if defined (STM32F40_41xxx) | defined (STM32F427_437xx) | defined (STM32F429_439xx) | de

16、fined (STM32F401xx)/* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N */#define PLL_M8#else /* STM32F411xE */#if defined (USE_HSE_BYPASS)#define PLL_M#else /* STM32F411xE */#define PLL_M 168#endif /* USE_HSE_BYPASS */#endif /* STM32F40_41xxx | STM32F427_437xx | STM32F429_439xx | STM32F401xx */PLL

17、_M 這將25修改為 8,這樣我們的系統(tǒng)時鐘就是 168MHz。詳細(xì)原因我們后 4.3 節(jié)會講解。同時,我們要在修改外部時鐘值為 8MHz,因為我們的外部速時鐘的晶振為 8M.HSE_VALUEstm32f4xx.h具體修改法如下:在概123處,將修改成(uint32_t)8000000)(uint32_t)25000000)#if !defined (HSE_VALUE)#define HSE_VALUE (uint32_t)25000000) /*! Value of the External oscillator in Hz */#endif /* HSE_VALUE */家定要在對應(yīng)的

18、配置件中,找到相應(yīng)的代碼,修改為符合我們硬件的值即可。實際上經(jīng)過前的步驟,我們的程模板已經(jīng)建完成。但是在 正點(diǎn)原 提供的實驗代碼中,每個實驗都有個件夾SYSTEM下有 3 個錄分別為,存放的是每個實驗都要使到的共代碼。sys,usart,delay該代碼是由編寫,該代碼的原理在在檔第五章有詳細(xì)的講解ALIENTEK我們這只是引到程中,便后的實驗建程。在原哥提供的資料中錄下的件夾,將件夾移動到我們的程下SYSTEM實驗0 Template程模板SYSTEM然后在MDK5中,添加到我們的程中。根據(jù)前邊的教程,完成配置后如下圖:接下來我們將對應(yīng)的三個錄(sys,usart,delay)加到 PATH

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論