从STM32F103RCT6 移植到C8T6遇到的问题及解决方法记录

1. Keil工程里,device下芯片型号从STM32F103RC切换到STM32C8;

2. C/C++的宏定义由“STM32F10X_HD”改为“STM32F10X_MD”;

3. Debug选项里,use “J-LINK/J-Trace cortex”;

4. 接3,Debug-setting-Flash Download , Programming Algorithm 根据flash大小 add MD

5. Utilities->use中选择J-LINK/J-Trace cortex ;

6. 文件管理更换启动文件为startup_stm32f10x_md.s。 注意,此处添加的启动文件来自Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm , 而非gcc_ride7文件夹,否则会疯狂报错。

以上方法来自网络搜索,仅记录以作提醒。

### 将 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),对于从 RCT6C8T6 的迁移而言,主要关注的是 `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 分辨率等),某些功能模块或许并不完全一致。所以在测试期间务必进行全面验证以保证所有预期行为都能正常运作.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值