You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Cube-IDE或Cube-Programmer读取STM32F103C8T6 MCU代码?

解决STM32F103C8T6代码读取、CubeIDE连接及编程器数据理解问题

一、不擦除读取MCU已有代码

STM32F103C8T6的Flash读取功能多数编程器都支持,可能你没找对操作入口:

  • 用ST-Link的话,直接用官方的STM32CubeProgrammer工具:连接MCU后切换到「Erase & Program」标签页,不要勾选「Erase before programming」,点击「Read」按钮选择保存路径,就能导出Flash内容为.bin或.hex文件,全程不会擦除芯片。
  • 第三方编程器:找「读取Flash」「Dump Flash」这类选项,一般在「芯片操作」或「Flash管理」菜单下,避开擦除相关选项即可。
  • 注意:如果芯片开启了读保护(RDP),直接读取会失败,解除读保护会自动擦除Flash,这是硬件层面的保护机制,无法绕过。

二、将MCU连接到CubeIDE并操作

按以下步骤来:

  1. 硬件连接:用ST-Link V2(或兼容款)接MCU的SWD引脚:SWCLK连PA14,SWDIO连PA13,GND对GND,VCC接3.3V(别接5V,会烧芯片)。
  2. IDE操作:
    • 新建项目:打开CubeIDE,选「STM32 Project」,搜索「STM32F103C8T6」,按引导完成创建。
    • 导入项目:选「Import」→「Existing Projects into Workspace」,导入已有项目文件。
  3. 调试连接:点击工具栏的调试图标(虫子形状),IDE会自动识别ST-Link并连接MCU,之后就能进行单步调试、查看寄存器、读写Flash等操作。

三、关联数据手册理解编程器的地址与数据

编程器显示的地址对应MCU的内存映射,直接对照数据手册的「Memory Mapping」章节拆解:

  • Flash区域:起始地址0x08000000,大小64KB(到0x0800FFFF),这个区间的地址对应代码存储区,显示的数据就是Flash里的机器码。
  • SRAM区域:起始0x20000000,大小20KB,是运行时临时数据区,读取到的是当前RAM里的实时数据。
  • 外设寄存器区域:比如GPIOA起始地址0x40010800,对应手册「Peripheral registers」章节,寄存器偏移地址加基地址就是实际地址,显示的数据是寄存器当前的配置或状态值。
  • 实操技巧:拿编程器显示的任意地址(比如0x08000000),去手册里搜索这个地址,找到对应存储区域后,结合「Flash memory」章节的描述,就能理解该地址的数据是代码的起始部分(中断向量表)。

内容的提问来源于stack exchange,提问作者BigMac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 12:48:20