STM32,软复位,上电复位,看门狗复位对芯片IO状态的影响?

这个问题比较重要。


有网友问:

大家好,我是做工业控制的,我想问一下STM32如何实现看门狗复位不初始化RAM区,因为是做控制的所以我们想实现CPU热复位后系统能接着原来的流程走,动作开出能不受看门狗复位的影响,即复位前开出的动作,看门狗复位后还是保持开出状态,网上说可以修改启动代码,请问如何实现?谢谢!

-------------------------------------------------------------------------------------------

比如在我现在做的STM32控制继电器输出,如果用了看门狗复位,若复位前继电器是接通,那么复位后继电器断开。

那么,如果用了软复位,就是说一旦发现程序跑的不正常(如在指定时间内没有进入while(1)无限大循环),那么直接启动软复位是不是个好的法子呢?

非常值得考虑。

===========================

RM0008 说:

6.1.1  系统复位 
除了时钟控制器的RCC_CSR寄存器中的复位标志位和备份区域中的寄存器(见图4)以外,系统
复位将复位所有寄存器至它们的复位状态。 
当发生以下任一事件时,产生一个系统复位: 
1. NRST引脚上的低电平(外部复位) 
2.  窗口看门狗计数终止(WWDG复位) 
3.  独立看门狗计数终止(IWDG复位) 
4.  软件复位(SW复位) 
5.  低功耗管理复位 
可通过查看RCC_CSR控制状态寄存器中的复位状态标志位识别复位事件来源。 

=================================

那么看门狗重启了,继电器不能保持之前的状态怎么办呢?

网上的办法是硬件加上锁存器。也有道理啊,不能所有的问题都由软件来处理。软件不是万能的。要同硬件协同作战。

有网友说,断电后,PLC有的是有电池的,所以可以保持(这个和看门狗重启不保持是两回事啦)。


现在感觉一个比较好的方法是,看门狗复位后,在程序的刚开始,读出上一次的状态,如果是继电器闭合,则尽快的恢复到上一次的状态。

这个可以尝试一下!!



----------------------------

RM0008:

芯片内部的复位信号会在NRST引脚上输出,脉冲发生器保证每一个(外部或内部)复位源都能有
至少20μs的脉冲延时;当NRST引脚被拉低产生外部复位时,它将产生复位脉冲。



你可能感兴趣的:(STM32,软复位,上电复位,看门狗复位对芯片IO状态的影响?)