summaryrefslogtreecommitdiff
path: root/bsp/yichip/yc3122-pos/Libraries/sdk/yc_wdt.c
blob: 2d7bc96afc3e8f46dd9f0bd8fb9dbe7a35419ed3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
/*
 * Copyright (c) 2006-2020, YICHIP Development Team
 * @file     yc_wdt.c
 * @brief    This file provides all the WDT firmware functions.
 *
 * Change Logs:
 * Date           Author             Version        Notes
 * 2021-01-04     yangzhengfeng      V1.0.0         the first version
 */
#include "yc_wdt.h"

/**
 * @brief  Set WDT Clk Div
 * @param  Wdtclkdiv: Wdtclkdiv value equal 1 to 16
 * @retval none
 */
void WDT_CLKDIV(uint32_t Wdtclkdiv)
{
    _ASSERT(IS_WDT_CLKDI(Wdtclkdiv));

    MWDT->CONFIG.bit.CLK_DIV = Wdtclkdiv;
}

/**
 * @brief  Set reload counter
 * @param  Reload: Reload counter equal to 2 to 31
 * @retval none
 */
void WDT_SetReload(uint32_t Reload)
{
    _ASSERT(IS_WDT_RELOAD(Reload));

    MWDT->CONFIG.bit.RELOAD = Reload;
}

/**
 * @brief  Feed the watchdog function
 * @param  none
 * @retval none
 */
void WDT_ReloadCounter(void)
{
    MWDT->KICK.reg = COUNTER_RELOAD_KEY;
}

/**
 * @brief  Enable WDT
 * @param  none
 * @retval none
 */
void WDT_Enable(void)
{
    MWDT->CONFIG.bit.EN = ENABLE;
}

/**
 * @brief Set WDT  mode
 * @param WDT_Mode : Select the following values :
 *        WDT_CPUReset
 *        WDT_Interrupt.
 * @retval none
 * @description If Select WDT_CPUReset Mode,the bit for WDT RESET will be set;if
 *              Select WDT_Interrupt the bit for WDT RESET will
 */
void WDT_ModeConfig(WDT_ModeTypeDef WDT_Mode)
{
    _ASSERT(IS_WDT_MODE(WDT_Mode));

    if(WDT_CPUReset == WDT_Mode)
    {
        MWDT->CONFIG.bit.MODE = WDT_CPUReset;
        MRSTGEN->RST_EN.bit.WDT = ENABLE;
    }
    else if(WDT_Interrupt == WDT_Mode)
    {
        MWDT->CONFIG.bit.MODE = WDT_Interrupt;
        MRSTGEN->RST_EN.bit.WDT = DISABLE;
    }
}

/**
 * @brief  Get interrupt Status
 * @param  none
 * @retval SET:interrupt ocuured.
 */
uint8_t WDT_GetITStatus(void)
{
    uint16_t ret;

    ret = MWDT->IRQ_STATUS.bit.STATE;

    return ret ;
}

/**
 * @brief  Clear interrupt
 * @param  none
 * @retval none
 */
void WDT_ClearITPendingBit(void)
{
    MWDT->CLEAR.reg = 1;
}

/************************ (C) COPYRIGHT Yichip Microelectronics *****END OF FILE****/