1 /**
2     *****************************************************************************
3     * @file     cmem7_wdg.c
4     *
5     * @brief    CMEM7 watchdog source file
6     *
7     *
8     * @version  V1.0
9     * @date     3. September 2013
10     *
11     * @note
12     *
13     *****************************************************************************
14     * @attention
15     *
16     * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
17     * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
18     * TIME. AS A RESULT, CAPITAL-MICRO SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
19     * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
20     * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
21     * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
22     *
23     * <h2><center>&copy; COPYRIGHT 2013 Capital-micro </center></h2>
24     *****************************************************************************
25     */
26 
27 #include "cmem7_wdg.h"
28 
wdg_GetClock()29 static uint32_t wdg_GetClock() {
30     return SYSTEM_CLOCK_FREQ / (1 << (GLOBAL_CTRL->CLK_SEL_0_b.WDG_CLK + 1));
31 }
32 
WDG_DeInit(void)33 void WDG_DeInit(void){
34   SOFT_RESET->SOFTRST_b.WDT_n = 0;
35     SOFT_RESET->SOFTRST_b.WDT_n = 1;
36 }
37 
WDG_Init(uint8_t trigger,uint16_t ResetMillSecond)38 void WDG_Init(uint8_t trigger, uint16_t ResetMillSecond) {
39     assert_param(IS_WDG_TRIGGER_MODE(trigger));
40 
41     WDG->INT_CTRL_b.TRIGGER_MODE = trigger;
42     WDG->LEN = ((uint64_t)wdg_GetClock()) * ResetMillSecond / 1000;
43 }
44 
WDG_ITConfig(uint8_t Int,BOOL Enable)45 void WDG_ITConfig(uint8_t Int, BOOL Enable) {
46     assert_param(IS_WDG_INT(Int));
47 
48     WDG->CTRL_b.INT_LEN = Int;
49     WDG->INT_CTRL_b.MASK = !Enable;
50 }
51 
WDG_GetITStatus()52 BOOL WDG_GetITStatus() {
53     return (WDG->INT_STA_b.STA == 1) ? TRUE : FALSE;
54 }
55 
WDG_ClearITPendingBit()56 void WDG_ClearITPendingBit() {
57     WDG->INT_STA_b.STA = 1;
58 }
59 
WDG_Cmd(BOOL Enable)60 void WDG_Cmd(BOOL Enable) {
61     WDG->CTRL_b.EN = Enable;
62 }
63 
64