STM32
直播中

王婷

7年用户 983经验值
私信 关注
[问答]

怎么去计算窗口看门狗WWDG的窗口值

窗口看门独WWDG有哪些功能?

怎么去计算窗口看门狗WWDG的窗口值?

回帖(1)

杨平

2021-9-22 14:21:06
  窗口看门和独立看门狗最大的不同就是,独立看门狗的喂狗限制是在狗递减量前,而窗口看门狗的喂狗限制则是在一个窗口喂狗,即喂狗时间必须在一个时间段内,在狗饱腹时和饥饿时喂狗都会触发恢复
  窗口期的下限为0x40,资源本地或等于0x7F R LR
  
  是重组件内存,帮助设置独立看门狗的选择值。TR是窗口看门独立狗的投票值,设置,WR是看门狗的值,由独立用户设置。
  WWDG功能窗口窗口用户
  
  ①。窗口看门狗时钟
  窗口看门狗时钟来自PCLK1,PCLK1最大是45M,由RCC时钟控制器开启。
  ②。 时钟计数器位
  计数器位时钟由CK计时器时钟经过预分频器分频得到,分频系数由配置寄存器CFR的位8:7 WDGTB [1:0]配置,可以是[0,1,2,3],还有CK除以时钟时钟=PCLK14096,4096是固定死的。 tpclk1 * 4096 * (2^WDGTB)。
  ③。 计数器位
  窗口显示看门狗的计数器位的英文一个递减计数器位,共有7位,其值存在控制寄存器CR的位6:0,即T [6:0],当7个位全部为1时是0x7F的,这个是最大值,当递减到T6位变为0时,即从0X40变为0X3F时,会产生看门狗复位。
  这个值 0X40 是看门狗能够递减到的时间,所以决策的值只能是:0X40~0X7F 之间,实际上是计算是 T[5:0]。
  当递减递递减到 0X40 的时候,还不会马上产生复位,如果使了能提前中断:CFR位9 EWI 1,则产生提前解除复位,如果真进入这个中断事件,就说明程序确定是出问题了,然后在中断服务程序里面我们就需要做最重要的工作,比如保存重要数据,或者报警等,中断我们也叫它死前中断。
  窗口窗口值
  看门狗必须在一个窗口窗口才可以喂狗,其中窗口窗口的值是固定的0X40,上窗口的可以改变,具体的由配置值控制CFR的位6:0 W[6:0 ]设置。
  其值必须大于或等于0X40,小于或等于0x7F的。
  如果我们要监控的程序段甲运行的时间为钽,当执行完这段程序之后就要进行喂狗,如果在窗口时间内没有喂一般决策的值TR设置成最大0X7F,图片是WR,决策减一个数的时间为T,那么时间:(TR-WR)*T 估计应该大于Ta结束,这段时间刚好执行完程序A之后喂狗,监控的作用,这样可以算出WR的值是多少。
  计算看狗门超时时间
  
  
  知道门狗当到达0x40 ,然后减一为0x3F时即触发,
  故其计数时长显为0x40-0x3F = 1;
  其可选计数时长为0x7F-0x3F = 0x7F-0x3F = 0x40 = 64;
  故上表中当预频器为1时超时即通过Tpclk1 * 4096 * (2^WDGTB) = 1/30 * 4096 *2^0 = 136.53us 计算而得;
  超时即通过Tpclk1 * 4096 * (2^WDGTB) * 64= 1/30 * 4096 *2^0 = 8.74ms 计算而得。
  在窗口看门狗的配置当中,独立看门狗有一个选择配置项“遗赠中断”,即唤醒中断WWDG Early Wakeup interrupt(EWI),可以在精确的递减0x40 即将到来的时候触发一个中断,在中断中断中可以做一些复杂的重要事件,如保存发送等。
  bsp_wwdg.h
  
  
  bsp_wwdg.c
  
  
  
  stm32f4xx_it.c
  
  main.c
  
  
举报

更多回帖

发帖
×
20
完善资料,
赚取积分