26 lines
570 B
C
26 lines
570 B
C
#include "iwdg.h"
|
|
|
|
// 独立看门狗初始化,参数为重置的时长 ms
|
|
void iwdg_init(int ms)
|
|
{
|
|
// 开启看门狗,向键寄存器写入 0x5555
|
|
IWDG->KR = 0x5555;
|
|
// 设置预分频器为 64 分频
|
|
IWDG->PR = IWDG_Prescaler_64;
|
|
// 设置重加载值 ms
|
|
IWDG->RLR = 40000 / 64 * ms / 1000;
|
|
// 让看门狗重加载计数值
|
|
IWDG->KR = 0xAAAA;
|
|
// 启动看门狗计数
|
|
IWDG->KR = 0xCCCC;
|
|
|
|
}
|
|
|
|
// 喂狗函数
|
|
void iwdg_feed_dog(void)
|
|
{
|
|
// 让看门狗重加载计数值
|
|
IWDG->KR = 0xAAAA;
|
|
}
|
|
|