/********************************************************* *Copyright (C), 2015, Shanghai Eastsoft Microelectronics Co., Ltd. *文件名: lib_wwdt.c *作 者: AE Team *版 本: V1.01 *日 期: 2021/01/12 *描 述: WDT模块库函数 *备 注: 本软件仅供学习和演示使用,对用户直接引用代码所带来的风险或后果不承担任何法律责任。 **********************************************************/ #include "lib_wdt.h" #include "system_ES8P5066.h" /************************************************WWDT*************************************************/ /**************************************** 函数名:WWDT_Init 描 述:UART初始化 输入值:初始化结构体 返回值:无 **************************************/ void WWDT_Init(WWDT_InitStruType *WWDT_InitStruct) { uint32_t tmp; WWDT_RegUnLock(); if (WWDT_InitStruct->WDT_Clock != WWDT_CLOCK_PCLK) tmp = (uint32_t)(32 * WWDT_InitStruct->WDT_Tms); else tmp = SystemCoreClock / 1000 * WWDT_InitStruct->WDT_Tms; WWDT->LOAD.LOAD = tmp; WWDT->CON.CLKS = WWDT_InitStruct->WDT_Clock; WWDT->CON.IE = WWDT_InitStruct->WDT_IE; WWDT->CON.RSTEN = WWDT_InitStruct->WDT_Rst; WWDT->CON.WWDTWIN = WWDT_InitStruct->WDT_Win; WWDT_RegLock(); return; } /************************************* 函数名:WWDT_SetReloadValue 描 述:设置WWDT重载的初值 输入值:初始值,32-bit无符号整数 返回值:无 **************************************/ void WWDT_SetReloadValue(uint32_t Value) { WWDT->LOAD.LOAD = Value; return; } /************************************* 函数名:WWDT_GetValue 描 述:获取WWDT当前值 输入值:无 返回值:当前值 **************************************/ uint32_t WWDT_GetValue(void) { return (uint32_t)WWDT->VALUE.Word; } /************************************* 函数名:WWDT_GetFlagStatus 描 述:获取WWDT中断状态 输入值:无 返回值:SET/RESET **************************************/ FlagStatus WWDT_GetFlagStatus(void) { FlagStatus bitstatus = RESET; if (WWDT->RIS.WWDTIF != RESET) bitstatus = SET; return bitstatus; } /************************************************IWDT*************************************************/ /************************************* 函数名:IWDT_Init 描 述:IWDT初始化 输入值:初始化结构体 返回值:无 **************************************/ void IWDT_Init(IWDT_InitStruType *IWDT_InitStruct) { uint32_t tmp; IWDT_RegUnLock(); if (IWDT_InitStruct->WDT_Clock != IWDT_CLOCK_PCLK) tmp = (uint32_t)(32 * IWDT_InitStruct->WDT_Tms); else tmp = SystemCoreClock / 1000 * IWDT_InitStruct->WDT_Tms; IWDT->LOAD.LOAD = tmp; IWDT->CON.CLKS = IWDT_InitStruct->WDT_Clock; IWDT->CON.IE = IWDT_InitStruct->WDT_IE; IWDT->CON.RSTEN = IWDT_InitStruct->WDT_Rst; IWDT_RegLock(); return; } /************************************* 函数名:IWDT_SetReloadValue 描 述:设置IWDT重载的初值 输入值:初始值,32-bit无符号整数 返回值:无 **************************************/ void IWDT_SetReloadValue(uint32_t Value) { IWDT->LOAD.LOAD = Value; return; } /************************************* 函数名:IWDT_GetValue 描 述:获取IWDT当前值 输入值:无 返回值:当前值 **************************************/ uint32_t IWDT_GetValue(void) { return (uint32_t)IWDT->VALUE.VALUE; } /************************************* 函数名:IWDT_GetFlagStatus 描 述:获取IWDT中断状态 输入值:无 返回值:SET/RESET **************************************/ FlagStatus IWDT_GetFlagStatus(void) { FlagStatus bitstatus = RESET; if (IWDT->RIS.WDTIF != RESET) bitstatus = SET; return bitstatus; } /************************************* 函数名:IWDT_GetITStatus 描 述:获取IWDT使能中断状态 输入值:无 返回值:SET/RESET **************************************/ FlagStatus IWDT_GetITStatus(void) { FlagStatus bitstatus = RESET; if (IWDT->CON.IE != RESET) bitstatus = SET; return bitstatus; }