MCU死机,按键复位和WDT复位全部失效

在进行ESD实验时,发现某些MCU(如M0, M3, M4)在出现死机状况时,按键复位和WDT复位功能失效。测试中,使用GPIO和PLL_72M作为时钟,当MCU死机时,WDT和NRST复位无效,仅断电重启能恢复。进一步研究发现,死锁可能导致Hardfault中断,但即使在Hardfault中断内加入GPIOToggle和喂狗程序,WDT仍无法正常工作。然而,添加看门狗初始化和喂狗程序后,即使出现死机,也能在一定时间后由WDT复位。STM32F103和STM32F407的对比实验得到了类似的结果。" 127909915,16467701,Python循环与求和统计,"['Python', '编程语言', '循环结构']
摘要由CSDN通过智能技术生成

        自家MCU芯片(M0,M3,M4)进行 ESD实验,偶然发现失效状态下有时会发生按键复位和WDT全部失效的问题。

        测试环境是这样的:简单的一个GPIO Tog小程序,使用PLL_72M(HSI作为PLL时钟)作为系统时钟,复位时LED1闪一下,复位后LED2持续闪烁,然后在GPIO依次接触耦合放电,这样可以观察程序是不是一直在跑,有没有发生复位。结果打出死机问题(LED常亮或常灭)时,芯片WDT失效,NRST复位也失效,断电重启后程序才恢复运行。

        首先怀疑死锁(Hardfault)的情况,在Hardfault中断函数里增加一个GPIO Tog,再次进行实验,果然,LED2常亮或常灭时,Hardfault中断里的这个Tog持续运行,对应的LED持续闪烁,WDT和按键复位均不能跳出这个中断。

        继续增加程序,将LSI通过MCO引脚打出,再次进行实验,复现LED2常亮/常灭的情况,同样的,Hardfault中断里的这个Tog持续运行,WDT和按键复位均不能跳出这个中断,此时用示波器观察MCO的波形,LSI运行正常。

        继续增加程序,在Hardfault中断函数里继续增加一个喂狗程序,同样的ESD电压操作环境下,不再出现死机不能恢复的现象,即使触发了常亮/常灭,一段时间(默认看门狗时间是4s)后会被WDT复位,LED2 Tog继续运行。

        使用STM32F103,STM32F407进行对比实验。可以复现同样的死机现象,在Hardfault中断函数里增加一个看门狗初始化和喂狗程序,不再出现死机不能恢复的现象。

        ST的电气规格中有特别注明:

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值