STM32F103ZET6和C8T6程序移植过程中的问题

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

今天发现一个很有意思的事,之前写的C8T6上的程序在战舰开发板(ZET6)上一点问题没有,仅仅只需要改一下芯片的选型,而使用C8T6上的程序移植到ZET6只改变芯片的信号却是会报错,而且不能下载,在网上搜了搜,看到有的博主说是STM32芯片是向下兼容,即大容量ZET6兼容中容量C8T6,而C8T6改成ZET6却是需要进行下面一些操作。


一、解决报错问题

如果只更改芯片型号的话将会出现12个error,12个warning,大概情况会是这样。
只改变芯片型号
想要解决这个问题,不仅仅需要改变芯片型号,还需要将启动文件改成中容量芯片启动文件,然后添加进来,之后把宏定义改成中容量宏定义,之后配置Programming Algorithm(可有可无,因为你在选择芯片型号的时候这个地方会自动更改),具体操作过程如下:

1.改变芯片型号

魔法棒->Device,将STM32F103ZE改成STM32F103C8
在这里插入图片描述
这个时候,魔法棒->Utilities-setings->Programming Algorithm中的配置会自动更改成相对应的容量大小的。

在这里插入图片描述

2.替换启动文件

将高容量芯片的启动文件改成中容量启动文件,即CORE文件夹下的
startup_stm32f10x_hd.s替换成与c8t6相对应的启动文件startup_stm32f10x_md.s。文件所在位置,STM32F1xx固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm文件夹下。
在这里插入图片描述
替换之后需要在MDK中也要换掉,将原来的startup_stm32f10x_hd.s remove掉,然后添加上startup_stm32f10x_md.s,过程就是点击魔法棒右边的那个图标,管理CORE文件夹下的startup_stm32f10x_hd.s ,删除之后,点add添加我们原来从固件库复制过来的startup_stm32f10x_md.s。这里要注意的是选择文件时要把文件类型改成AllFiles,不然就看不到startup_stm32f10x_md.s。

在这里插入图片描述
最终替换成功之后应该是这样
在这里插入图片描述

3.更改宏定义

魔法棒->C++中STM32F10X_HD,USE_STDPERIPH_DRIVER,改成STM32F10X_MD,USE_STDPERIPH_DRIVER,如图所示
在这里插入图片描述
最终编译效果如下图
在这里插入图片描述

二、下载问题

虽然编译没有问题,但是下载程序时还是会出现

在这里插入图片描述
这个时候,你就有可能选择芯片类型的时候没有点ok,去检查一下这魔法棒->Utilities-setings->Programming Algorithm中的配置会自动更改成相对应的容量大小的,我之前说可有可无的地方,看是否对应的中容量
在这里插入图片描述
如果全部完成了的话,应该就可以下载到c8t6单片机中了,如果想要再下回到zet6中,就只需要更改一下之前那个芯片选择即可。
最终的效果如图所示,
在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐