/**
* 初始化獨立看門狗
* prer:分頻數:0~7(只有低 3 位有效!)
* 分頻因子=4*2^prer.但最大值只能是 256!
* rlr:重裝載寄存器值:低 11 位有效.
* 時間計算(大概):Tout=((4*2^prer)*rlr)/40 (ms).
*IWDG_Init(4,625);//初始化獨立看門狗,分頻數為64,重裝載值為625,溢出時間計算為:64*625/40=1000ms=1s
*/
void IWDG_Init(u8 prer,u16 rlr)
{
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); /* 使能對寄存器IWDG_PR和IWDG_RLR的寫操作*/
IWDG_SetPrescaler(prer); /*設置IWDG預分頻值:設置IWDG預分頻值*/
IWDG_SetReload(rlr); /*設置IWDG重裝載值*/
IWDG_ReloadCounter(); /*按照IWDG重裝載寄存器的值重裝載IWDG計數器*/
IWDG_Enable(); /*使能IWDG*/
}
/**
* 喂獨立看門狗
*/
void IWDG_Feed(void)
{
IWDG_ReloadCounter(); /*reload*/
}
/**
*main函數
*/
void main(void)
{
NVIC_Configuration();//優先級配置
IWDG_Init(4,625);//初始化獨立看門狗,分頻數為64,重裝載值為625,溢出時間計算為:64*625/40=1000ms=1s
while(1)
{
delay_ms(500);//0.5秒喂一次狗
IWDG_Feed();//喂狗
}
}
|