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 = (4
2 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,设置溢出时间).

上一篇下一篇

猜你喜欢

热点阅读