窗口看门狗与独立看门狗的问题,请大神解答
时间:10-02
整理:3721RD
点击:
两个看门狗的初始化:
WWDG_Init(0X7F,0X5F,WWDG_Prescaler_8); //窗口看门狗初始化,分频系数为8
IWDG_Init(4,625); //独立看门狗初始化,分频系数为64
为什么写成
WWDG_Init(0X7F,0X5F,3);
程序不正确
而
IWDG_Init(IWDG_Prescaler_8,625);
程序正确
WWDG_Init(0X7F,0X5F,WWDG_Prescaler_8); //窗口看门狗初始化,分频系数为8
IWDG_Init(4,625); //独立看门狗初始化,分频系数为64
为什么写成
WWDG_Init(0X7F,0X5F,3);
程序不正确
而
IWDG_Init(IWDG_Prescaler_8,625);
程序正确
也就是说为什么独立看门狗表示分频系数时直接可用数字,而窗口看门狗分频系数则必须使用WWDG_Prescaler_8,直接用数字就会出错呢
独立看门狗的初始化函数是这样的://初始化独立看门狗
//prer:分频数:0~7(只有低3位有效!)
//分频因子=4*2^prer.但最大值只能是256!
//rlr:重装载寄存器值:低11位有效.
//时间计算(大概):Tout=((4*2^prer)*rlr)/40 (ms).
void IWDG_Init(u8 prer,u16 rlr)
窗口看门狗分频系数使用WWDG_Prescaler_8 是因为底层函数已经封装好的了 #define WWDG_Prescaler_1 ((uint32_t)0x00000000)
#define WWDG_Prescaler_2 ((uint32_t)0x00000080)
#define WWDG_Prescaler_4 ((uint32_t)0x00000100)
#define WWDG_Prescaler_8 ((uint32_t)0x00000180)