什么是看门狗?为什么要看门狗?
看门狗可不是那个入侵手机的游戏
在STM32中,它具有"看家"的功能
所谓"看家",意思就是察觉到异常,就马上反应过来,反馈给主人
由于外部电磁等干扰,程序可能跑飞进入死循环
这时候就要看门狗来解决这个问题
STM32中的看门狗:
看门狗的工作原理:
通俗的来说
就是在狗饿死前喂它
防止它饿死的时候复位
如果程序跑飞,就没有及时喂狗
狗狗饿死了
程序就复位了
(希望狗没事)
下面是独立看门狗的工作流程图
KR寄存器是狗主人,负责【打开看门狗】和【喂狗】
写入0xCCCC的时候,启用独立看门狗,计数器初始化位0xFFF
写入0xAAAA的时候,RLR(自动重装载寄存器)将计数器重新装载(狗子饱了)
PR和RLR寄存器都有写保护功能,启用的时候要先把写保护取消
那怎么取消写保护呢?
在KR寄存器里面写入0x5555
独立看门狗的相关库函数
配置IWDG一般步骤:
这些函数在stm32f10x.h
下面找
因为第一次计数器的值为0xFFF
但是我想要它第一次就是我想要的值(在重装载寄存器中)
那我就要在【设置好重装计数器之后】
【先给计数器重装一次】(喂狗)
IWDG_Init()的初始化配置代码(放在IWDG.c下)
main函数中:
prer和rlr由查表和计算得出