1 /*
2  * Copyright (c) 2006-2018, RT-Thread Development Team
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  *
6  * Change Logs:
7  * Date           Author       Notes
8  * 2019-05-06     sundm75       first version
9  */
10 
11 #include "ls1c.h"
12 #include "ls1c_wdog.h"
13 
14 /*
15 系统先配置看门狗使能位 WDT_EN;
16 然后配置看门狗计数器的初始值 WDT_TIMER;
17 当设置 WDT_SET 后,计数器开始减计数;
18 当还没有减到 0 时,重置看门狗计数器,系统不会重启;
19 当看门狗计数器减到 0 时,则系统重启。
20 */
21 
22 static unsigned int WDT_timer = 0;
23 
24 /* 暂时为空 */
Wdog_Init(void)25 unsigned int Wdog_Init(void)
26 {
27     return 0;
28 }
29 
30 /* 配置看门狗使能寄存器(WDT_EN) */
Wdog_Enable(void)31 unsigned int Wdog_Enable(void)
32 {
33     unsigned int ctrl;
34     ctrl = (WDT_EN);
35     ctrl |= 0x01;
36 
37     WDT_EN = ctrl;
38     return 0;
39 }
40 
41 /* 配置看门狗失能寄存器(WDT_EN) */
Wdog_Disable(void)42 unsigned int Wdog_Disable(void)
43 {
44     unsigned int ctrl;
45     ctrl = (WDT_EN);
46     ctrl &= ~0x01;
47     WDT_EN = ctrl;
48     return 0;
49 }
50 
51 /* 配置看门狗设置寄存器 (WDT_SET) */
Wdog_Set(void)52 unsigned int Wdog_Set(void)
53 {
54     unsigned int ctrl;
55     ctrl = (WDT_SET);
56     ctrl |= 0x01;
57     WDT_SET = ctrl;
58     return 0;
59 }
60 
61 /* 配置看门狗设置寄存器 (WDT_SET) */
Wdog_Reset(void)62 unsigned int Wdog_Reset(void)
63 {
64     unsigned int ctrl;
65     ctrl = (WDT_SET);
66     ctrl &= ~0x01;
67     WDT_SET = ctrl;
68     return 0;
69 }
70 
71 /* 获得看门狗计数器(WDT_timer) 的值*/
Wdog_GetValue(void)72 unsigned int Wdog_GetValue(void)
73 {
74     unsigned int cnt;
75     cnt = (WDT_TIMER);
76     return cnt;
77 }
78 
79 /* 配置看门狗计数器(WDT_timer)的值*/
Wdog_LoadValue(unsigned int cnt)80 unsigned int Wdog_LoadValue(unsigned int cnt)
81 {
82     WDT_TIMER = cnt;
83     WDT_timer = cnt;
84     return 0;
85 }
86 
87 /* 获得看门狗计数器设定值 */
Wdog_GetPreValue(void)88 unsigned int Wdog_GetPreValue(void)
89 {
90     return WDT_timer;
91 }
92