You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
4.2 KiB
112 lines
4.2 KiB
/*********************************************************
|
|
*Copyright (C), 2015, Shanghai Eastsoft Microelectronics Co., Ltd.
|
|
*文件名: lib_wdt.h
|
|
*作 者: AE Team
|
|
*版 本: V1.01
|
|
*日 期: 2021/01/12
|
|
*描 述: WDT模块库函数头文件
|
|
*备 注:
|
|
本软件仅供学习和演示使用,对用户直接引用代码所带来的风险或后果不承担任何法律责任。
|
|
**********************************************************/
|
|
#ifndef __LIBWDT_H__
|
|
#define __LIBWDT_H__
|
|
|
|
#include "ES8P5066.h"
|
|
#include "type.h"
|
|
|
|
/************************************************WWDT*************************************************/
|
|
/* WWWDT时钟选择 */
|
|
typedef enum
|
|
{
|
|
WWDT_CLOCK_PCLK = 0x0, /* PCLK */
|
|
WWDT_CLOCK_WDT = 0x1, /* WDT时钟源,32kHz */
|
|
} WWDT_TYPE_CLKS;
|
|
|
|
/* WWDT禁止喂狗窗口选择 */
|
|
typedef enum
|
|
{
|
|
WDT_WIN_25 = 0x0, /* 25%窗口内禁止,窗口内喂狗将复位 */
|
|
WDT_WIN_50 = 0x1, /* 50%窗口内禁止,窗口内喂狗将复位 */
|
|
WDT_WIN_75 = 0x2, /* 75%窗口内禁止,窗口内喂狗将复位 */
|
|
WDT_WIN_100 = 0x3, /* 不禁止喂狗,喂狗将使看门狗计数器重载 */
|
|
} WWDT_TYPE_WWDTWIN;
|
|
|
|
/* 初始化结构体 */
|
|
typedef struct
|
|
{
|
|
uint32_t WDT_Tms; /* 定时时间,单位ms */
|
|
TYPE_FUNCEN WDT_IE; /* 中断使能 */
|
|
TYPE_FUNCEN WDT_Rst; /* 复位使能 */
|
|
WWDT_TYPE_CLKS WDT_Clock; /* 时钟选择 */
|
|
WWDT_TYPE_WWDTWIN WDT_Win; /* 禁止喂狗窗口选择 */
|
|
} WWDT_InitStruType;
|
|
|
|
|
|
#define WWDT_RegUnLock() (WWDT->LOCK.Word = 0x1ACCE551)
|
|
#define WWDT_RegLock() (WWDT->LOCK.Word = 0x0)
|
|
|
|
#define WWDT_Enable() {WWDT_RegUnLock();WWDT->CON.EN = 1;WWDT_RegLock();}
|
|
#define WWDT_Disable() {WWDT_RegUnLock();WWDT->CON.EN = 0;WWDT_RegLock();}
|
|
|
|
#define WWDT_Clear() {WWDT_RegUnLock();WWDT->INTCLR.INTCLR = 0;WWDT_RegLock();}
|
|
|
|
#define WWDT_ITEnable() {WWDT_RegUnLock();WWDT->CON.IE = 1;WWDT_RegLock();}
|
|
#define WWDT_ITDisable() {WWDT_RegUnLock();WWDT->CON.IE = 0;WWDT_RegLock();}
|
|
|
|
#define wwdt_RstEnable() {wwdt_RegUnLock();wwdt->CON.RSTEN = 1;wwdt_RegLock();}
|
|
#define wwdt_RstDisable() {wwdt_RegUnLock();wwdt->CON.RSTEN = 0;wwdt_RegLock();}
|
|
|
|
#define wwdt_CLOCK_PCLK() {wwdt_RegUnLock();wwdt->CON.CLKS = 0;wwdt_RegLock();}
|
|
#define wwdt_CLOCK_WDT() {wwdt_RegUnLock();wwdt->CON.CLKS = 1;wwdt_RegLock();}
|
|
|
|
|
|
void WWDT_Init(WWDT_InitStruType *WWDT_InitStruct);
|
|
void WWDT_SetReloadValue(uint32_t Value);
|
|
uint32_t WWDT_GetValue(void);
|
|
FlagStatus WWDT_GetFlagStatus(void);
|
|
|
|
|
|
/************************************************IWDT*************************************************/
|
|
/* WIWDT时钟选择 */
|
|
typedef enum
|
|
{
|
|
IWDT_CLOCK_PCLK = 0x0, /* PCLK */
|
|
IWDT_CLOCK_WDT = 0x1, /* WDT时钟源,32kHz */
|
|
} IWDT_TYPE_CLKS;
|
|
|
|
/* 初始化结构体 */
|
|
typedef struct
|
|
{
|
|
uint32_t WDT_Tms; /* 定时时间,单位ms */
|
|
TYPE_FUNCEN WDT_IE; /* 中断使能 */
|
|
TYPE_FUNCEN WDT_Rst; /* 复位使能 */
|
|
IWDT_TYPE_CLKS WDT_Clock; /* 时钟选择 */
|
|
} IWDT_InitStruType;
|
|
|
|
|
|
#define IWDT_RegUnLock() (IWDT->LOCK.Word = 0x1ACCE551)
|
|
#define IWDT_RegLock() (IWDT->LOCK.Word = 0x0)
|
|
|
|
#define IWDT_Enable() {IWDT_RegUnLock();IWDT->CON.EN = 1;IWDT_RegLock();}
|
|
#define IWDT_Disable() {IWDT_RegUnLock();IWDT->CON.EN = 0;IWDT_RegLock();}
|
|
|
|
#define IWDT_Clear() {IWDT_RegUnLock();IWDT->INTCLR.Word = 0;IWDT_RegLock();}
|
|
|
|
#define IWDT_ITEnable() {IWDT_RegUnLock();IWDT->CON.IE = 1;IWDT_RegLock();}
|
|
#define IWDT_ITDisable() {IWDT_RegUnLock();IWDT->CON.IE = 0;IWDT_RegLock();}
|
|
|
|
#define IWDT_RstEnable() {IWDT_RegUnLock();IWDT->CON.RSTEN = 1;IWDT_RegLock();}
|
|
#define IWDT_RstDisable() {IWDT_RegUnLock();IWDT->CON.RSTEN = 0;IWDT_RegLock();}
|
|
|
|
#define IWDT_CLOCK_PCLK() {IWDT_RegUnLock();IWDT->CON.CLKS = 0;IWDT_RegLock();}
|
|
#define IWDT_CLOCK_WDT() {IWDT_RegUnLock();IWDT->CON.CLKS = 1;IWDT_RegLock();}
|
|
|
|
|
|
void IWDT_Init(IWDT_InitStruType *IWDT_InitStruct);
|
|
void IWDT_SetReloadValue(uint32_t Value);
|
|
uint32_t IWDT_GetValue(void);
|
|
FlagStatus IWDT_GetFlagStatus(void);
|
|
|
|
/************************************************END*************************************************/
|
|
|
|
#endif
|