看门狗复位:本质递减计数器,这个递减计数器一旦减到0,看门狗就会将程序进行复位。正常工作情况,不会让这个计数器减到0 ->喂狗
代码流程:
- 取消写保护
- 配置分频比
- 配置重装载值
- 喂狗一次(获取写保护)
- 使能看门狗
- 固定时间喂狗----函数以外
IWDG->KR=0x5555;//取消写保护
取消写保护
IWDG->PR=0x5;//128分频
配置分频比
IWDG->RLR=250;//1s
配置重装载值
Fck=32KHz//该时钟是固定的
IWDG_PR=5(128分频)
IWDG_RLR=250
基准时钟=250Hz 递减一次1/250 s
最迟喂狗时间=(1/250)*250=1s
IWDG->KR=0xaaaa;//喂狗一次
IWDG->KR=0xcccc;//使能
喂狗一次(获取写保护)/使能看门狗
int main()
{
Iwdg_Config();//独立看门狗初始化
printf("hello world\r\n");
while(1)
{
Time6_Us(2000000);//2s
IWDG->KR=0xaaaa;//喂狗一次
}
}
固定时间喂狗----函数以外
完整代码
/*
Function name:Iwdg_Config
Description:独立看门狗
param:None
retval:None
Remarks:
IWDG_PR=5(128分频)
IWDG_RLR=250
*/
void Iwdg_Config(void)
{
IWDG->KR=0x5555;//取消写保护
IWDG->PR=0x5;//128分频
IWDG->RLR=250;//1s
IWDG->KR=0xaaaa;//喂狗一次
IWDG->KR=0xcccc;//使能
}