- 功能描述:main()函数中,喂狗程序屏蔽,指示灯闪烁,表明系统出现发生
-
喂狗程序不屏蔽,指示灯亮1秒左右再灭并维持灭的状态。
-
我们可以尝试改变IWDG_Configuration()中4095这个数值,看灯灭的
-
时间有没有改变。这个时间是看门狗定时器溢出时间。
-
-
add me :
-
独立看门狗使用 40khz 的时钟,预分频16 = 2500hz ,也就是说
-
1s钟时间,产生了2500 个脉冲。
-
如果我们在 reload重载寄存器(12bit最大4096)中写入2500,那么
-
1s时间到后,会看门狗复位
-
如果写入4095,那么复位时间是 x = 4095 / 2500 = 1.638秒
-
- 1秒时间 ~ 2500
-
x ~ 4095
-
********************************************************************/
void IWDG_Configuration(void)
{
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); //允许设置
IWDG_SetPrescaler(IWDG_Prescaler_16);//内部低速时钟16分频
//40khz / 16 = 2500 1s时间2500个脉冲数
IWDG_SetReload(4095); //1s复位 //写入值
IWDG_ReloadCounter(); //0xaaaa 计数器中写入新值
IWDG_Enable(); //使能 0xcccc
}
/**********************************************************************
* 名 称:main()
* 功 能:主函数
* 入口参数:
* 出口参数:
-----------------------------------------------------------------------
* 说明:
***********************************************************************/
int main (void)
{
RCC_Configuration(); //配置时钟
GPIO_Configuration(); //配置IO口
IWDG_Configuration(); //配置看门狗 IWDG_ReloadCounter();
Delay(500); //系统初始化后灯亮并延时一段时间
while(1)
{
GPIO_WriteBit(GPIOA, GPIO_Pin_8,(BitAction)1); //写1 ,led灭
// IWDG_ReloadCounter(); //喂狗程序
}
}