关于stm32F103ZET6移植到stm32F103C8T6的步骤

在一次代码移植过程中,突然发现代码移植后不可以使用,代码是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选择不同的启动文件。

等还有其他情况,反正都是含有多个头文件导致的,我们把多余的头文件进行删掉问题就可以的到解决。

 

posted @ 2024-05-03 19:12  小赵小赵0117  阅读(18)  评论(0编辑  收藏  举报