STM32F103RCT6移植到STM32F103C8T6注意事项

本文讲述移植STM32F103RCT6程序时,在keil5中遇flash大小不匹配问题,重装升级未解决,猜测与C/C++宏定义有关。还介绍了移植到STM32F103C8T6的注意事项,如修改IC、晶振、宏定义等,最后解决程序运行慢的问题需调用SystemInit()。

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

前言
在移植某STM32F103RCT6程序时遇到keil5中没有合适flash大小(128k)的情况,本以为是keil5的pack没装好,重装包并升级到最新并没有解决该问题,百度之得到以下答案。同时,在F407中也存在这种情况,解决方法应该类似(没有实际测试),猜测主要原因应该出现在C/C++宏定义上,改为当前硬件对应即可。
另附STM32f10x的startup文件。

以下为转载,转自STM32F103RCT6移植到STM32F103C8T6注意事项

1,修改IC为STC32F103C8

 

2,修改晶振为8.0M

  

3,修改C/C++宏定义,由STM32F10X_HD,USE_STDPERIPH_DRIVER 改为 STM32F10X_MD,USE_STDPERIPH_DRIVER

 

4,替换启动文件,由startup_stm32f10x_hd.s修改为startup_stm32f10x_md.s

到这里已经没有报错了

5,重新分配各模块引脚定义

这一步做完以后才发现,程序好像跑的慢了10来倍,

群里求助,说是倍频没有设置好,找到一个设置倍频的代码后,发现还是不行.

再搜索原子论坛有人同样遇到相同的问题,在某位大神的回复中找到了答案,就是第6步,

6,系统初始化时调用 SystemInit(); 

 调用SystemInit();以后马上就正常了,

特别感谢:http://www.openedv.com/posts/list/0/63500.htm 13楼的回复

### 将 STM32F103RCT6 代码或项目移植STM32F103C8T6 #### 修改工程配置文件 `.cproject` 为了适应新的目标芯片,需要调整 IDE 中的设置。具体来说,需编辑 `.cproject` 文件来匹配新设备的需求[^1]。 ```xml <toolChain id="fr.ac6.stkeil.gnu.managedbuild.toolchain.cross.arm.exe.debug" name="GCC ARM Embedded"> <!-- 更改目标器件 --> <targetPlatform architecture="arm" fpu="none" id="fr.ac6.stm32cubeide.targetplatform.gcc_arm_none_eabi" isAbstract="false"/> </toolChain> ``` 上述 XML 片段展示了如何指定不同的架构和浮点单元 (FPU),对于从 RCT6 到 C8T6 的迁移而言,主要关注的是 `architecture` 属性以及任何特定于硬件特性的定义。 #### 更新编译器预处理器宏定义 由于两者的闪存大小不同(RCT6 是高密度而 C8T6 是中密度),因此必须相应地更改预处理指令中的宏定义: - **原定义**: `STM32F10X_HD`, `USE_STDPERIPH_DRIVER` - **新定义**: `STM32F10X_MD`, `USE_STDPERIPH_DRIVER` 这一步骤确保了所使用的外设驱动程序与当前微控制器相兼容[^2]。 #### 调整魔术棒选项 打开 STM32CubeIDE 或其他支持的集成开发环境内的 "魔术棒" 设置窗口,按照以下方式进行修改: - **Device**:选择 `STM32F103RC` 变更为 `STM32F103C8`. - **Target**:确认外部晶振频率设定为 8MHz. - **C/C++ Build Settings**:更新 Define 字段的内容至仅保留必要的 HAL 库标志位如 `USE_HAL_DRIVER`. 这些改动有助于使软件层面上能够识别并适配新的硬件平台特性[^3]. #### 处理可能遇到的问题 当完成以上步骤后,在尝试构建项目时可能会碰到一些错误提示。如果发现链接阶段出现问题,则可能是由于内存映射表未能正确反映目标 MCU 的资源分配情况所致;此时应当仔细核对 linker script (.ld) 文件里的地址范围声明是否准确无误[^5]. 另外值得注意的一点是,尽管两个型号都属于同一系列的产品线内,但由于内部资源配置上的细微差别(比如 GPIO 数量、ADC 分辨率等),某些功能模块或许并不完全一致。所以在测试期间务必进行全面验证以保证所有预期行为都能正常运作.
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值