原理圖:
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
#include "wdg.h"
//STM32開(kāi)發(fā)板實(shí)驗(yàn)6
//獨(dú)立看門(mén)狗實(shí)驗(yàn)
int main(void)
{
delay_init(); //延時(shí)函數(shù)初始化
NVIC_Configuration(); //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)
// uart_init(9600); //串口初始化為9600
LED_Init(); //初始化與LED連接的硬件接口
KEY_Init(); //按鍵初始化
delay_ms(500); //讓人看得到滅
IWDG_Init(4,625); //與分頻數(shù)為64,重載值為625,溢出時(shí)間為1s
LED0=1; //點(diǎn)亮LED0
while(1)
{
if(KEY_Scan(0)==KEY_UP)
{
IWDG_Feed();//如果WK_UP按下,則喂狗
}
delay_ms(10);
};
}
重點(diǎn)分析 :IWDG_Init(4,625);
喂狗程序 :IWDG_ReloadCounter();
重點(diǎn)分析 :IWDG_Init(4,625);
void IWDG_Init(u8 prer,u16 rlr)
{
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); //使能對(duì)寄存器IWDG_PR和IWDG_RLR的寫(xiě)操作
IWDG_SetPrescaler(prer); //設(shè)置IWDG預(yù)分頻值:設(shè)置IWDG預(yù)分頻值為64
IWDG_SetReload(rlr); //設(shè)置IWDG重裝載值
IWDG_ReloadCounter(); //按照IWDG重裝載寄存器的值重裝載IWDG計(jì)數(shù)器
IWDG_Enable(); //使能IWDG
} 喂狗程序 :IWDG_ReloadCounter();