原因是startup_xxx.s文件只能保留其中一种**
启动文件分别带有hd、md、ld和cl、vl、xl几种种字样。需要查看mcu的flash内存大小来选择。
cl:互联型产品,stm32f105/107系列
vl:超值型产品,stm32f100系列
xl:超高密度产品,stm32f101/103系列
ld:低密度产品,FLASH小于64K
md:中等密度产品,FLASH=64 or 128
hd:高密度产品,FLASH大于128
PS:h代表high,高容量的意思; m代表middle,中等容量; l代表low,低容量
我使用的是STM32F1C8T6,64kb的flash,所有选择startup_xxx_md.s这个文件。
重新编译又报错 Undefined symbol SystemInit (referred from startup_stm32f10x_md.o).
这个是指startup_stm32f10x_md.o文件中的SystemInit符号没有定义。这个.o文件是由startup_stm32f10x_md.s文件生成的。
按照网上找的方法,把startup_stm32f10x_md.s文件中的这段注释掉。
然后再次编译,终于正常了。撒花~!!
参考博文:https://www.cnblogs.com/wellrun/archive/2011/03/21/1990074.html
https://www.cnblogs.com/lovexz/p/7134531.html