1,在使用FW3.5搭建工程時(shí),由于stm32f10x.h頭文件里面包含了LD、MD及HD全系列的芯片,所以,在實(shí)際使用過程中,需要首先配置你當(dāng)前使用的是那一類存儲(chǔ)量的芯片。 #35:#error directive:“please...” 問題出在stm32f10x.h的第95行: #if !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD) && !defined (STM32F10X_MD_VL) && !defined (STM32F10X_HD) && !defined (STM32F10X_HD_VL) && !defined (STM32F10X_XL) && !defined (STM32F10X_CL) #error "Please select first the target STM32F10x device used in your application (in stm32f10x.h file)" #endif 這個(gè)錯(cuò)誤,其實(shí)在stm32f10x.h第75行有提示: 在target option里面的C++選項(xiàng)下的define里面加入USE_STDPERIPH_DRIVER, STM32F10X_HD_VL即可。 (這個(gè)使用方法不太懂,,具體可以參考固件庫里面的配置) 2,在建立main函數(shù)后,初步編譯使出現(xiàn)的另外兩個(gè)問題: lphaff.axf:Error:L6218E:Undefined symbol RCC_APB2PeriphResetCmd (referred from stm32f10x_gpio.o). lphaff.axf:Error:L6218E:Undefined symbol main (referred from rtentry2.o). 原因: 如上圖1所示,在該程序中實(shí)際上使用了stm32f10x_RCC.c里面的函數(shù)RCC_APB2PeriphResetCmd函數(shù),卻沒有在工程里面添加這個(gè)源文件。 添加這個(gè)源文件后,問題得以解決。如下圖2: 此時(shí),出現(xiàn)的是同類問題的另外一個(gè)問題:undefined symbol main... 解決:如前面第一個(gè)圖里面,是main()寫成了mian(),改過來后即可。 3,關(guān)于main函數(shù)的返回,如圖3: 這里是#111-D警告,statement is unreachable,意思就是程序執(zhí)行不到這里。這個(gè)警告是加入return1之后出現(xiàn)的,因?yàn)樵谇懊嬗幸粋(gè)while(1)循環(huán),所以,不會(huì)有返回值。 在編譯的時(shí)候出現(xiàn)這種報(bào)錯(cuò),就是因?yàn)槌霈F(xiàn)了無法執(zhí)行到的指令。直接去掉return1即可。
|