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

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中,就只需要更改一下之前那个芯片选择即可。
最终的效果如图所示,
在这里插入图片描述

### 回答1: STM32F103ZET6C8T6都是STM32系列的微控制器,但是它们的芯片型号不同,因此在移植时需要注意一些细节。 对于STM32F103ZET6,它是一款高性能的ARM Cortex-M3微控制器,具有丰富的外设存储器资源,适用于各种应用场景。在移植时,需要根据具体的应用需求选择合适的外设存储器配置,并编写相应的驱动程序应用程序。 对于C8T6,它是一款低成本的STM32微控制器,具有较少的外设存储器资源,适用于一些简单的应用场景。在移植时,需要根据具体的应用需求选择合适的外设存储器配置,并编写相应的驱动程序应用程序。 总之,无论是STM32F103ZET6还是C8T6移植都需要根据具体的应用需求进行选择配置,并编写相应的驱动程序应用程序。 ### 回答2: 在开始讨论stm32f103zet6c8t6移植之前,我们先来了解一下这个问题的背景。 stm32f103zet6是一款基于ARM Cortex-M3内核的微控制器,它有72MHz的主频,并带有512KB的Flash存储器64KB的RAM存储器。这个芯片具有强大的计算能力大规模存储空间,适合用于需要处理大量数据运算的应用。 相比之下,c8t6是一款基于Atmel AVR芯片的微控制器,它有16MHz的主频,并带有8KB的Flash存储器1KB的RAM存储器。虽然这个芯片的性能容量都不如stm32f103zet6,但是它由于价格低廉、易于学习上手,因此被广泛应用于初学者小型项目中。 在进行stm32f103zet6c8t6移植时,我们需要注意以下几个方面: 1.不同的架构指令集:stm32f103zet6c8t6使用的是不同的内核指令集,因此在移植时需要对代码进行重写优化。 2.不同的GPIO外设:stm32f103zet6c8t6的GPIO外设也有所不同,需要对I/O端口外设进行映射配置。 3.不同的编译工具库文件:stm32f103zet6c8t6的编译工具库文件也有所不同,需要根据实际情况选择合适的工具库文件。 对于初学者而言,建议首先学习熟悉c8t6移植,因为它的学习门槛较低,可以很好地锻炼基础编程能力。如果有stm32f103zet6移植的需求,可以先进行相关学习实践,掌握一定的经验后再进行移植。 ### 回答3: STM32F103ZET6C8T6都是STM32系列微控制器的一种,它们之间的区别在于芯片的封装主频的不同。STM32F103ZET6是LQFP144封装,主频为72MHz,而C8T6是TSSOP20封装,主频为48MHz。 将STM32F103ZET6C8T6移植到其他平台上,需要注意以下几点: 1. 确定移植平台的硬件资源是否能够满足芯片的要求。包括芯片引脚、时钟电源等资源的分配配置,以确保芯片能够正常运行。 2. 移植芯片的启动文件驱动程序。启动文件是指芯片启动时必要的初始化代码,包括扩展描述符表、中断向量表等,需要根据移植平台的特点进行修改。驱动程序是指芯片的外设驱动程序,需要根据移植平台的外设特点进行修改。 3. 移植芯片的应用程序。应用程序是指针对芯片进行开发的特定功能代码,需要根据移植平台的特点进行修改。应用程序可能包括定时器、通信接口、控制逻辑等等。 总的来说,将STM32F103ZET6C8T6移植到其他平台上需要对移植平台有较深入的了解,需要针对性地进行修改调试。移植过程需要耐心经验,但是移植成功后能够有效地利用已有资源,加速开发效率。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值