STM32F030 看门狗DWOG应用
时间:01-20 08:48 阅读:1519次
*温馨提示:点击图片可以放大观看高清大图
简介:本文和大家分享一个STM32F030看门狗DWOG应用程序,感兴趣的朋友可以看看。
//==文件wdog.h============================================================
#ifndef _WDOG_H_
#define _WDOG_H_
#define VT_WDG T_WDG_64MS
#define T_WDG_4096MS 5120
#define T_WDG_1024MS 1280
#define T_WDG_256MS 320
#define T_WDG_128MS 160
#define T_WDG_64MS 80
#define T_WDG16MS 20
//=================================================
extern void Wdog_Init(void) ;
#endif //
//==文件wdog.c============================================================
//#include "stm32f0xx.h"
#include "global.h"
#include "wdog.h"
void Wdog_Init(void)
{
/* 检测系统是否由独立看门狗喂狗复位 */
if (RCC_GetFlagStatus(RCC_FLAG_IWDGRST) != RESET)
{
/* 清除复位标志位 */
RCC_ClearFlag();
}
/* 使能写访问IWDG_PR and IWDG_RLR 寄存器 */
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
/* IWDG计数器的时钟: LSI/32 */
IWDG_SetPrescaler(IWDG_Prescaler_32);
/* 设置重导计数器的值 获得250ms的IWDG超时可以按下面算式计算:
Counter Reload Value = 250ms/IWDG counter clock period
= 250ms / (LSI/32)
= 0.25s / (LsiFreq/32)
= LsiFreq/(32 * 4)
= LsiFreq/128
*/
// IWDG_SetReload(LsiFreq/128);
IWDG_SetReload(VT_WDG);
/* 从新导入IWDG计数器 */
IWDG_ReloadCounter();
/* 使能 IWDG (LSI 被硬件使能) */
IWDG_Enable();
}