/* *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