一个外置看门狗的反复复位问题的解决
stm32关于复位类型的判断及软件复位bug

STM32 关于复位类型的判断及软件复位bugSTM 32在复位时,有严重BUG:1. 上电复位和外置的看门狗芯片重启复位是无法区分开来的!RCC_FLAG_BORRST, RCC_FLAG_PINRST, RCC_FLAG_LPWRRST三个都复位了!2. 这样当要在上电复位初始化关键代码时,这些代码看门狗复位则不用重启,这个关键代码会导致应用业务的异常!若两个中断分不开,导致系统异常看门狗复位时影响业务!/*RCC_FLAG_BORRST: POR/PDR or BOR reset//Power-on/power-down reset (POR/PDR reset) or brownout (BOR) resetRCC_FLAG_PINRST: Pin reset //NRST pin可能为看门狗重启RCC_FLAG_PORRST: POR/PDRresetRCC_FLAG_SFTRST: SoftwareresetRCC_FLAG_IWDGRST: Independent Watchdog resetRCC_FLAG_WWDGRST: Window Watchdog resetRCC_FLAG_LPWRRST: Low Powerreset*//********************************************************** ******************************* 函数名: SysRstSrcRecord 参数:无返回值: 系统重启次数记录描述:记录系统重启的方式记录作者:李少雄版本:V1.0 2012年11月12日****************************************************************** ************************/u8 SysRstSrcRecord(u8*pstRest){ //u8 uchInfoChange=0; pstRest[0] = RCC_GetFlagStatus(RCC_FLAG_BORRST);pstRest[1] = RCC_GetFlagStatus(RCC_FLAG_PINRST); pstRest[2] = RCC_GetFlagStatus(RCC_FLAG_PORRST); pstRest[3] = RCC_GetFlagStatus(RCC_FLAG_SFTRST); pstRest[4] = RCC_GetFlagStatus(RCC_FLAG_IWDGRST); pstRest[5] =RCC_GetFlagStatus(RCC_FLAG_WWDGRST);pstRest[6] =RCC_GetFlagStatus(RCC_FLAG_LPWRRST);}。
单片机常见错误例程分析

单片机常见错误例程分析单片机是一种集成电路,对于初学者来说,由于经验不足,常会遇到一些错误。
下面我们来分析一些单片机常见的错误例程,以及解决方法。
一、看门狗定时溢出引起的复位单片机中通常都有看门狗(Watchdog)定时器,用于监控系统运行。
如果在程序中没有及时喂狗,导致看门狗定时器溢出,会引起复位。
解决方法:1.在主程序中设定喂狗的指令,以避免看门狗定时溢出。
2.在适当的位置设置看门狗使能的指令,保证看门狗定时器能正常工作。
3.尽量避免在中断服务程序中关闭看门狗定时器,以免因为中断响应过慢导致看门狗复位。
二、中断服务程序执行时间过长当中断服务程序执行时间过长时,会导致主程序无法继续正常运行。
这种情况下,单片机很可能无法响应其他外部事件。
解决方法:1.在中断服务程序中尽量减少对资源的占用,避免复杂的运算和长时间的延时操作。
2.将必要的数据交给主程序处理,减少中断服务程序的工作量。
3.合理设置中断优先级,确保重要的中断能及时响应。
三、电源噪声导致系统不稳定单片机对电源的稳定性要求较高,如果电源存在噪声,则可能导致系统不稳定,甚至崩溃。
解决方法:1.在供电线路上添加合适的滤波电容,以减小电源噪声。
2.使用稳压电源,保证电源输出的稳定性。
3.合理布线,避免电源和信号线的干扰。
四、编程错误编程错误是单片机常见的错误之一、例如,写入错误的寄存器地址、错误的命令、错误的数据等。
解决方法:1.熟悉单片机的手册,了解相关寄存器、命令和数据的使用方法。
2.仔细检查编程代码,避免拼写错误和语法错误。
3.使用调试工具,例如仿真器、逻辑分析仪等,进行实时调试。
五、外围设备连接错误单片机通常需要与外围设备进行通信,如果连接错误,可能导致通信失败或者数据传输错误。
解决方法:1.确保电路连接正确,检查信号线、电源线等的连接是否松动、接触不良。
2.根据外围设备的手册,仔细查阅相关接口的使用说明书,确保连接方式正确。
3.使用示波器、逻辑分析仪等工具,对通信信号进行监测和分析,找出错误原因。
看门狗芯片原理

看门狗芯片原理
看门狗芯片是一种用于监控系统运行状态的硬件设备。
它通过定时检测系统的运行情况,以确保系统在出现故障或崩溃时能够自动重启或采取其他应急措施,从而提高系统的稳定性和可靠性。
看门狗芯片的工作原理如下:
1. 看门狗计时器:看门狗芯片内置了一个计时器,其作用是定时检测系统的运行情况。
通常,看门狗计时器的定时周期较短,例如几十毫秒或几秒钟。
2. 系统运行状态监测:看门狗芯片会周期性地向系统发送一个重启信号,例如通过触发系统复位信号。
只要系统正常运行,系统会在短时间内清除重启信号,以示系统正常。
但如果系统发生故障或崩溃,就无法及时响应和清除重启信号。
3. 看门狗定时器复位:当看门狗芯片向系统发送重启信号后,在一个设定的时间内,看门狗芯片会不断检测系统是否给出相应的回应。
如果系统未能及时回应或清除该信号,看门狗芯片会认为系统出现故障,并产生一个复位信号。
4. 系统复位:当看门狗芯片检测到系统出现故障时,它会向系统发送复位信号,强制系统重新启动。
这样,系统就可以在发生故障时快速恢复运行,从而减少故障造成的影响。
总之,看门狗芯片通过定时检测系统运行状态,并根据系统的
响应情况采取相应的动作,确保系统能够及时发现并处理故障,从而提高系统的可用性和可靠性。
看门狗 知识总结

在该电路中SPC3的复位电路与89C52的复位电路应相互独立,这样在单片机复位时SPC3仍能够正常通信。
由MAX705组成的看门狗复位电路可以保证单片机系统在程序“跑飞”时能够可靠复位,MAX705的复位脉冲输出有正脉冲和负脉冲两种方式,当复位脉冲为负脉冲时,需要外接反相器后再连接到单片机的复位端,具体连接如图4。
图4 看门狗电路在正常情况下,P1.x引脚不超过1.6s就向WDI端发出“喂狗”信号,程序陷入死循环后,“喂狗”信号无法发出,当死循环运行时间超过1.6s时,MAX705的看门狗输出将变低并触发,复位信号从端输出。
1看门狗看门狗实际上是一个计数器,它需要在一定的看门狗延时周期内被清零,如果没有清零动作,看门狗电路将产生一个复位信号以使系统重新启动或建立一个非屏蔽中断(NMI)并执行故障恢复子程序。
大多数看门狗电路是沿触发,这样,无论是上升沿还是下降沿触发看门狗的输入端(WDI)通常都能够清计数器。
WDI引脚一般连接在处理器的一个I/0口,这条口线可由软件触发。
图1所示是微处理器通过在WDl脚发送脉冲清除看门狗定时器以防止复位的连接方式,实际上,清看门狗计数器的命令必须在主程序内。
如果看门狗没有被清零,复位后软件将从地址为0000(启动程序)的子程序处开始运行。
计算主程序的运行时间往往很困难,因为在此期间可能需要多次调用子程序,这与系统输入有关。
因此,设计人员常常选择看门狗延时周期远远高于测试到的或计算出的循环时间。
图2所示是正常工作情况下(看门狗在延时周期内被请零)的看门狗信号和复位信号。
图3所示为看门狗计数器溢出时引发一次复位的时序示意图。
工业标准的看门狗电路延时周期一般在l00ms~2s范围内,当然,也有些可调节或定制的看门狗电路能够覆盖更宽的延时范围(30ms至几分钟)。
如果主程序的执行时间对于看门狗电路而言过长,设计人员可以在主程序的不同部位多次执行看门狗触发命令,也可以选用看门狗延时周期更长的器件。
1.上电复位电路,2.手动复位电路,3.看门狗复位电路的工作原理 -回复

1.上电复位电路,2.手动复位电路,3.看门狗复位电路的工作原理-回复问题,并对每个主题进行详细的解释和说明。
1. 上电复位电路的工作原理:上电复位电路是一种电子电路,用于在电路供电时将所有的逻辑和电路状态重置为初始状态。
其主要工作原理如下:首先,当电路供电时,电源电压通过一个电压检测电路进行监测。
该电路通常由一个比较器和一个参考电压源组成。
当电源电压高于预定的阈值电压时,比较器输出高电平,表示电路供电正常;当电源电压低于阈值电压时,比较器输出低电平,表示需要进行复位。
接下来,复位信号由一个可编程延时器产生。
该延时器通常由一个RC电路和一个比较器组成。
当复位信号低电平时,RC电路开始充电,直到其电压高于阈值电压,比较器输出高电平,表示复位信号结束。
通过调整RC 电路的时间常数,可以实现不同的复位延时时间。
最后,将复位信号传递给电路中各个逻辑和存储元件,使其状态恢复到初始状态。
通常,复位信号直接连接到逻辑电路中的复位引脚。
在接收到复位信号后,逻辑电路内部的电源投入复位模式,使其状态清零。
2. 手动复位电路的工作原理:手动复位电路是一种通过人工操作来实现复位的电子电路。
其主要工作原理如下:首先,手动复位电路的核心部分是一个按钮或开关,通常被称为复位按钮。
当人工操作按钮时,复位按钮闭合,电路闭合,导通电路。
接下来,当电路闭合时,复位信号通过连接电路传递到电路中的逻辑和存储元件。
与上电复位电路类似,复位信号将使逻辑电路进入复位模式,将其状态恢复到初始状态。
最后,当按钮松开时,复位按钮断开,电路断开。
此时,复位信号停止发送,逻辑电路恢复正常工作状态。
手动复位电路通常用于故障排除或紧急情况下,通过人工操作将电路复位到初始状态。
3. 看门狗复位电路的工作原理:看门狗复位电路是一种通过定时器监测电路操作状态并进行复位的电子电路。
其主要工作原理如下:首先,看门狗复位电路的核心部分是一个看门狗定时器。
该定时器通常由一个RC电路和一个比较器组成。
解决无线路由器频繁重置的问题

无线路由器是我们在生活和工作中常见的一种设备,它能让我们的电脑、手机等无线设备连接到互联网,方便我们的上网和办公。
然而,有时我们会遇到一个令人头疼的问题,那就是无线路由器频繁重置。
这个问题不仅会影响我们的网络体验,还可能导致数据丢失。
那么,我们应该如何解决这个问题呢?1. 定位问题首先,当我们遇到无线路由器频繁重置的问题时,我们应该先查找原因。
频繁重置的原因可能是多方面的,可以从硬件和软件两个层面来考虑。
在硬件层面,我们可以检查电源供应是否稳定。
如果电源供应不稳定,无线路由器可能会频繁重启。
此外,检查网络线路是否连接良好也是很重要的。
不稳定的网络连接可能导致路由器重置。
在软件层面,我们可以检查路由器固件是否需要更新。
路由器固件是控制路由器运行的软件,如果固件过旧,可能会导致路由器出现各种问题,包括频繁重置。
此外,我们还可以检查路由器设置中是否有冲突或错误的配置,例如IP地址冲突等。
2. 解决方案找到了问题的根源后,接下来就是解决方案。
下面是一些常见的解决方案,可以根据具体情况进行尝试。
第一,确保电源供应稳定。
可以尝试更换电源适配器或者使用电源稳压器等设备来改善电源供应问题。
第二,检查网络线路。
确保网络线路连接良好,没有松动或损坏的情况。
第三,及时更新路由器固件。
可以在路由器制造商的官网上查找最新的固件版本,并按照说明进行更新。
第四,重新配置路由器设置。
可以尝试恢复出厂设置,然后重新进行设置。
在重新配置时,需要确保没有冲突的设置,例如重复的IP地址等。
第五,排除其他设备干扰。
有时,其他无线设备或者家电设备可能对无线路由器信号产生干扰,导致频繁重置。
可以尝试关闭其他设备,或者调整无线信号的频道。
3. 预防措施在解决了无线路由器频繁重置的问题后,我们也应该采取一些预防措施,以避免类似问题再次发生。
首先,定期检查设备。
定期检查无线路由器的硬件和软件状态,确保设备运行正常。
如果发现有损坏或者过旧的部件,及时更换。
看门狗复位的应用技巧

看门狗复位的应用技巧
说起看门狗这个名字还是蛮有趣的,它的作用就是在主人走神的时候咬他一口,把他咬醒。
实际点来说,就是当MCU运行过程中,在某处进入了死循环,或者受到干扰造成PC指针指向了无程序区,都会导致程序没反应,按键失效,屏幕内容不变等问题。
这时如果正确使用了看门狗,就会让PC
指针复位,从头开始执行程序。
看门狗复位的应用技巧包括三个方面:
一: 判断是否需要使用。
如果要使用看门狗的话,需要做一些寄存器的配置,在程序区的某些地方也要加入喂狗指令来防止看门狗复位,有一定的工作量,所以用与不用需要考虑一下。
能不使用看门狗的场合,要求是系统即使死机也问题不大,等待人过来断电复位即可的情况。
但是这种情况已经很少了,所以绝大多数情况下看门狗都要加上。
比如有温控功能的电热水器,假如电加热已经启动,但是系统死机了,温控失效,电加热也不会关闭,这时水温就会一直升高,直到水被蒸干,然后电加热损坏或引发火灾,或者人被开水烫伤。
这时有看门狗复位,系统就会恢复正常,检测到温度够了,就会关闭电加热的。
二、保证看门狗工作正常。
看门狗除了进行寄存器配置之外,喂狗函数的位置也很重要,没处理好就会发生不该复位时复位了,或改复位的时候没有复位,可能的原因是在可能出现的死循环里喂狗了。
单片机复位看门狗电路

705系列复位电路#概述GC705/706/707/708/813L是一组CMOS微处理器监控电路,可用来监控微处理器系统供电异常、电池故障和工作状态。
和采用分立元件及多片IC组合成电路相比,明显减小了系统电路的复杂性和元器件的数量,并提高了系统的可靠性和精度。
GC705/706/813L具备以下四项基本功能:1)电源开机,关机及电源供电不足时给出复位输出。
2)内含独立的看门狗电路输出。
如看门狗电路输入在1.6秒内未得到翻转信号,看门狗电路输出端将变成低电平。
3)内含门限1.25V的检测器,用于掉电报警,电池欠电监测和监测加错电源的状况(以+5V为准)。
4)手动复位时,给出确定脉宽的负向复位脉冲GC707/708和GC705/706基本功能一致,区别只在于GC705/706芯片中的第8脚正脉冲的复位(RESET)输出取消了,换成了看门狗定时器,原第6脚空脚被用做看门狗电路的输入端。
GC813L则除了第7脚输出正脉冲的RESET外,其它功能和GC705/706完全一样。
这几种电路的管脚功能定义和差异详见管脚定义图和管脚说明附表。
#应用范围计算机,微处理器和微控制器系统;嵌入式控制器系统;智能仪器仪表;通信系统;工业自动化系统;电池供电手持设备等等。
# 电气参数 除非特殊说明,Vcc =4.75V~5.5V (GC705/GC707/GC813), Vcc=4.5V~5.5V (GC706/GC708),T A = T MIN to T MAX参数符号 测试条件最小值典型值 最大值 单位GC705、706、707、708 1.0 5.5电源电压范围 Vcc GC813 1.1 5.5VGC705、706、813 150 350电源电流IccGC707、70850 350uAGC705、707、8134.50 4.65 4.75 GC706、708 4.25 4.40 4.50 复位门限 V RT GC706T 3.00 3.08 3.15 V复位门限迴差40 mV复位脉冲宽度 t RS 140 200 280 ms I SOURSE =800uAVCC-1.5 I SINK = 3.2mA 0.4GC705~708,VCC=1V ,I SINK =50uA 0.3GC707\708,I SOURCE =800uAVCC-1.5GC707\708,I SINK = 1.2mA 0.4 复位输出电压GC813,I SOURCE =4uA,V CC =1.1V 0.8V看门狗计时长度 t WD GC705\706\813 1.00 1.60 2.25 秒 WDI 脉冲宽度 t WPVIL =0.4V ,VIH =(VCC)(0.8) 50 ns 下限 0.8WDI 输入阈值 上限 GC705\706\813 V CC =5V3.5 VGC705\706\813,WDI =VCC 50 150WDI 输入电流 GC705\706\813,WDI =0V -150 -50uAGC705\706\813,I SOURCE =800uA VCC-1.5WDI 输出电压 GC705\706\813,I SINK =1.2mA 0.4VMR 上拉电流MR =0V100 250 600 uA MR 脉冲宽度 t MR150 ns 下限 0.8MR 输入阈值 上限2.0VMR 到RESET 的延迟 t MD250 ns PFI 输入阈值 VCC =5V V PFI 输入电流-25 25 nAI SOURCE =800uA VCC-1.5PFO 输出电压I SINK =3.2mA0.4V#极限参数源跌落),RESET引脚就会变低。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一个外置看门狗的不断复位问题的解决
最近,研发产品运行中的遇到一个异常,表现为:
上电后反复重启(时间间隔大概7秒),不能正常启动,断开外置看门狗复位信号后就正常了。
看门狗部分图纸如下:
启动过程如下:初始化cpu及部分硬件-》启动ucos-》创建2个任务,1个可以复位看门狗,1个完成系统的初始化。
因为是3.3V系统,使用的外置看门狗型号为SP706TE,特征如下:
经过仔细测试,cpu是输出的WDI信号是正常的,250ms间隔的脉冲,没有问题。
测量SP706的供电等,也都是正常的。
但是WDO上每隔6.18s会有一个20uS的低电平脉冲。
经测试,在C32上并一个47uF的电容,效果会好一些。
由此,怀疑是3.3V上的干扰在某个瞬时会低于3.08V的RESET阀值。
将SP706T改为SP706RE后,问题解决;
总结:
1)外置看门狗检测电压VCC,灵敏度很高。
如果vcc上纹波大,建议使用低阀值的芯片,
或者使用PFI功能来检测电压,当然也可以采用更优质的电源方案;
2)产品上电后,尽早启动看门狗,系统的可靠性会高一些,可以避免系统启动过程中发生的异常;
3)喂狗避免放到中断中,也尽量不要放到优先级高的任务中;
20140909
网友allen_zhan提到电源可靠性的问题,又做了3.3V的纹波测试,如下:
可见3.3V的电压跌落有700mV之高。
原因是以下电路:
系统启动后,延时打开通讯电源(时间延迟和上文提到的6-7s一致),这样可以降低启动冲击电流,避免供电电源保护。
在PWR输入为低电平时,F0505D工作,包括前面的C33充电,造成5V的电源跌落,同时3.3V也收到了影响。
将C33和C47由10uF改为1uF后,电源跌落下降到370mV。
重新将看门狗改为SP706SE后,也可以正常启动了。