以前遇到无法烧写程序的问题
在开发中,单片机突然无法烧写程序,这种情况相信大家应该都遇到过。比如烧写程序引脚被设置为别的功能。这种情况也是最常见的。我们可以把复位电容短路,让单片机复位,然后点击烧写程序按钮,再释放复位电容。多试几次一般都能烧写成功。为什么呢?因为单片机程序运行到禁止了烧写口代码的时候就禁止了烧写口,我们烧写程序的时候,单片机已经执行了禁止烧写口的代码,这时我们烧写程序肯定就烧写不进去了。当单片机刚刚离开复位状态时,烧写程序的引脚还是烧写程序的功能,利用这个短暂的时期可以去烧写程序。注意这种情况下一般是看不到单片机内核序列号的。因为烧写工具无法和单片机通讯。
这次遇到无法烧写程序的问题。
可以看到单片机的序列号。
报错现象如下:
经过我反复测试发现,只要在下载选项把校验去掉的情况下是不报错的。虽然提示擦除完成,但是并没有擦除。根据上边图片看出Flash的内容是0xAA。经过百度发现也有不少人遇到这个问题,参考此帖子。经过一番折腾,并没有解决我的问题。后来又请教了野火电子的技术支持,他猜测是单片机被锁定了,需要解锁才能用。解锁方法是在开始菜单栏找到J-Link STM32 Unlock,执行J-Link STM32 Unlock程序。然后选择要解锁MCU系列的代号,回车就可以了。参考下面两张图片(图片解锁的是F407,因为这个文章是回家写的,家里只有407单片机)。
注意,你可能双击运行J-Link STM32 Unlock程序,列表里并没有你需要解锁的型号。原因是Jlink版本过低,下载新一点的Jlink版本就可以了。
记录一下这次是怎样解决无法烧写程序的。防止以后再犯同样的错误。
最后一个思考问题
单片机是如何被锁的,我到现在不知道。哪些情况下单片机可能会被锁。欢迎评论区讨论。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)