本文介绍了如何解决由于STM32芯片的Flash写保护而导致无法下载程序和在线调试的问题;如果您遇到相同的问题,希望本文能对您有所帮助。

1 Flash写保护如果为Flash设置了写保护,则无法对Flash进行编程和擦除。

开发STM32时,如果发生这种情况,通常仿真器支持解锁Flash,并且jlink,stlink等仿真器均支持此功能。

2错误提示使用MDK进行调试时,出现错误== Flash超时。

重置目标并重试==,如下图所示;经过一番折腾之后,问题仍然没有解决,因为使用的仿真器是stlink,所以我下载了stlink实用程序来尝试解决问题; 3 stlink实用程序3.1基本功能stlink实用程序是ST正式提供的免费软件,支持STM32 ST-LINK的程序包括带有命令行界面(CLI)的图形用户界面(GUI)。

该工具还提供许多其他功能,如下所示;可以对STM32内部存储器(闪存,RAM,OTP和其他存储器),外部存储器进行编程;验证程序内容(在编程期间和之后的校验和),还可以实现STM32编程自动化;它还提供其他功能; 3.2解锁闪存当stlink连接到目标板上时,打开stlink实用程序并在菜单栏中的Target下选择connect,因为此时Flash已被锁定,因此您还会看到相应的错误消息无法读取内存禁用读取保护并重试,如下图所示;好的,您只需要触摸下面的写保护,就可以在菜单栏中,选择“打开选项字节...”选项,或者直接通过快捷键ctrl + B打开它。

请确保已正确连接链条和目标板,否则将出现错误;如果连接正确,请打开“选项字节...”,然后在此处找到“读取保护”选项已启用,这意味着无法通过swd读取STM32内部Flash程序。

关键点:将“读取保护”选项设置为禁用,然后单击“应用”。

此时,Flash已成功解锁。

但同时,发现内部闪存已被擦除。

这可能与STM32的保护机制有关,该机制可防止程序被复制然后反编译和破解,这也可能增加破解的门槛。

具体显示如下图所示;完成上述步骤后,在菜单栏中的“目标”下选择“断开连接”,或通过快捷键ctrl + D断开与目标板的连接。

再次输入MDK,目标板就可以正常调试和仿真了,并对程序进行编程。

3.3写保护打开菜单栏目标中的Option Bytes ...选项,我们还看到下面的Flash扇区保护选项;选择全选后,我们发现所有页面均已写保护,只需选择应用选项即可执行Flash扇区保护写保护;详情如下; 4小结可以结合STM32参考手册来研究Flash写保护的问题。

其内部闪存提供相应的保护机制。

本文只是结合ST官方工具stlink实用程序来解决常见的简单问题。

作者的能力和水平是有限的,文章中不可避免地存在错误和遗漏。

请随时启发我; -END-推荐一篇好文章单击蓝色字体即可跳转。

整个网络上最容易理解的SPWM入门教程,请来到百姓天哪!事实证明,PWM非常简单。

PID微分器和滤波器的爱与恨。

简单PID算法的快速识字能力。

什么是增量PID? DJI在三方面都惨遭失败,因为它不了解PID的整体抗饱和性。

创意不容易。

欢迎转发,留言,喜欢,并与您的朋友分享。

感谢您的支持!长按以标识QR码以添加我的微信免责声明:本文的内容经21ic授权后发布,版权归原作者所有。

该平台仅提供信息存储服务。

本文仅代表作者的个人观点,并不代表该平台的立场。

如有任何疑问,请与我们联系,谢谢!