RT-Thread论坛
直播中

LL-LING宁

9年用户 1418经验值
擅长:电源/新能源
私信 关注
[问答]

CPPDEFINES = [\'STM32F103xB\']如何选择?


移植时SConscript中 CPPDEFINES = [‘STM32F103xB’]如何选择  目标芯片:STM32F103VC


回帖(1)

早知

2025-10-20 17:07:28

在移植过程中,CPPDEFINES 中的芯片宏定义需根据目标芯片的 Flash容量引脚封装 来确定。对于 STM32F103VC 芯片,选择步骤如下:


1. 确认芯片容量分类



  • STM32F103VC 的 Flash 容量为 256KB


  • STM32F1 系列按容量分为三类:



    • 小容量(LD):16K-32K Flash → 宏 STM32F103x4STM32F103x6

    • 中容量(MD):64K-128K Flash → 宏 STM32F103x8STM32F103xB

    • 大容量(HD):256K-512K Flash → 宏 STM32F103xCSTM32F103xDSTM32F103xE


    结论:STM32F103VC(256KB)属于 大容量(HD)




2. 确定具体宏定义



  • 大容量芯片包含三类宏:

    • STM32F103xC:涵盖 256KB Flash 的型号(如 STM32F103RC/VC)。

    • STM32F103xD:涵盖 384KB Flash 的型号。

    • STM32F103xE:涵盖 512KB Flash 的型号。


  • STM32F103VC 对应 STM32F103xC(因 VC 的 Flash 为 256KB)。


3. 在 SConscript 中修改


CPPDEFINES 中的宏替换为 STM32F103xC


   # 修改前(适用于中容量芯片)
   # CPPDEFINES = ['STM32F103xB']

   # 修改后(适用于 STM32F103VC)
   CPPDEFINES = ['STM32F103xC']

4. 验证关键点



  • 头文件匹配:确保工程包含 stm32f103xc.h(而非 stm32f103xb.h)。

  • 启动文件:使用大容量对应的启动文件(如 startup_stm32f103xc.s)。

  • 链接脚本:确认 ROM/RAM 地址范围与大容量芯片匹配(ROM: 0x08000000-0x0803FFFF)。


附加说明



  • 若使用 HAL/LL 库stm32f1xx.h 会根据宏 STM32F103xC 自动包含正确的设备头文件。

  • 引脚封装:STM32F103VC 的封装为 LQFP100,宏 STM32F103xC 已覆盖此封装,无需额外定义封装宏。


总结


在 SConscript 中修改为:


CPPDEFINES = ['STM32F103xC']  # 适用于 STM32F103VC(256KB Flash,大容量)
举报

更多回帖

发帖
×
20
完善资料,
赚取积分