初始化程序如下:
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);//必须首先使能命令
IWDG_SetPrescaler(IWDG_Prescaler_128);//
IWDG_SetReload(0xFFF);//最大的重装值
IWDG_WriteAccessCmd(KR_KEY_Enable);//唤醒看门狗
复位时间应该是13s左右吧
主循环程序如下:
while (1)
{
SysTick_CounterCmd(SysTick_Counter_Clear);
IWDG_WriteAccessCmd(KR_KEY_Reload);
// PerameterThread();//参数设置
GPIO_WriteBit(GPIOB, GPIO_Pin_8 | GPIO_Pin_7 | GPIO_Pin_6 , Bit_SET);
GPIO_WriteBit(GPIOB, GPIO_Pin_5, Bit_RESET);//开灯
Delay(5);
// Println("234");
GPIO_WriteBit(GPIOB, GPIO_Pin_8 | GPIO_Pin_7 | GPIO_Pin_6 , Bit_RESET);
GPIO_WriteBit(GPIOB, GPIO_Pin_5, Bit_SET);//关灯
Println("235");
Delay(450);
}
我的SysTick设置0.1ms中断,也就是说一个循环不到50ms,为什么IWDG就复位了呢?已经可以打印出一个235,然后等不到下一个234就复位。只要我把IWDG_WriteAccessCmd的函数内容注释掉变成空函数,程序就不回复位?这是为什么呢? |