1.IWDG简介IWDG全程Independt Watchdog即独立看门狗。其本质是能产生系统复位信号的计数器它的时钟由独立的RC振荡器提供可在待机和停止模式下运行独立看门狗被激活以后当计数器递减到0X0000的时产生复位。在计数器计时到0之前通过喂狗重装载计数器的值防止复位。F407的lsi时钟频率通过查阅手册为32kHz如下。2.IWDG的作用1.异常外界电磁干扰或者自身系统硬件或软件异常造成程序跑飞如陷入某个不正常的死循环打断正常的程序运行2.作用主要用于检测外界电磁干扰或程序跑飞问题3.应用在一些需要高稳定性的产品中并且对精度要求较低的场合。ps独立看门狗是异常处理的最后手段不可依赖应尽量避免异常的发生2.1 溢出时间计算T 预分频系数 * 看门狗重装载值 / 时钟源频率2.2 独立看门狗配置过程1.取消PR预分频/RLR重装载寄存器保护2.设置预分频和重装载寄存器系数启动IWDG。void IWDG_Init(void) { hiwdg.Instance IWDG; hiwdg.Init.Prescaler IWDG_PRESCALER_32; //设置IWDG分频系数 hiwdg.Init.Reload 1000 * 3; //3秒喂狗 HAL_IWDG_Init(hiwdg); //初始化IWDG }超时时间 3000 * 32 / 32000 3s。只要3s没有喂狗即会复位。main函数IWDG_HandleTypeDef hiwdg; void main_thread(void* pArg) { IWDG_Init(); uint8_t nCnt 0; while (1) { HAL_IWDG_Refresh(hiwdg); Gpio_setPinToggle(xLed); //生命信号指示灯闪亮 osDelay(500); } }验证注释掉喂狗函数程序3s即复位一次。