iwdg.h
#ifndef _IWDG_H
#define _IWDG_H
#include "stm32f10x.h"
void IWDG_INIT(uint8_t prer ,uint16_t rlr);
#endif
iwdg.c
#include "stm32f10x.h"
#include "iwdg.h"
void IWDG_INIT(uint8_t prer ,uint16_t rlr)
{
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable );
IWDG_SetPrescaler(prer);
IWDG_SetReload(rlr);
IWDG_ReloadCounter();
IWDG_Enable();
}
main.c
#include "stm32f10x.h"
#include "led.h"
#include "delay.h"
#include "key.h"
#include "iwdg.h"
int main(void)
{
LED_Init();
delay_init();
KEY_INIT();
IWDG_INIT(4,625);
GPIO_ResetBits(GPIOA, GPIO_Pin_8);
delay_ms(200);
GPIO_SetBits(GPIOA, GPIO_Pin_8);
delay_ms(200);
while(1)
{
if(!GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_5))
{
delay_ms(20);
if(!GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_5))
{GPIO_ResetBits(GPIOA, GPIO_Pin_8);
IWDG_ReloadCounter();
}
}
else
{
GPIO_SetBits(GPIOA, GPIO_Pin_8);
}
}
}
(二)计算公式
Tout=((4*2^prer)*rlr)/40
当Tout=1s时,prer=4,计算得rlr=625。