Electricity/FWLIB/source/ENS1_WATCHDOG.c

65 lines
1.0 KiB
C

/*
*Copyright ,2023 , NANOCHAP
*File name: ENS1_WATCHDOG.c
*Author:
*Version: V1.0
*Date: 2023-11-
*Description:
*Function List:
History:
1.V1.0
Date:
Author:
Modification: 初版
*/
#include "ENS1_WATCHDOG.h"
//设置load值
void WatchDogLoad(uint32_t loadvalue_us)
{
CMSDK_WATCHDOG->LOAD = loadvalue_us * (uint8_t)(APB_Clock_Freq/1000000) ;
}
//读取watchdog 递减计数器当前值
uint32_t Read_WDOGVALUE(void)
{
return ( CMSDK_WATCHDOG->VALUE & 0xffffffff );
}
//使能看门够中断事件
void WatchDog_Control(FunctionalState newstate)
{
if(newstate == ENABLE)
{
CMSDK_WATCHDOG->CTRL |= (0x3);
}
else
{
CMSDK_WATCHDOG->CTRL &=~ (0x3);
}
}
//清除看门狗中断事件,清除后将自动重载计数值
void WatchDog_IntClear(void)
{
CMSDK_WATCHDOG->INTCLR = 1 ;
}
//解除看门狗锁寄存器或给看门狗寄存器上锁
uint8_t WatchDog_LOCK_RegSet(WdogLockState newstate)
{
if(newstate == LOCK)
{
CMSDK_WATCHDOG->LOCK = 0;
}
else
{
CMSDK_WATCHDOG->LOCK = 0x1ACCE551;
}
return (CMSDK_WATCHDOG->LOCK &0x1);
}