独立看门狗配置及计算详解 | 您所在的位置:网站首页 › 做猫粮生意怎么样 › 独立看门狗配置及计算详解 |
一、独立看门狗用途
独立看门狗通常用于防止软件意外卡死,在软件故障之后能够重启程序; 二、独立看门狗时钟源独立看门狗使用的是专用的低速时钟,以GD32为例,其独立看门狗使用的是IRC40K时钟,以STM32为例,其独立看门狗使用的是LSI(40KHz); 三、独立看门狗寄存器分析看门狗可以理解为是一个定时器,知道其时钟源,再根据想要的触发周期,计算出分频系数和重装载值就可以了。与定时器不同的是独立看门狗是独立于主程序运行的,即使在系统时钟异常,程序无法运行的情况下,独立看门狗仍然能够完全独立工作; 以STM32F10x系列为例: 3.2 重装载寄存器(IWDG_RLR) 该寄存器用于存储递减计数器的重装载值,顾名思义,“重装载值”意思就是预先设置一个值,计数启动后,递减计数器从该值开始递减,当递减至0的时候就将该值赋给递减计数器,继续开始下一轮递减,周而复始,直至计时结束; 如期望计数器计数达到500,则该寄存器应写入0x1F4。有同学可能要问了,如果我要计数达到5000呢?那我告诉你,是不行的。我们仍然来看该寄存器的描述:
3.3 键寄存器(IWDG_KR): 该寄存器用于存储特定值,用于控制其他寄存器使能/失能; (1)如期望更改预分频值和重装载值,则往该寄存器写入0x5555; (2)如期望启动看门狗,则往该寄存器写入0xCCCC; (3)如期望将重装载值传递给递减计数器,即通常所说的“喂狗”,则往该寄存器写入0xAAAA;如下图所示,键寄存器写入0xAAAA后,预装载值将传递给递减寄存器; 首先确认一下参数: 独立看门狗时钟源:40KHz 期望看门狗触发周期:1s 由上述3.2章节可知,满足周期1s,可选择16、32、64、128、256分频;我们举例进行计算分析: (1)16分频: 独立看门狗计数时钟频率f=40KHz/16=2500Hz; 计数一次耗时t=1/f=1/2500s; 计时1s时,需要计数次数n=2500; 即看门狗配置为: 预分频为16,重装载值为2500; IWDG_SetPrescaler(2); //设置IWDG预分频值为16 或者IWDG_SetPrescaler(IWDG_Prescaler_16); //设置IWDG预分频值为16 IWDG_SetReload(2500); //设置IWDG重装载值 (2)32分频: 独立看门狗计数时钟频率f=40KHz/32=1250Hz; 计数一次耗时t=1/f=1/1250s; 计时1s时,需要计数次数n=1250; 即看门狗配置为: 预分频为32,重装载值为1250; IWDG_SetPrescaler(3); //设置IWDG预分频值为32 或者IWDG_SetPrescaler(IWDG_Prescaler_32); //设置IWDG预分频值为32 IWDG_SetReload(1250); //设置IWDG重装载值 (3)64分频: 独立看门狗计数时钟频率f=40KHz/64=625Hz; 计数一次耗时t=1/f=1/625s; 计时1s时,需要计数次数n=625; 即看门狗配置为: 预分频为64,重装载值为625; IWDG_SetPrescaler(4); //设置IWDG预分频值为64 或者IWDG_SetPrescaler(IWDG_Prescaler_64); //设置IWDG预分频值为64 IWDG_SetReload(625); //设置IWDG重装载值 独立看门狗实际使用初始化配置好独立看门狗并启用后,需要在程序中定期喂狗,否则将导致程序重启;注意:“定期”的意思是在看门狗触发周期内; |
CopyRight 2018-2019 实验室设备网 版权所有 |