问题描述
我用stm32f407做开发,开发环境用的vscode+platformio,下载调试工具用的stlink,之前调试运行一直正常,突然在某一次下载程序之后,不知道什么原因,无法再次下载程序了。
用platformio下载提示如下:
用keil下载告警如下:
在某次程序下载后,再也无法下载程序,怀疑是未知原因导致mcu保护开启了,用stlink utility和cubeprogrammer看都像是读保护开启了,保护等级level1,但是当我尝试将读保护等级改为level0时,stlink utility和cubeprogrammer都报错了,比如cubeprogrammer提示Error: Option Byte Programming failed Or modified by application after OBLAUNCH,应该怎么解决
已经做过的尝试
根据告警信息,我上午搜索了一下解决办法,最终指向导致此问题的原因是芯片开启了读保护,我想不通是如何开启的,用户程序中没有对读保护进行操作的,但是想着还是先解决问题,所以就开始用不同方法尝试解除写保护,但是都失败了。
- 用stlink utility解除读保护
打开软件,显示读保护等级为level1,如图:
我试着将等级改为level0,但是报错了,如图:
解除失败。
- 用stm32cubeprogrammer解除读保护
打卡软件,显示如下:
我尝试修改RDP为AA,但是失败了,如下图:
最后
以上是在BOOT0拉高的情况下进行的,stlink用国产的和进口的都试了。
目前不清楚为什么会导致这个问题发生,在那次下载程序时,没有退出调试模式就直接进行烧录了,不知道有没有关系,或者硬件stlink接线不稳定?再或者我用的国产的stlink有问题?
最主要的,是问题该如何解决呢?请给点建议,感谢。