STM32单片机被锁无法烧写程序解决办法

以前遇到无法烧写程序的问题

在开发中,单片机突然无法烧写程序,这种情况相信大家应该都遇到过。比如烧写程序引脚被设置为别的功能。这种情况也是最常见的。我们可以把复位电容短路,让单片机复位,然后点击烧写程序按钮,再释放复位电容。多试几次一般都能烧写成功。为什么呢?因为单片机程序运行到禁止了烧写口代码的时候就禁止了烧写口,我们烧写程序的时候,单片机已经执行了禁止烧写口的代码,这时我们烧写程序肯定就烧写不进去了。当单片机刚刚离开复位状态时,烧写程序的引脚还是烧写程序的功能,利用这个短暂的时期可以去烧写程序。注意这种情况下一般是看不到单片机内核序列号的。因为烧写工具无法和单片机通讯。

这次遇到无法烧写程序的问题。

可以看到单片机的序列号。
报错现象如下:
STM32单片机被锁无法烧写程序解决办法_第1张图片
经过我反复测试发现,只要在下载选项把校验去掉的情况下是不报错的。虽然提示擦除完成,但是并没有擦除。根据上边图片看出Flash的内容是0xAA。经过百度发现也有不少人遇到这个问题,参考此帖子。经过一番折腾,并没有解决我的问题。后来又请教了野火电子的技术支持,他猜测是单片机被锁定了,需要解锁才能用。解锁方法是在开始菜单栏找到J-Link STM32 Unlock,执行J-Link STM32 Unlock程序。然后选择要解锁MCU系列的代号,回车就可以了。参考下面两张图片(图片解锁的是F407,因为这个文章是回家写的,家里只有407单片机)。
STM32单片机被锁无法烧写程序解决办法_第2张图片
STM32单片机被锁无法烧写程序解决办法_第3张图片
注意,你可能双击运行J-Link STM32 Unlock程序,列表里并没有你需要解锁的型号。原因是Jlink版本过低,下载新一点的Jlink版本就可以了。

记录一下这次是怎样解决无法烧写程序的。防止以后再犯同样的错误。

最后一个思考问题

单片机是如何被锁的,我到现在不知道。哪些情况下单片机可能会被锁。欢迎评论区讨论。

你可能感兴趣的:(STM32F429,单片机,stm32,嵌入式硬件)