独立看门狗(寄存器/库函数)

独立看门狗就是一个向下计数的定时器,但是这个定时器比较特殊,当他的重装载值减到0时,就要重新装置,也就是喂狗,要不然他就会给系统复位

独立看门狗(寄存器/库函数)_第1张图片

#ifndef IWDG_H
#define IWDG_H
#include "stm32f10x.h"

void iwdg_init(uint8_t IWDG_Prescaler,uint16_t Reload);

#endif
#include "iwdg.h"

void iwdg_init(uint8_t IWDG_Prescaler,uint16_t Reload)
{
	IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);  //解除对寄存器IWDG_PR和IWDG_RLR的写保护
	
	IWDG_SetPrescaler(IWDG_Prescaler);  //设置IWDG预分频值
	
	IWDG_SetReload(Reload);  //设置IWDG重装载值
	
	IWDG_ReloadCounter();  //按照IWDG重装载寄存器的值重装载IWDG计数器
	
	IWDG_WriteAccessCmd(IWDG_WriteAccess_Disable);//写保护开启
	
	IWDG_Enable();  //使能IWDG

}


/*
//寄存器配置
void IWDG_Init(void)
{	
	IWDG->KR=0x5555;//解除写保护
	IWDG->PR=0x110;//预分频
	IWDG->RLR=0xFF0;//重装载值
	IWDG->KR=0x0000;//写保护开启
	IWDG->KR=0xCCCC;//使能看门狗
}
*/
#include "stm32f10x.h"
#include "iwdg.h"



int main(void)
{
	iwdg_init(IWDG_Prescaler_64,250);

	while(1)
	{
		IWDG_ReloadCounter();//在程序中添加这个即可,但是计算好时间
		
		//IWDG->KR=0xAAAA;//喂狗		
	}


}

 

你可能感兴趣的:(STM32)