版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014674798/article/details/85229064
无限重启
烧写程序后,发现MCU复位脚每隔500ms+就回出现一个低电平复位脉冲
仔细检查复位电路后,未发现信号输入源,因此怀疑是STM32内部输出的复位脉冲(联想到内部看门狗,看门狗可能需要输出复位脉冲给MCU外部的其他电路)
验证IWDG猜想
在while循环中喂狗,发现MCU不再重启,确认是IWDG被使能了;
仔细翻看检查代码后,未发现IWDG的使能代码(难不成IWDG不需要软件开启)
查找IWDG是怎么被开启的
通过搜索引擎查找各种资料后,发现,很可能是STM32的选项字节(Option Bytes)被人修改,或者被盗版J-Link无意间修改了(只是猜测);
验证:通过代码读取选项字节,并打印,发现选项字节的WDG_SW位被清零,与默认值不同,由此确认是选项字节的问题;
修复选项字节
代码修改(未实现,待更新)
工具修改(J-Link STM32 Unlock、ST-Link Utility)
手头没有ST-Link,但是据说ST-Link的修复方式更简单