完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
|
相关推荐
1个回答
|
|
一、窗口看门狗概述
1. 窗口看门狗与独立看门狗的不同 1.1 独立看门狗 在讲窗口看门狗之前,我们先简单说一说独立看门狗。想详细了解独立看门狗的读者,请进入这条链接。 独立看门狗的主要组成器件包括时钟、递减计数器、键寄存器、重装载寄存器。 独立看门狗启动后,递减计数器中的数字就会每时钟周期都减1,直到减为0,独立看门狗就认为程序跑飞了,则会引发系统复位; 为了避免看门狗引发复位,我们就需要告诉看门狗“程序没有跑飞,仍在我的掌控之中” ,如何通知看门狗这条信息呢?我们就需要给键寄存器发一个装载信号,键寄存器接到信号后,就会命令重装载寄存器把它装载的值赋给递减计数器,以此来更新递减计数器。 只要我们保证在每次递减计数器减到0之前能更新它其中的数值,就能保证看门狗不会引发复位,这个操作就是我们常说的“喂狗”。 示意图大致如下,OneNote用得不好请见谅…… 1.2 窗口看门狗 窗口看门狗,其最重要的组成部件仍然是时钟、递减计数器、键寄存器、重装载寄存器,而关键在于它的理解窗口。 窗口看门狗的窗口指的是 上限时间/上窗口 和 下限时间/下窗口,其中: ① 上限时间 和 下限时间实际上就是两个不同的数值,在递减计数器从初值开始递减的过程中,会经过这两个数值。上限时间和下限时间有各自不同的作用:
附上窗口看门狗的内部结构示意图如下: 工作流程示意图大致如下: 1.3 窗口看门狗可引发中断 窗口看门狗能引发中断,用户可以在中断服务函数中进行喂狗。 独立看门狗不能引发中断。 1.4 时钟来源、精度不同 独立看门狗的原始时钟信号来源于LSI,是独立时钟,但频率低,精度低。 窗口看门狗的时钟来源于PCLK1,并非独立时钟,但频率高,精度高。 2. 窗口看门狗的工作细节 2.1 在何时喂狗比较合适? 上面讲到,下限时间是一个固定值,是0x3F,即二进制011 1111。 那么,在递减计数器从100 0000减到011 1111的瞬间,也就是即将引发复位的前一刻,窗口看门狗会先引发中断(若其中断已被使能),用户就可以在中断服务函数中编写程序,进行喂狗。 2.2 计数器和控制寄存器配合工作,产生中断 上面提到,在 100 0000 递减到 011 1111 的瞬间,会引发中断,那么,实际上只要检测这个二进制数的第6位(从0开始计位数)是否从1变到了0,就可以判断是否要引发中断。 计数器的示意图如下: 可以看到,计数器共有八个位,分别为T0、T1、T2、T3、T4、T5、T6,用来计数;以及一个WDGA,用来使能窗口看门狗。 而系统(窗口看门狗控制寄存器WWDG_CR)只要检测T6位是否从1变到了0,就能知道是否要引发中断。 3. 窗口看门狗超时时间计算 ① 分频系数计算: 把分频寄存器设置为WDG_TB时,实际得到的分频系数是` 4096 x ( 2 ^ WDG_TB) 由于窗口看门狗的原始时钟从PCLK接收而来,频率非常高(精确),因此要固定得对它除以4096进行分频,以减小其频率;然后再除以2 ^ WDG_TB进一步分频。 根据分频系数,以及原始频率Fpclk,可以得到新时钟信号的新时钟周期为新时钟频率的倒数**,即: 4096 x ( 2 ^ WDG_TB) / Fpclk ② 时钟周期 x 递减计数器初值: 看门狗的超时时间是指递减计数器减到下限时间所用的总时间,所以在得到时钟周期(递减计数器每个时钟周期减1)后,还要乘上递减计数器的初值,得到最终的窗口看门狗超时时间,即: 4096 x ( 2 ^ WDG_TB) x (T[5:0] + 1)/ Fpclk 上式中T[5:0] + 1中,**T[5:0]**是指递减计数器二进制初值的 0 ~ 5 位,为什么不取第6位呢? 因为我们想要的是从初值减到下限时间的值,而递减计数器总共有6位,下限时间是011 1111,加1后得到100 0000;而递减计数器初值是1xx xxxx,用1xx xxxx 减去 100 0000,得到的自然就是 0 ~ 5 位,即T[5:0],也就是xx xxxx。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1561 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1501 浏览 1 评论
933 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
665 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1555 浏览 2 评论
1847浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
609浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
503浏览 3评论
507浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
488浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 14:35 , Processed in 0.753322 second(s), Total 78, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号