STM32F103ZET6代码移植到F103C8T6上的方法及注意事项

本文详细介绍了从STM32F103ZET6到STM32F103C8T6的程序移植步骤,包括MDK5环境配置调整、启动文件替换及必要的代码修改等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.前言

本篇博客主要是针对STM32F103的程序移植过程步骤及注意事项总结等。

  • 移植芯片:例:STM32F103ZET6------>STM32F103C8T6
  • 编译环境:MDK 5
    网上也有很多关于STM32F103的关于芯片大小容量的更换移植,程序编译无错误无警告,但是运行没有达到想要的效果,比如你要简单的实现一个定时器中断计数脉冲个数,就很觞!!!

2.MDK5更改环境配置过程

  1. 左键点击Options for Target;
  2. 弹出的选项卡方框,单击选择Device;
  3. 将芯片的型号更改,比如我就需要将ZET6系列的芯片修改为C8T6的;
    在这里插入图片描述
  4. 选择C/C++选项,修改Define里面的内容,将STM32F10X_HD,USE_STDPERIPH_DRIVER修改为STM32F10X_MD,USE_STDPERIPH_DRIVER(其实你只需要修改一个字母将H修改为M即可注意大写哦),因为ZET6是属于大容量的而C8T6是属于中容量的;

附:

flash容量启动文件
>= 256KSTM32F10X_HD,USE_STDPERIPH_DRIVER
64<=flash<=128KSTM32F10X_MD,USE_STDPERIPH_DRIVER
<=32KSTM32F10X_LD,USE_STDPERIPH_DRIVER

在这里插入图片描述

  1. 修改替换CORE文件下的startup_stm32f10x_hd.s文件,右键选着Remove
    Filestartup_stm32f10x_hd.s,移除后双击CORE文件,找到并双击击添加startup_stm32f10x_md.s,最后效果如上图所示;

  2. 最后点击编译或者F7即可;
    在这里插入图片描述

  3. 但是你如果用到了延时函数或者定时器,你就会发现最后的效果并不是你想要得到的,比如你延时1S但是最终的结果却是翻了几倍,或者定时器中断无法正常使用等等!这个又怎么办呢?
    这时你可能会去思考既然延时时间不对,那肯定就是延时函数delay.c的问题,于是我们去查找delay的相关函数,如下图
    在这里插入图片描述
    找到延时初始化函数delay_init,原来他的时钟HCLK/8的。那么我们可以将它修改为HCLK,就用系统时钟是不是就可以了呢?答案是对的,可以,没有问题;但是也仅限于你初学者移植下点灯而已,这是没有问题的。但你的定时器移植过来还是没法使用,所以修改delay_init方法是可以的,但是我不是很推荐。
    在这里插入图片描述
    最后检查问题,几经波折,发现原来是md和hd的启动文件中的一些差别,导致移植到C8T6上后,你必须自己在主程序中去调用一下SystemInit(),这样就能成功了,也不用你去修改delay文件、考虑时钟分频的问题。
    注:以上代码例子来源参考于正点原子,仅供学习交流。

3.总结

1.型号更换
2.C/C++配置选项更改
3.启动文件的更换
4.主函数里加入SystemInit()初始化【针对于C8T6】
5.系统文件夹里的函数可以修改,但对初学者还是尽量不要去修改、不推荐,你应该去思考问题根源所在;

😀授人鱼,更要授人以渔,希望猿一的本篇博客能对您有所帮助!

评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值