stm32笔记 看门狗

独立看门狗 IWDG

IWDG 使用lSI低速内部时钟

寄存器
IWDG_KR key 15:0
软件必须间隔写入0xAAAA,否则看门狗复位
写入0x5555 访问 IWDG_PR() 和 IWDG_RLR(重装载)
写入0xCCCC 启动看门狗

库函数
IWDG_WriteAccessCmd 使能或者失能对寄存器 IWDG_PR 和 IWDG_RLR 的写操作
IWDG_SetPrescaler 设置 IWDG 预分频值
IWDG_SetReload 设置 IWDG 重装载值
IWDG_ReloadCounter 按照 IWDG 重装载寄存器的值重装载 IWDG 计数器
IWDG_Enable 使能 IWDG
IWDG_GetFlagStatus 检查指定的 IWDG 标志位被设置与否

例子:

void IWDG_ConfigurAction(void) {
		 IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);  //使能
		 IWDG_SetPrescaler(IWDG_Prescaler_64);     //设置 IWDG 预分频值  4x2pr pr=4次方     =64分频值  
		 IWDG_SetReload(625);                     //重装载值  40khz/pkl   计数器-1 相当于 40000/4x2pr   625 x 40000/4x16 = 1s   到0复位
		 IWDG_ReloadCounter();                  //  重装载寄存器的值重装载 IWDG 计数器
		 IWDG_Enable();     //使能 IWDG 
}

void IWDG_feedDog(void) {
		 IWDG_ReloadCounter();    //喂狗不
}

窗口看门狗 WWDG(精确)

1.当窗口看门狗的递减计数器T[6:0] 大于上线W[6:0] 时,如果此时去喂狗,将cpu会复位
2.当递减计数器T[6:0]到达下线窗口0x3F的值时,会立刻触发cpu复位
只能在上窗口与下窗口之间的刷新窗口进行喂狗

例子:

unsigned char WWDG_CNT = 0x7F;

void wwdgInit_ConfigAction(unsigned int pr,unsigned char wr,unsigned char tr) {
		 RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE);
	
		 WWDG_CNT = tr & 0x7F;  //防止值过大 
		 //WWDG_SetCounter(WWDG_CNT);  //必须在0x40到0x7F之间
		 WWDG_SetPrescaler(pr);    //WWDG_Prescaler_8
		 WWDG_SetWindowValue(wr);   //上窗口值  必须在0x40到0x7F之间
		 WWDG_Enable(tr&0x7f);        //必须在0x40到0x7F之间
	
		 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
		 NVIC_InitTypeDef NVIC_InitStruct1;
		 NVIC_InitStruct1.NVIC_IRQChannel = WWDG_IRQn;
	     NVIC_InitStruct1.NVIC_IRQChannelPreemptionPriority = 0; 
         NVIC_InitStruct1.NVIC_IRQChannelSubPriority = 2;
	     NVIC_InitStruct1.NVIC_IRQChannelCmd = ENABLE;
		 NVIC_Init(&NVIC_InitStruct1);
	
		 WWDG_ClearFlag();
		 WWDG_EnableIT();
}


void WWDG_IRQHandler() {
		WWDG_SetCounter(WWDG_CNT);  //必须在0x40到0x7F之间 喂狗
		WWDG_ClearFlag();
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值