1,在使用FW3.5搭建工程時,由于stm32f10x.h頭文件里面包含了LD、MD及HD全系列的芯片,所以,在實際使用過程中,需要首先配置你當前使用的是那一類存儲量的芯片。 #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 這個錯誤,其實在stm32f10x.h第75行有提示: 在target option里面的C++選項下的define里面加入USE_STDPERIPH_DRIVER, STM32F10X_HD_VL即可。 (這個使用方法不太懂,,具體可以參考固件庫里面的配置) 2,在建立main函數后,初步編譯使出現的另外兩個問題: 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所示,在該程序中實際上使用了stm32f10x_RCC.c里面的函數RCC_APB2PeriphResetCmd函數,卻沒有在工程里面添加這個源文件。 添加這個源文件后,問題得以解決。如下圖2: 此時,出現的是同類問題的另外一個問題:undefined symbol main... 解決:如前面第一個圖里面,是main()寫成了mian(),改過來后即可。 3,關于main函數的返回,如圖3: 這里是#111-D警告,statement is unreachable,意思就是程序執行不到這里。這個警告是加入return1之后出現的,因為在前面有一個while(1)循環,所以,不會有返回值。 在編譯的時候出現這種報錯,就是因為出現了無法執行到的指令。直接去掉return1即可。
|