STM32G031J6M6仅可烧录一次固件问题求助
问题:STM32G031J6M6仅能单次烧录固件,STM32CubeIDE后续无法连接
硬件信息
- MCU型号:STM32G031J6M6
- 调试器:ST-Link V2 mini
连接方式



问题现象
烧录一次固件后,STM32CubeIDE无法连接到MCU,每次烧录新固件必须使用STM32 ST-LINK Utility擦除芯片。
可能的原因及解决方法
1. 固件代码禁用调试接口
STM32G0系列的SWD/JTAG调试接口可能在用户代码中被意外禁用,比如将SWDIO/SWCLK引脚配置为普通IO,或通过寄存器关闭调试功能。
- 解决步骤:
- 检查代码中
DBGMCU_CR寄存器配置,确保调试相关使能位(如DBG_STOP、DBG_STANDBY)正确设置,且未关闭SWD接口; - 使用HAL库时,在CubeMX的「System Core」→「SYS」中,将「Debug」选项设置为
Serial Wire,并确保代码中调用了对应调试使能函数; - 在STM32CubeIDE的运行/调试配置中,进入「Debugger」→「Startup」,勾选「Full chip erase」,每次烧录前自动全擦除芯片,避免禁用调试的代码残留。
- 检查代码中
2. 连接或供电异常
- 检查SWDIO、SWCLK、GND引脚连接是否牢固,排除烧录后接触不良的情况;
- 确认MCU供电电压稳定在2.0V~3.6V范围内,避免供电不足导致调试通信中断;
- 更换质量可靠的USB线连接ST-Link,劣质线材易引发通信不稳定。
3. 芯片读保护(RDP)开启
若代码中开启了STM32的读保护功能(RDP级别1或2),会限制调试接口访问,导致烧录后无法连接。
- 解决步骤:
- 用
STM32 ST-LINK Utility读取芯片RDP状态,若处于保护状态,执行全擦除操作解除保护; - 在CubeMX或代码中确保
FLASH_OPTR寄存器的RDP位设置为0xAA(无读保护状态)。
- 用
4. ST-Link驱动或固件版本问题
- 将STM32CubeIDE更新至最新版本,同时更新ST-Link固件:在IDE中打开「Window」→「Show View」→「ST-Link Debugger」,点击「Update ST-Link firmware」完成更新;
- 检查电脑设备管理器中ST-Link驱动是否正常,若存在异常,重新安装官方驱动。
内容的提问来源于stack exchange,提问作者Sem
相关产品推荐
相关产品推荐

