2019-04-29 STM32_IWDG_独立看门狗
2019-04-29 本文已影响0人
君子牧
1.IDWG介绍
STM32芯片内部有两个看门狗外设:
①:独立看门狗IWDG ②:窗口看门狗:WWDG
用途:均可用于检测并解决由于软件错误导致的故障
简单理解:
①:IWDG就是一个12位递减计数器。
②:工作原理:当计数器从某一个值递减到0时(IWDG已激活),系统就会产生一次复位。如果在计数器递减到0以前刷新了计数器值,就不会产生复位。
③:这个刷新计数器值的过程被称为“喂狗”。
④:看门狗功能由VDD电压域供电,在停止模式和待机模式下仍能工作。
⑤:通常选择频率为40kHz的LSI作为IWDG的时钟源(并不是那么准确),然后通过一个8位预分频器(40/4*2的pre次方)提供给12位递减计数器
⑥:只适用于对时间精度要求较低的场合
IWDG配置步骤:
IWDG相关库函数在stm32f10x_iwdg.h和stm32f10x_iwdg.c中
(1)开启寄存器访问(给IWDG_KR寄存器写入0X5555);
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
(2)设置IWDG预分频系数和重转载值
void IWDG_SetPrescaler(uint8_t IWDG_Prescaler);
void IWDG_SetReload(uint_t IWDG_Reload);
Tout = (42 pre) /40 *rlr;
其中Tout为独立看门狗溢出时间,单位是ms。pre是预分频器系数(0-6),rlr是重装载寄存器的值。,公式内的40是独立看门狗的时钟。
(3)重载计数器值(喂狗)(给IWDG_KR寄存器写入0XAAAA)
IWDG_ReloadConuter();
(4)开启IWDG(给IWDG_KR寄存器写入0XCCCC)
IWDG_Enable();
硬件电路
包括:LED指示灯,K_UP按键链接
D1指示灯:提示系统运行
D2指示灯:用来作为喂狗和系统重启时的提示
K_UP:用来喂狗操作,喂狗时D2指示灯亮起,喂狗失败系统重启,D2指示灯灭。
编程:
程序框架如下:
(1)初始化IWDG(开启IWDG,设置溢出时间).