如何正确学习一款单片机(四)--烧写程序导致芯片锁死的处理办法

本文介绍一种特殊情况的处理。我们使用stm8芯片,有时需要使用其复用功能,就要更改CPU内部EEPROM的选项字节。在往单片机下载程序时,可能会因为误操作而导致芯片异常锁死,这时如果再想用往CPU下载程序时,就会因无法识别芯片而提示如下图所示错误(IAR环境下烧录结果):

刚接触这类问题也走过不少弯路。一开始以为是芯片损坏了,想要换芯片,结果换了芯片后还是提示错误,又以为是软件,最后发现也不是软件问题。

其实这是因为改变选项字节时操作错误导致芯片锁住了。我们一起来看看选项字节部分datasheet怎么说:

我们在对选项字节OPT操作时需要进行解锁,先后向FLASH_DUKR寄存器写入这两个密匙(顺序不能反,反了的话芯片就锁住了)。

do

{

FLASH->DUKR = 0x56;

FLASH->DUKR = 0xAE;

} while(!(FLASH->IAPSR & 0X08));

解锁之后就可以向选项字节OPT写入数据了,否则直接向OPT写入数据是写不进去的。

然而,如果我们因为代码出错,导致芯片被锁,该怎么处理呢?这就可以用我们在上篇文章中小编和大家介绍的另一个软件STVP来解决。

首先我们使用IAR生成任意一片代码的扩展名为.s19的文件,配置如下:

如上图选择Motorola模式,把扩展名改为.s19,编译生成这个扩展名的文件,然后打开STVP,找到该文件,如下:

之后注意配置选项字节为关闭保护,步骤如下图:

通过STVP的烧录,相当于强行把CPU内部flash选项字节给刷写回来。这样我们的单片机就可以再次正常使用啦。

举报
评论 0