在一次代码移植过程中,突然发现代码移植后不可以使用,代码是stm32f103zet6的代码,刚好当时我使用的是C8T6的芯片我进行移植到C8T6芯片时,代码报错"Error:Flash Download failed - "Cortex_M3"这种报错。当时直接懵逼了。想了半天没有想到原因,我就在想不都是F103系列的代码吗为啥子不可以正常使用,会出现报错这样的情况。后面我上网早了很多也发现自己还是知道的太少了。在这里记录一下方便以后忘了再来看看。
当我们下载程序时,会出现这样的报错。
当我们意见出现这种错误时,这个是因为我们移植了不同类型芯片代码、每个型号的容量不一致的原因而导致的,我使用的是最小系统板属stm32F103C8T6系列的,一开始移植代码的时候一直烧录不了,后面才知道原来芯片类型不同,移植过来要更改配置的。
一,以下是以stm32F103ZET6移植到stm32F103C8T6为例
1,首先我们要进行更换启动文件:先在平时自己练习的c8t6工程系列里面,找到start文件夹的路径,将里面的_MD.S后缀的启动文件,复制到当前工程start文件下,并且添加到工程里面去,C8T6是128K,算是中等容量,因为芯片不同,容量也是需要匹配的。
如图片
然后将后缀为_md.s的启动文件添加到工程中
然后在keil5中点击魔术棒
选择DEVICE,然后将芯片类型换成stm32F103C8型号
然后找到Target选项,这里要将晶振改为自己芯片的的数值。具体芯片看芯片介绍。我这里改成12hz
然后就是点击debug,进入settings,最后更Download中的FLASH容量,点击ADD添加,选择128K的容量
到这里问题应该就已经解决了。
二,注意
当上面做完后,如果还有这样的报错 .\Objects\Project.sct(7): error: L6235E: More than one section matches selector - cannot all be FIRST/LAST.
因为在工程中包含了不只一个启动文件导致的。有多个头文件,我们只需要把多的头文件删了就可以了
比如
项目中同时包含以下启动文件,
startup_gd32f10x_md.s
startup_gd32f10x_hd.s
startup_gd32f10x_ld.s
startup_gd32f10x_cl.s
…
应该针对不同的CPU选择不同的启动文件。
等还有其他情况,反正都是含有多个头文件导致的,我们把多余的头文件进行删掉问题就可以的到解决。
标签:gd32f10x,头文件,芯片,stm32F103ZET6,代码,报错,stm32F103C8T6,移植 From: https://www.cnblogs.com/zfcm-0117-12/p/18171511