最新STM32窗口看门狗实验
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《例说STM32》
➢ 该位中的EWI是提前唤醒中断,也就是在快要产生复位的 前一段时间(T[6:0]=0X40)来提醒我们,需要进行喂狗了
,否则将复位!因此,我们一般用该位来设置中断,当窗 口看门狗的计数器值减到0X40的时候,如果该位设置,并
开启了中断,则会产生中断,我们可以在中断里面向 WWDG_CR重新写入计数器的值,来达到喂狗的目的。注 意这里在进入中断后,必须在不大于113us的时间(PCLK1 频率为36M且WDGTB为0的条件下)内重新写WWDG_CR ,否则,看门狗将产生复位!
2020/10/23
广州市星翼电子科技有限公司
3
ALIENTEK
《例说STM32》
根据上面的公式,假设Fpclk1=36Mhz,那么可以得到最小-最大超时时间表如下表 所示:
总结: STM32F的窗口看门狗中有一个7位的递减计数器,它会在出现下述2种情况之一 时产生看门狗复位: 1)当计数器的数值从0x40减到0x3F时 2)当喂狗的时候如果计数器的值大于某一设定数值时,此设定数值在 WWDG_CFR寄存器定义
STM32窗口看门狗实验
ALIENTEK
《例说STM32》
8.1 窗口看门狗原理
➢ 窗口看门狗(WWDG)通常被用来监测由外部干扰或不可预见的逻辑条件造成 的应用程序背离正常的运行序列而产生的软件故障。除非递减计数器的值在T6 位(WWDG->CR的第六位)变成0前被刷新,看门狗电路在达到预置的时间周 期时,会产生一个MCU复位。在递减计数器达到窗口配置寄存器(WWDG>CFR)数值之前,如果7位的递减计数器数值(在控制寄存器中)被刷新, 那么也 将产生一个MCU复位。这表明递减计数器需要在一个有限的时间窗口中被刷新 。他们的关系可以用下图来说明:
2020/10/23
广州市星翼电子科技有限公司
8
ALIENTEK
《例说STM32》
➢ 状态寄存器(WWDG_SR)
该寄存器用来记录当前是否有提前唤醒的标志。该寄存器仅有位0有效,其他 都是保留位。当计数器值达到40h时,此位由硬件置1。它必须通过软件写0来 清除。对此位写1无效。即使中断未被使能,在计数器的值达到0X40的时候, 此位也会被置1。
在时钟使能完后,我们设置WWDG的CFR和CR两个寄存器, 对WWDG进行配置。包括使能窗口看门狗、开启中断、设置 计数器的初始值、设置窗口值并设置分频数WDGTB等。
2020/10/23
广州市星翼电子科技有限公司
10
ALIENTEK
《例说STM32》
3)开启WWDG中断并分组
在设置完了WWDG后,需要配置该中断的分组及使能。 这点通过我们之前所编写的MY_NVIC_Init函数实现就可 以了。
➢硬件设计:
窗口看门狗与独立看门狗一样,与外部电路基本没什么关系,全 部在内部实现,但是考虑到指示STM32的状态,使用了2个外部 的LED,DS0和DS1。其他的没有什么电路。
➢实验现象:
将代码下载到MiniSTM32后,可以看到DS0亮一下之后熄灭,紧 接着DS1开始不停的闪烁。每秒钟闪烁5次左右。
对于一般的看门狗,程序可以在它产生复位前的任意时刻刷新看门狗,但 这有一个隐患,有可能程序跑乱了又跑回到正常的地方,或跑乱的程序正好执 行了刷新看门狗操作,这样的情况下一般的看门狗就检测不出来了。
2020/10/23
广州市星翼电子科技有限公司
4
ALIENTEK
《例说STM32》
8.2 窗口看门狗相关寄存器
➢ WDGA位则是看门狗的激活位,该位由软件置1,以启动看 门狗,并且一定要注意的是该位一旦设置,就只能在硬件 复位后才能清零了。
2020/10/23
广州市星翼电子科技有限公司
6
ALIENTEK
➢ 配置寄存器(WWDG_CFR)
《例说STM32》
2020/10/23
广州市星翼电子科技有限公司
7
ALIENTEK
2020/10/23
广州市星翼电子科技有限公司
12
ALIENTEK
➢软件设计:wdg.c
《例说STM32》
2020/10/23
➢ 控制寄存器(WWDG_CR)
2020/10/23
广州市星翼电子科技有限公司
5
ALIENTEK
《例说STM32》
➢ 可以看出,这里我们的WWDG_CR只有低八位有效,T[6 :0]用来存储看门狗的计数器值,随时更新的,每个看窗 口看门狗计数周期(4096×2^ WDGTB)减1。当该计数器 的值从0X40变为0X3F的时候,将产生看门狗复位。
上窗口值(W[6:0])是由用户自己设定的,根据实际要求来设计窗口值,但是一 定要确保窗口值大于0X40,否则窗口就不存在了。 窗口看门狗的超时公式如下:
Twwdg=(4096×2^WDGTB×(T[5:0]+1)) /Fpclk1; 其中:
Twwdg:WWDG超时时间(单位为ms) Fpclk1:APB1的时钟频率(单位为Khz) WDGTB:WWDG的预分频系数 T[5:0]:窗口看门狗的计数器低6位
2020/10/23
广州市星翼电子科技有限公司
2
ALIENTEK
《例说STM32》
上图中,T[6:0]就是WWDG_CR的低七位,W[6:0]即是WWDG->CFR的低七位 T[6:0]就是窗口看门狗的计数器,而W[6:0]则是窗口看门狗的上窗口,下窗口值是 固定的(0X40)。当窗口看门狗的计数器在上窗口值之外被刷新,或者低于下窗 口值都会产生复位。
2020/10/23
广州市星翼电子科技有限公司
9
ALIENT来自百度文库K
《例说STM32》
8.3 窗口看门狗配置步骤
1)使能WWDG时钟。
WWDG不同于IWDG,IWDG有自己独立的40Khz时钟, 不存在使能问题。而WWDG使用的是PCLK1的时钟,需 要先使能时钟。
2)设置WWDG_CFR和WWDG_CR两个寄存器
4)编写中断服务函数
在最后,还是要编写窗口看门狗的中断服务函数,通过该 函数来喂狗,喂狗要快,否则当窗口看门狗计数器值减到 0X3F的时候,就会引起软复位了。在中断服务函数里面 也要将状态寄存器的EWIF位清空。
2020/10/23
广州市星翼电子科技有限公司
11
ALIENTEK
《例说STM32》
8.4 实验讲解