看门狗介绍:
特点:
看门狗能检测CPU是否正常运行
CPU正常工作,看门狗不产生任何事件
CPU不正常工作,看门狗会触发,产生复位程序
本质:
看门狗本质是一个定时器
当计数器计数到0之前,需要重新给看门狗赋值,俗称 喂狗;
若计数器计数到0,则芯片会产生一次 复位。
分类:
看门狗由分为独立看门狗和窗口看门狗
一般常用的是独立看门狗,窗口看门狗很少用到
使用:
一般使用在程序要求稳定高的产品
在非正常情况下导致程序死机,需要重启
时钟源:
由内部低速时钟LSI 专门 给独立看门狗提供时钟 32KHz
窗口看门狗挂载在APB2总线
注意:
看门狗一旦启动,则不能停止
LSI时钟有30~60KHz的范围跳变
IWDG初始化函数:
/***************************************
*函数名 :iwdg_init
*函数功能 :IWDG独立看门狗初始化
*函数参数 :u16 ms
*函数返回值 :无
*函数描述 :
****************************************/
void iwdg_init(u16 ms)
{
/*IWDG时钟源配置*/
//开启LSI振荡器
RCC->CSR |= (1<<0);
//等待LSI振荡器就绪
while(!(RCC->CSR & (1<<1)));
/*IWDG控制器配置*/
//解除寄存器写保护
IWDG->KR = 0x5555;
//等待PVU为0可以更新重载值
while(IWDG->SR & (1<<0));
//设置分频 --- 32分频
IWDG->PR |= (3<<0);
//设置重载值
IWDG->RLR = 1*ms - 1;
//初始化喂狗
IWDG->KR = 0xAAAA;
//启动看门狗 同时激活写保护
IWDG->KR = 0xCCCC;
}