IWDG有什么作用?
第一个0.1ms
typedef struct
{
IWDG_TypeDef *Instance; /*!< Register base address */IWDG_InitTypeDef Init; /*!< IWDG required parameters */
} IWDG_HandleTypeDef;
IWDG_HandleTypeDef hiwdg;
void iwdg_init(uint8_t prer,uint16_t rlr)
{
hiwdg.Instance=IWDG;
hiwdg.Init.Prescaler=prer; //预分频
hiwdg.Init.Reload=rlr; //重装载
HAL_IWDG_Init(&hiwdg);
}
//实际上是 预分频*重装载/320000(32kHz)
void iwdg_feed(void)
{
HAL_IWDG_Refresh(&hiwdg);
}
int main(void)
{
HAL_Init(); //初始化HAL库
Stm32_Clock_Init(336,8,2,7); //设置时钟,168Mhz
delay_init(168); //初始化延时函数
uart_init(115200); //初始化USART
LED_Init(); //初始化LED
KEY_Init(); //初始化按键
delay_ms(100); //延时100ms再初始化看门狗,LED0的变化"可见"
iwdg_init(IWDG_PRESCALER_64,500); //分频数为64,重载值为500,溢出时间为1s
LED0=0;
printf("还没喂狗,请及时喂狗\n");
while(1)
{
delay_ms(800);
iwdg_feed();
printf("已经喂狗\n");
}
}