STM32外部复位IC与看门狗冲突,无法复位问题解决方案

        使用STM32H743制作了一款飞控,外部复位IC采用MAX809STR,打板完后,烧录飞控固件后大量板子无法正常启动,怀疑是晶振没有起振或MCU未焊接好,检查后均焊接正常,编写裸机LED定时闪烁验证程序可正常运行。经网上查询资料锁定是飞控看门狗与外部复位IC冲突,引起的故障。

        

复位IC原理图

        采用网上查到的解决方案,改阻值、串二极管均未解决。最终查询STM32数据手册复位电路后,采用硬件改动最少的方案,取消复位IC,单片机复位引脚对地接104电容,问题解决。

        如图所示,STM32复位引脚(NRST)芯片内部集成上拉电阻RPU 典型值40K,外部仅对地接0.1uF电容即可形成RC复位电路。

PCB如图所示,

        将复位IC复位引脚与MCU复位引脚连接的10K电阻改为0欧电阻,拆下复位IC,原 1/2引脚焊接0.1uF电容,上电后飞控程序运行正常,长时间使用过程中未发现异常。

        复位IC与看门狗复位冲突的具体原因待整理。。

### 判断系统或设备是否因看门狗定时器复位 为了确认系统或设备是否因为看门狗定时器而发生复位,通常可以采用以下几种方法: #### 1. 检查状态标志 许多微控制器提供特定的状态寄存器用于记录最后一次复位的原因。这些寄存器中可能包含指示是由看门狗引起的复位的特殊标志位。 例如,在某些ARM Cortex-M系列MCU上,可以通过读取`RCC_CR`中的相应位来检测是否有来自看门狗复位事件[^1]。 ```c if (RCC_GetFlagStatus(RCC_FLAG_WWDGRST) != RESET) { // 复位由窗口型看门狗引起 } else if (RCC_GetFlagStatus(RCC_FLAG_IWDGRST) != RESET){ // 复位由独立看门狗引起 } ``` #### 2. 使用调试工具查看启动原因 一些开发板支持连接到外部调试接口(如JTAG/SWD),利用IDE内置的功能可以直接查询最近一次复位的具体原因。这类功能往往能够给出更详细的诊断信息,帮助开发者快速定位问题所在。 #### 3. 设置并监控提前唤醒中断(Early Wakeup Interrupt, EWI) 对于具备EWI特性的看门狗定时器来说,可以在即将触发复位之前产生一个可处理的中断请求。这样就可以在实际复位前捕获该中断,并采取适当措施保存现场数据以便后续分析[^4]。 ```c void WWDG_IRQHandler(void) { /* 如果是早期唤醒中断 */ if(WWDG_GetITStatus(WWDG_EARLY_WAKEUP_INT)){ // 记录日志或其他必要的操作 SaveResetReason(RESET_REASON_WDT); // 清除中断标志 WWDG_ClearITPendingBit(WWDG_EARLY_WAKEUP_INT); } } ``` 通过上述手段之一或多者结合使用,便能够在很大程度上准确判断出当前系统的复位是否源于看门狗机制的作用。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值