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即可。
|