寫(xiě)第一個(gè)STM32程序常見(jiàn)錯(cuò)誤及解決方法_第1頁(yè)
寫(xiě)第一個(gè)STM32程序常見(jiàn)錯(cuò)誤及解決方法_第2頁(yè)
寫(xiě)第一個(gè)STM32程序常見(jiàn)錯(cuò)誤及解決方法_第3頁(yè)
寫(xiě)第一個(gè)STM32程序常見(jiàn)錯(cuò)誤及解決方法_第4頁(yè)
寫(xiě)第一個(gè)STM32程序常見(jiàn)錯(cuò)誤及解決方法_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1.啟動(dòng)KEIL.創(chuàng)建工程以后,先用1O創(chuàng)建文件,然后什么也不干,直接點(diǎn)擊保存,保存 到你的工程文件夾下面,命名為niam.c (其他也可以,命名為main.c是為了方便你同其 他的C文件快速區(qū)分開(kāi)來(lái))。然后輸入以下幾行代碼:#iiiclude Hstni32fl0 x.hHvoid main(void)然后點(diǎn)擊 醴Build,會(huì)有以下報(bào)錯(cuò)信息:C:KeilARMMncSTSTM32F10 xstm32fl0 x.h(96): error: #35: #enor directive: nPlease select fiist the target STM32F10 x device used

2、in your application (in stin32fl0 x.h file)這是說(shuō)stm32fl0 x.h中要求工程在預(yù)編譯時(shí)通過(guò)一個(gè)字符串,來(lái)識(shí)別所用的芯片F(xiàn)LASH大 小,然后確定頭文件中哪些語(yǔ)句有效。ST把STM32按FLASH大小尺寸來(lái)歸類(lèi)的,具體在 STM32參考手冊(cè)里面有。解決辦法:請(qǐng)點(diǎn)擊滲圉圈.參3 |算Target 1丘素H 土皂1 建J中的恭打開(kāi)的界面中選到 邊廿I選項(xiàng),然后Define里面輸入STM32F10X_MD (因?yàn)檫@個(gè)實(shí)驗(yàn)板上 用的STM32F103C8T6對(duì)應(yīng)這個(gè)“中等容量的FLASH”,換做其他芯片不一定是這個(gè)字符串), 如圖:Devi ce | T

3、arget | Output | Listiiig: | User C/C+ | Asm Linker | Debug | Utilities |Preprocessor SymbolsDefine: |STM32F1OX_MDUn define:Optimization: | Level 0 (OO)三 Optimize for Time 廠 Split Load and Store Multiple 廠 One ELF Section per FunctionF Strict ANSICr Enum Container always irrt廠 Plain Char is Signed廠

4、Read-Only Position Independent廠 Read-Write Position IndependentWarnings:| I Thumb ModeNo Auto IncludesLanguage / Code Generation然后點(diǎn)擊OK.再二,然后會(huì)出第二個(gè)錯(cuò)誤:C:KeilARMMncSTSTM32F10 xstm32fl0 x.h(8297): error: #5: cannot open source mput file Mstm32f 1 Ox_conf.hH: No such file or duectory 這說(shuō)明文件包含的路徑?jīng)]有設(shè)置好O解決辦法:

5、按上面所述選到czc+ :選項(xiàng)。然后在IncludePaths 1二I下選擇業(yè)1,再點(diǎn)擊不,然后打開(kāi)目錄找到固件庫(kù)里面的STM32F10 x_StdPeriph_Driver2013/7/27 16:49 文件夾 這個(gè)文件(最好能把這個(gè)文件夾復(fù)制出來(lái)保存到一個(gè)純英文路徑的目錄下),然后選擇中里面的inc文件夾,然 后再如法炮制選中里面的src文件夾。然后點(diǎn)擊確定。效果如圖:Folder Setup &Setup Compiler Include Paths:X .ST M32F1 k_Std P eriph_Dfiv erinc.ST M 32F Kk.Std P eriph_Diiv ers

6、rcOKCancel點(diǎn)擊OK,然后出現(xiàn)下圖,再點(diǎn)OK保存Devi ce | Target | Output | Listing: | User C/C+ | Asm Linker | Debug | Utilities |Preprocessor SymbolsDefine: |STM32F10X_MDIncludePathsMiscControlsCompiler controlstringUn define:i- Language / Code GenerationOptimization: | Level 0 (-OQ)二F Strict ANSIC廠 Enum Container al

7、wa)fs intWarnings:|unspecified Optimize for Time Plain Char is Signed廠 Thumb Mode Split Load and Store Multiple One ELF Section per Function廠 Read-Onty Position Independent Read-Write Position Independent廠 No Auto Includes.,STM 32F1 (k_Std Periph_Dri verXinc ;.STM3-2F1 Ck_Std Perip h_Drivernc-c -cpu

8、 Cortex-M3 -g -OO -apcsntework -I.STMS2F 1 Ck_StdPeriph_Driverinc -I.STM32F1 Ck_StdPeriph_Driversrc再點(diǎn)擊OK。然后再Build,你會(huì)發(fā)現(xiàn)第二個(gè)錯(cuò)誤己經(jīng)解決了,但是出現(xiàn)了一個(gè)新錯(cuò)誤,這 個(gè)錯(cuò)誤我們先不管。2.我們先添加下面這么一段代碼:void RCC_Config(void)ErroiStatus HSEStailUpStatus;RCC_DeInitQ;RCC_HSEConfig(RCC_HSE_ON);HSEStaitUpStatus = RC C_WaitForH SE StartUp()

9、;if(HSEStartUpStatus = SUCCESS)FLASH_PrefetchBufferCmd(FLASH_PrefetcliBuffei_Enable);FLASH_SetLatency(FLASH_Latency_2);/RCC_HCLKConfig(RCC_SYSCLK_Divl);RCC_PCLK2Config(RCC_HCLK_Divl);RCC.PCLKl Config(RCC_HCLK_Div2);RCC_PLLConfig(RCC_PLLSource_HSE_Divl, RCC_PLLMul_9); / RCC_PLLCmd(ENABLE);while(RCC_G

10、etFlagStanis(RCC_FLAG_PLLRDY) = RESET)RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);wliile(RCC_GetSYSCLKSource() != 0 x08)RCC_APB2PenphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Penph_GPIOB|RCC_APB2Penph_AFIO. ENABLE); 先不解釋這上面代碼的意義。在main函數(shù)中調(diào)用:void main(void)RCC_Config();wliile(l)然后點(diǎn)擊Build,會(huì)出現(xiàn)15處錯(cuò)誤。之所以會(huì)出現(xiàn)如此多

11、錯(cuò)誤,是因?yàn)樯厦娲a中用到的一些函數(shù)沒(méi)有被聲明或者定義過(guò)。這些 函數(shù)來(lái)自于STM32的標(biāo)準(zhǔn)外設(shè)庫(kù)函數(shù)(通常稱(chēng)之為固件庫(kù)),在stm32fl0 x_coiif.li這個(gè)頭文 件中包含了所有外設(shè)的頭文件.h,每個(gè)外設(shè)頭文件都有一個(gè)對(duì)應(yīng)的.c源文件與之對(duì)應(yīng)。右鍵點(diǎn)擊Options for TargetTarget 1.解決辦法:Alt-F7Add New Item to Group.Add Existing Files to Group.Add Group.Remove Item帛 Manage Components.Open FileOpen List File0pen D:Emb_sys.tem

12、stm32L EDLED.mapH Rebuild all target filesill Build targetF7Translate File甕 Stop build/ Show Include File Dependences然后Add Group.重命名文件夾為比如lib_src。再右擊該文件夾,出現(xiàn): 戴 Options for Group lib.sc. Alt+F7Add New Item to Group libsrc .Add Existing Files to Group lib.src.Add Group.Remove Group lib_5rt and its Fil

13、es 晶 Manage Components.Open FileOpen List FileOpen Map FileI璀I Rebuild all target filesL:S Build targetF7Translate File爵 Stop buildJ Show Include File Dependencies選擇IAdd Existing Files to Group,然后打開(kāi) STM32F10 x_StdPenph_Dnver 文件夾下的src文件夾,添加以下幾個(gè)文件:白 S lib.src由 團(tuán) 5tm32fL0 x-gpio.c由 團(tuán) stm 32 flOxrcc.c既固

14、 stm 32f 10 xJia sh.c然后重新Build以后,還會(huì)出現(xiàn)一個(gè)錯(cuò)誤:.LED.axf: Error: L6218E: Undefined symbol Systemliiit (refened from staitup_stni32fl Ox_md.o).出現(xiàn)這個(gè)錯(cuò)誤是因?yàn)镾ystenilnit這個(gè)符號(hào)沒(méi)有定義,這個(gè)其實(shí)是一個(gè)函數(shù),定義在 system_stni32f 1 Ox.c中,但是這個(gè)文件卻在Keil的安裝路徑下。解決辦法:還是右擊hb_src,然后如圖提示:t 戴 Options for Group lib.scAlt+F7Add New Item to Group

15、lib_sc.Add Existing Files to Group lib.src.Add Group.Remove Group libsrc and its FilesManage Components.Open FileOpen List FileOpen Map File蹬I Rebuild all target filesl:S Build targetF7Translate File境 Stop buildJ Show Include File Dependencies然后打開(kāi)目錄如下圖: XBb / V V母本地磁盤(pán)ccoKeilAWflINC審STSTM32F10X然后把找到的

16、system_stm32fl0 x.c添加進(jìn)去。再點(diǎn)Build,就會(huì)發(fā)現(xiàn)所有錯(cuò)誤都己經(jīng)被解決 掉了。這時(shí)就可以生成下載.hex文件了。如圖:點(diǎn)擊頃,打開(kāi)的界面中選擇血邙,然后遍如HEX File前面的勾選上。再重新點(diǎn)擊Build,就可以生成燒錄文件了。最后整個(gè)程序如下:#iiiclude Hstni32fl0 x.hHvoid RCC_Coiifig(void)EnoiStatus HSEStailUpStatus;RCC.DeliutO;RCC_HSEConflg(RCC_HSE_ON);HSEStaitUpStatus = RC C_WaitForH SE StanUp();if(HSES

17、tailUpStatus = SUCCESS)FLASH_PrefetchBufferCmd(FLASH_PrefetcliBuffei_Enable);FLASH_SetLatency(FLASH_Latency_2);RCC_HCLKConfig(RCC_SYSCLK_Divl);RCC_PCLK2Config(RCC_HCLK_Divl);RCC.PCLKl Config(RCC_HCLK_Div2);RCC_PLLConfig(RCC_PLLSouice_HSE_Divl, RCC_PLLMul_9); /RCC.PLLCmd(ENABLE); while(RCC_GetFlagSta

18、ms(RCC_FLAG_PLLRDY) = RESET) RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); wliile(RCC_GetSYSCLKSourceQ != 0 x08) RCC_APB2PenphClockCmd(RCC_APB2Penph_GPIOA |RCC_APB2Penph_GPIOB, ENABLE); void GPIO_Config(void)GPIO_ImtTypeDef GPIO_InitStncniie;/* Configure PE.0,PELPE2PE.3,PE.4.PE.5,PE.6,PE.7 as Output push-pull */GPIO IiutStRicture.GPIO Pin = OxOOff;GPIO_IiutStRicture.GPIO_Speed = GPIO_Speed_10MHz;GPI

溫馨提示

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

評(píng)論

0/150

提交評(píng)論