GD32F303RCT6不小心将读保护开启,导致后续程序烧不进去的解决办法

这里写自定义目录标题

  • 错误现象
  • 判断读保护开启的方法
    • 用JLink-commander查看选项字节地址处的值
  • 解锁读保护

错误现象

用j-flash v7.68b软件通过ARM仿真器设置接口为SWD烧录编译好的目标.bin文件,第一次烧录成功,后面再也烧录不进,出先现象
如下图:
GD32F303RCT6不小心将读保护开启,导致后续程序烧不进去的解决办法_第1张图片
推测原因,flash的读保护被打开

判断读保护开启的方法

GD和ST系列的选项字节处是读保护是否开启的判断位置
参考如下链接:GD32的flash读保护和写保护
查看memory map 选项字节所在的地址
如下图:
GD32F303RCT6不小心将读保护开启,导致后续程序烧不进去的解决办法_第2张图片选项字节里具体的各个位的含义,课参考如上链接
GD32F303RCT6不小心将读保护开启,导致后续程序烧不进去的解决办法_第3张图片

每次系统复位后,闪存的可选字节块被重加载到FMC_OBSTAT和FMC_WP寄存器,可选字节生效。可选字节的补字节具体为可选字节取反。当可选字节被重装载时,如果可选字节的补字节和可选字节不匹配,FMC_OBSTAT寄存器的OBERR位将被置1,可选字节被强制设置为0xFF。

用JLink-commander查看选项字节地址处的值

参考链接如下:
JFlash软件解锁GD32MCU

上述链接的查看方法可取,解锁方法不行

解锁读保护

还是用jlink的软件:J-Link STM32 Unlock
在这里插入图片描述
GD32F303RCT6不小心将读保护开启,导致后续程序烧不进去的解决办法_第4张图片

这里选择ST的型号,为啥选ST的,一方面因为GD的型号不全,另一方面选择GD的型号可能解锁指令不能用,后面新的J-Flash版本应该会逐步完善GD。下面给出一些对应的参考型号,不唯一,大体原则就是FLASH大小保持一致。
GD32E230系列 <—> STM32F030系列
例如:GD32E230F4 <—> STM32F030F4
GD32E230R8 <—> STM32F030R8

GD32F10X,GD32F30X,GD32E103,GD32F3X0 <—> STM32F103系列
例如:GD32F103C8 GD32F303C8 GD32E103C8 GD32F3x0C8<—> STM32F103C8

GD32F450 <—> STM32F429系列
例如:GD32F450VE <—> STM32F429VE

其他系列类似。

还有其它问题可参考以下文章:
GD32 MCU烧录指南及常见问题

你可能感兴趣的:(stm32,硬件配置,mcu,stm32)