1.工程目录如下:

2.创建main.c,bsp_iwdg.c,bsp_iwdg这个三个文件

main.c代码如下:
#include "stm32f4xx.h"
#include "./led/bsp_led.h"
#include "./key/bsp_key.h" 
#include "./iwdg/bsp_iwdg.h"

static void Delay(__IO uint32_t nCount);

/**
  * @brief  主函数
  * @param  无
  * @retval 无
  */
int main(void)
{
    /* LED 端口初始化 */
    LED_GPIO_Config();
  Delay(0X8FFFFF);

  //检查是否为独立看门狗复位
  if(RCC_GetFlagStatus(RCC_FLAG_IWDGRST) != RESET)
  {
    //亮红灯
    LED_RED;
    //清楚标志位
    RCC_ClearFlag();
  }    
  else
  {
    LED_BLUE;
  } 
  
  /*初始化按键*/
  Key_GPIO_Config();
    //1S超时溢出
  IWDG_Config(IWDG_Prescaler_64,256);
 
    /* 轮询按键状态,若按键按下则反转LED */ 
    while(1)                            
    {
    //添加需要被检控的代码       
        if( Key_Scan(KEY1_GPIO_PORT,KEY1_PIN) == KEY_ON  )
        {
            IWDG_Feed();
            LED_GREEN;
        }   
    
  
    }
}

static void Delay(__IO uint32_t nCount)
{
  
  for (; nCount != 0; nCount--);
  
}

/*********************************************END OF FILE**********************/

bsp_iwdg.c代码如下:

#include "./iwdg/bsp_iwdg.h"

void IWDG_Config(uint8_t prv,uint16_t rlv)
{
    //使能预分频寄存器和重装载寄存器
    IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
    //设置预分频寄存器的值
    IWDG_SetPrescaler(prv);
    //设置重装载寄存器的值
    IWDG_SetReload(rlv);
    //把重装载器放到计数器中
    IWDG_ReloadCounter();
    //使能IWDG
    IWDG_Enable(); 
}


void IWDG_Feed(void)
{
    //把重装载寄存器放到计数器中,喂狗,防止IWDG复位
    //当计数器的值减到0时会产生系统复位
    IWDG_ReloadCounter();
}

bsp_iwdg.h代码如下:

#ifndef __IWDG_H
#define    __IWDG_H

#include "stm32f4xx.h"


void IWDG_Config(uint8_t prv,uint16_t rlv);
void IWDG_Feed(void);

#endif /* __IWDG_H */
3.运行结果如下:

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐