这配置真的能吃鸡要什么配置才能玩吗 有点想玩吃鸡要什么配置才能玩看着这个便宜 想试试水 求大神赐教

【实战经验】窗口看门狗启动时异常复位问题 - STM32 - 意法半导体STM32/STM8技术社区
后使用快捷导航没有帐号?
查看: 554|回复: 3
【实战经验】窗口看门狗启动时异常复位问题
在线时间1233 小时
ST金币9949088
主题帖子好友
窗口看门狗(Window watchdog, WWDG),提供了一种在指定时间窗内刷新看门狗的功能。同时WWDG提供了一个提前唤醒中断,能够在WWDG计数器值降到触发复位的上一个值时触发。实际应用中,可以在此中断被触发时,刷新WWDG,并记录当前运行信息,以满足运行错误信息记录等功能需求。
问题复现平台: STM3210E_EVAL板
& && && && && && && &&&IAR for ARM v7.70.1
问题复现程序: 基于STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Examples
问题描述:在应用开发过程中,WWDG开启后,WWDG的提前唤醒中断立即被触发,并且微控制器复位。
主要实现程序如下所示。
21.jpg (44.82 KB, 下载次数: 0)
10:58 上传
如流程图所示,在应用程序正常运行时,WWDG中断不会被触发。当程序跑飞等异常情况出现时,由于未能在及时刷新WWDG,导致WWDG中断事件被触发。在中断服务程序中刷新WWDG,以免微控制器复位,造成运行信息被破坏,并保存运行信息以供错误分析。
22.jpg (47.14 KB, 下载次数: 0)
10:58 上传
利用IAR以及ST-Link V2进行在线调试,在执行完WWDG_Enable(127) 指令后,WWDG寄存器值如下所示。
23.jpg (28.9 KB, 下载次数: 0)
10:58 上传
其中提前唤醒中断标志WDGA@WWDG_SR被置位,意味着提前唤醒中断触发。在中断服务程序中,存在刷新WWDG指令。此时计数器值T=0x7F@WWDG_CR不在窗口内(W=0x50@WWDG_CFR),而WWDG在非窗口中(不允许刷新阶段)重装载计数器值会导致复位,如下图所示。
24.jpg (51.14 KB, 下载次数: 0)
10:58 上传
经过验证,针对这种情况,有两个解决方案。
解决方案一:
在使能WWDG之后清除提前唤醒中断标志位EWI@WWDG_SR,然后使能提前唤醒中断。如下所示。
25.jpg (33.11 KB, 下载次数: 0)
10:58 上传
解决方案二:
配置计数器装载值不大于窗口值。如下所示。
26.jpg (32.8 KB, 下载次数: 0)
10:58 上传
同时,需要确保唤醒中断的服务程序中存在中断标志位EWI@WWDG_SR判断语句,以避免异常。
WWDG不仅提供了一种有别于独立看门狗的程序监测方法。同时提前唤醒中断的存在,也为故障信息的保存以及分析,提供了一种途径。但是,需要注意的是窗口看门狗的时钟源来源于PCLK1,在STOP、STANDBY低功耗模式下,WWDG功能被停止。
在线时间133 小时
ST金币1671
主题帖子好友
金牌会员, 积分 2296, 距离下一级还需 2704 积分
金牌会员, 积分 2296, 距离下一级还需 2704 积分
占位,学习了.
在线时间80 小时
ST金币1159
主题帖子好友
金牌会员, 积分 1476, 距离下一级还需 3524 积分
金牌会员, 积分 1476, 距离下一级还需 3524 积分
在线时间165 小时
ST金币1795
主题帖子好友
金牌会员, 积分 2590, 距离下一级还需 2410 积分
金牌会员, 积分 2590, 距离下一级还需 2410 积分
谢谢分享& && && && && && && && && &
站长推荐 /2
关于意法半导体MCU交货周期88周、截单等不实传闻,官方表示ST拥有长期生产和供货策略及完善计划,保证正常及后备产能。
Tel: 3-8064
备案号: 苏ICP备号-2
|||意法半导体STM32/STM8技术社区
Powered bystm32独立看门狗和窗口看门狗的区别
单片机&嵌入式
单片机应用
嵌入式操作系统
学习工具&教程
学习和开发单片机的必备工具
(有问必答)
(带你轻松入门)
电子元件&电路模块
当前位置: >>
>> 浏览文章
stm32独立看门狗和窗口看门狗的区别
本文转自:&
1)独立看门狗没有中断,窗口看门狗有中断
2)独立看门狗有硬件软件之分,窗口看门狗只能软件控制
3)独立看门狗只有下限,窗口看门狗又下限和上限
4)独立看门狗是12位递减的。窗口看门狗是7位递减的
5)独立看门狗是用的内部的大约40KHZ RC振荡器,窗口看门狗是用的系统时钟APB1ENR
以上是我总结的
接下来我们介绍一下独立看门狗和窗口看门狗,这里我们就不讲解程序了,很简单的,配置一下寄存器就可以使用了。
独立看门狗没有中断功能,只要在计数器减到0(下限)之前,重新装载计数器的值,就不会产生复位,独立看门够有硬件和软件之分,硬件是通过烧写器的&设定选项几节等&配置,一旦开启了硬件看门狗,那么就停不下来了,只能在重新配置&设定选项几节等&才能关掉硬件看门狗,软件看门狗只需要设置IWDG-&KR=0XCCCC;就可以启动看门狗了,软件狗可以在系统复位时关掉,如果在在初始化里开启软件看门狗,那就开启了软件看门狗,
独立看门狗是12位递减的寄存器,使用片子内部的RC振荡器,这个振荡器是关不掉的。
窗口看门狗有中断,这个中断的作用是在计数器达到下限0x40的时候,产生中断,让你喂狗,如果你不喂狗,计数器的值变为0x3f的时候,将会产生系统复位,即使是喂狗,也应该在中断里快速喂狗,要不时间长了计数器减一也会变成0x3f产生复位,这个时间根据芯片手册的公式进行计算即可得到,窗口看门狗只有软件开启方式,还有一个上限值,这个值如果大于计数器的初始值,那么就没有任何作用了,这个值小于计数器的初始值得时候,当计数器的值大于上限值时你对计数器进行装载,将会产生复位,只有在计数器减到小于上限值时,你才能重新装载计数器,意思就是说只有计数器的值在上限值和下限值之间你才能装载计数器,否则就会产生系统复位,当上限值小于下限值,也没有意义。
独立看门狗Iwdg&&我的理解是独立于系统之外,因为有独立时钟,所以不受系统影响的系统故障探测器。主要用于监视硬件错误。
窗口看门狗wwdg&&我的理解是系统内部的故障探测器,时钟与系统相同。如果系统时钟不走了,这个狗也就失去作用了。主要用于监视软件错误。
以下是经过测试发现的:
//发现1:当窗口值大于等于计数器的值,无论怎么更改配置的顺序,都是正确的运行结果
//发现2:当窗口值小于计数器的值,顺序一旦改变就运行错误
经过测试发现,当初始化的顺序不是正常顺序的话,就会把WWDG-&SR置一,为什么我也不知道,谁知道片子里面怎么搞的
你在开启中断就进入中断的,这时你又进行喂狗,就会复位的,因为这时计数器的值&上限窗口的值,所以会复位,所以就会一直出错下去
解决办法是,初始话的时候最后两句是先清除中断标志然后在开启中断,如果你不这么干,那么在初始化的时候很可能把WWDG-&SR
置位,那么你在开启中断,就会毫不犹豫的进入中断,你在中断重装计数器值得时候,就会产生复位
【】【】【】【】
上一篇:下一篇:
CopyRight @
单片机教程网
, All Rights ReservedSTM8 窗口看门狗(WWDG) STM8应用笔记
STM8 窗口看门狗(WWDG)
以下资料由微雪电子整理并发布,未经许可不得转载,否则追究相应责任!
STM8窗口看门狗介绍
窗口看门狗用于监测由于外部干扰或不可预知的逻辑条件所产生的软件错误,这样的软件错误通常会导致应用程序不按照预期的方式运行。除非程序在递减计数器的T6位变为0之前刷新递减计数器,看门狗电路将在一个预置的时间间隔后产生系统复位;如果在7位的递减计数器数值达到窗口寄存器数值之前刷新递减计数器,同样会产生系统复位。这就意味着只能在一个有限的时间窗口内刷新递减计数器。
WWDG主要功能
●可编程的自由运行递减计数器
●有条件的复位
─如果开启了看门狗,当递减计数器的数值小于0x40时产生复位
─如果开启了看门狗,当在指定的时间窗口之外重加载递减计数器的数值(见图27)时产生复位
●硬件或软件启动看门狗(由选择字节指定)
●可在HALT指令时产生复位(由选择字节配置)
WWDG功能说明
如果开启了看门狗(设置了WDGA=1),当7位的递减计数器(T[6:0]位)从0x40变为0x3F时(即T6变为0),看门狗产生一个复位信号并把复位引脚拉低。如果软件刷新计数器时,计数器的数值大于窗口寄存器中的数值,同样会产生复位。
(图25:STM8窗口看门狗框图)
在正常的操作期间,应用程序必须定期地写入WDGCR寄存器,以避免产生复位;这个写的动作必须在计数器的数值小于窗口寄存器的数值时进行。写入WDGCR寄存器的数值必须是介于0xFF和0xC0之间(见图26):
开启看门狗:
如果(通过选择字节)选择了软件看门狗,在系统复位后看门狗处于关闭状态。设置WDGCR寄存
器中的WDGA位将开启看门狗,随后在下次复位之前将不能关闭看门狗。
如果(通过选择字节)选择了硬件看门狗,看门狗将始终开启,而WDGA位将不起作用。
控制递减计数器:
递减计数器是自由运行计数器:即使未开启看门狗,它依然不断地递减计数。当开启看门狗
时,必须设置T6位以避免立刻产生复位。T[5:0]位中包含了看门狗产生复位前允许的时间延迟(见图26);因为写入WDGCR寄存器时,预分频器的状态是不可知的(见图27),所以这个时间延迟介于一个最小和最大数值之间。
窗口寄存器(WDGWR)的数值是指定窗口的高限:为防止复位,必须在递减计数器的数值小于窗口寄存器的数值并大于0x3F时刷新递减计数器。图27描述了窗口看门狗操作过程。注意:T6位可以用于产生一个软件复位(即设置WDGA位同时清除T6位)
在停止时产生看门狗复位
如果开启了看门狗,并且选择了停止时产生看门狗复位的选项,则执行HALT指令将产生复位。
在停止模式下使用WWDG
如果在选择字节中使能了停止模式下的看门狗(HALT指令不产生看门狗复位),建议在执行HALT指令前先刷新看门狗计数器,以避免在唤醒微控制器后立刻进入不希望的看门狗复位。
如何设置看门狗的超时
下图显示了看门狗计数器(CNT)中的6位数值,与以毫秒为单位的超时时间的线性关系,这个表可以在不考虑时序变化时作为一个快速的粗略计算参考,如果需要更精确的计算,请使用图27的公式。
---------------------------------------------------------------------------------------------------------------------------
警告:每次写入WDGCR寄存器时,首先要置T6位为'1',以避免立刻产生看门狗复位。
---------------------------------------------------------------------------------------------------------------------------
(图26:STM8大约的超时时间)
(图27:STM8窗口看门狗时序图)
WWDG低功耗模式
表28:WWDG在低功耗模式下的影响
等待(Wait)
看门狗不受影响:递减计数器照常工作
停机(Halt)
选择字节中
不产生看门狗复位。微控制器进入停止模式。递减计数器递减一次后停止计数,在微控制器收到一个外部中断或复位之前,它不会再产生看门狗复位。
如果收到了一个中断(参考中断映像表,查看停止模式下可以产生哪些中断),在经过稳定延迟后看门狗将恢复计数。如果系统被复位,除非在选择字节中选择了硬件看门狗,否则看门狗将被关闭。
产生一个复位而不是进入停止模式。
(Active Halt)
不产生复位,微控制器进入Active Halt模式。看门狗计数器停止计数,不再递减。当微控制器收到一个振荡器中断或外部中断,看门狗立刻恢复计数。当微控制器被复位,在经过稳定延迟后看门狗将恢复计数。
硬件看门狗选项
如果在选择字节中选择了硬件看门狗选项,则看门狗始终开启,同时WDGCR寄存器中的
WDGA将不起作用。请参考数据手册中有关选择字节的说明。
在停止模式下使用WWDG
如果开启了看门狗,则建议在停止模式下做如下操作。
在执行HALT指令前先刷新看门狗计数器,以避免在唤醒微控制器后立刻进入不希望的看门狗复位。
控制寄存器(WWDG_CR)
地址偏移值:0x00
复位值:0x7F
WDGA:开启位
该位由软件设置,只能由硬件在复位后清除。当WDGA=1时,看门狗可以产生复位。
0:关闭看门狗
1:开启看门狗
T[6:0]:7位计数器(MSB至LSB)
这些位包含看门狗计数器的数值,每过(大约)12288个fckc_wwdg_ck周期递减一次。当它的内容从0x40变为0x3F(T6被清除)时,则产生一个复位。
(1)如果在选择字节中使能了硬件看门狗功能,则此位不起作用。
窗口寄存器(WWDG_WR)
地址偏移值:0x01
复位值:0x7F
W[6:0]:7位计数器(MSB至LSB)
这些位包含了窗口的数值,这是需要与递减计数器比较的数值。
窗口看门狗寄存器映像和复位数值
(表29:STM8
WWDG寄存器映像和复位值)
STM8 窗口看门狗(WWDG)

我要回帖

更多关于 什么配置才能玩吃鸡 的文章

 

随机推荐