看门狗电路
在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成各种寄存器和内存的数据混乱,会导致程序指针错误,不在程序区,取出错误的程序指令等,都会陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续正常工作,会造成整个系统的陷入停滞状态,发生不可预料的后果。
看门狗就是定期的查看芯片内部的情况,一旦发生错误就向芯片发出重启信号的电路。看门狗命令在程序的中断中拥有最高的优先级。
STM32F103看门狗简介
-
键值寄存器 (IWDG_KR)
- 32位寄存器,高16位为保留位,低16位为键值,是只写寄存器读出值为0X0000
- 必须以一定的时间间隔写入0XAAAA,否则计数器清零时会产生一个复位信号(IWDG_RESET)。写入0XAAAA时重装载寄存器(IWDG_RLR)中的值写入计数器
- 被写入0xCCCC时,独立看门狗开始被启用,计数器从其复位值0xFFF递减计数
-
状态寄存器(IWDG_SR)
-
32位寄存器,只有低两位为有效位
-
位0(PVU):为预分频器寄存器的值更新标志位
此位由硬件置’1’用来指示预分频值的更新正在进行中。当在VDD域中的预分频值更新结束后,此位由硬件清’0’(最多需5个40kHz的RC周期)。预分频值只有在PVU位被清’0’后才可更新。
-
位1(RVU):为计数器重载值更新标志
此位由硬件置’1’用来指示重装载值的更新正在进行中。当在VDD域中的重装载更新结束后,此位由硬件清’0’(最多需5个40kHz的RC周期)。重装载值只有在RVU位被清’0’后才可更新。
-
-
预分频寄存器(IWDG_PR)
- 具有写保护功能,要修改其中的值必须先向键值寄存器中写入0x5555,否则无论进行何种操作,预分频寄存器都将被写保护
- 32位寄存器,只用低三位
- 操作依靠PVU状态
-
重装载寄存器(IWDG_RLR)
- 32位寄存器,低12位有效
- 操作依靠RUV状态
- 写入0XAAAA时重装载寄存器(IWDG_RLR)中的值写入计数器
-
操作步骤概要
-
向 IWDG_KR写入 0X5555
- 取消写保护
- 设置分频系数以及计数器重装载值
- Tout=((4×2^prer) ×rlr) /40,此为喂狗时间计算公式,prer为分频值,rlr为重装载值(ms)
- 在溢出前不喂狗就复位
-
向 IWDG_KR写入 0XAAAA
- 喂狗
-
向 IWDG_KR写入 0XCCCC(开狗门)
x
void IWDG_Init(u8 prer,u16 rlr)
{
IWDG->KR=0X5555;//ʹÄܶÔIWDG->PRºÍIWDG->RLRµÄд
IWDG->PR=prer;
IWDG->RLR=rlr;
IWDG->KR=0XAAAA;//reload
IWDG->KR=0XCCCC;//open
}
void IWDG_Feed(void)
{
IWDG->KR=0XAAAA;//reload
}
参考资料 :百度百科
STM32中文参考手册
正点原子STM32开发指南寄存器版本
-