44 lines
1.3 KiB
C
44 lines
1.3 KiB
C
/*
|
||
*Copyright ,2023 , NANOCHAP
|
||
*File name: ENS1_WATCHDOG.h
|
||
*Author:
|
||
*Version: V1.0
|
||
*Date: 2023-11-
|
||
*Description:
|
||
*Function List:
|
||
|
||
History:
|
||
1.V1.0
|
||
Date:
|
||
Author:
|
||
Modification: 初版
|
||
*/
|
||
|
||
#ifndef ENS1_WATCHDOG_H
|
||
#define ENS1_WATCHDOG_H
|
||
#include "CMSDK_CM0.h"
|
||
#include "ENS1_CLOCK.h"
|
||
#include "my_header.h"
|
||
/*
|
||
1、watchdog寄存器有写锁,在写入watchdog的寄存器前需要对 WDOGLOCK 寄存器写入 0x1ACCE551
|
||
2、watchdog的技术加载值: WDOGLOAD = interval(us) * pclk(MHZ)
|
||
3、计数重加载位置: WDOGVALUE
|
||
4、写1到 WDOGCONTROL 的 INTEN 位 ,使能看门狗和预警中断,当WDT计数到0,则触发一次中断
|
||
中断状态被知识通过设置 WDOGMIS位,如果 WDOGINTCLR 寄存器写入任意值(比如按照惯例,写1)
|
||
此时WDOGMIS 位被清0 ,如果RESEN位是 0 ,watchdog定时器将重载。
|
||
5、以上步骤设置完成后,写一个任意数据(除了0x1ACCE551)到WDOGLOCK寄存器
|
||
6、如果WDT当前计数值没有重载, 计数到达0时 WDT 将触发一个早期预警中断
|
||
因此,在中断触发前需要重载 WDOGLOAD寄存器
|
||
*/
|
||
typedef enum{UNLOCK = 0,LOCK=1}WdogLockState;
|
||
|
||
extern void WatchDogLoad(uint32_t loadvalue_us);
|
||
extern uint32_t Read_WDOGVALUE(void);
|
||
extern void WatchDog_Control(FunctionalState newstate);
|
||
extern void WatchDog_IntClear(void);
|
||
extern uint8_t WatchDog_LOCK_RegSet(WdogLockState newstate);
|
||
#endif
|
||
|
||
|
||
|