forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

jinlicong
2024-05-30 a1810b89e66f184c62a0588ae7d57c91d0c376e8
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
/**
  ******************************************************************************
  * @file    fm33a0xxev_wwdt.c
  * @author  FM33A0XXEV Application Team
  * @version V1.0.0
  * @date    16-April-2020
  * @brief   This file provides firmware functions to manage the following 
  *          functionalities of....:
  *
*/
 
/* Includes ------------------------------------------------------------------*/
 
#include "fm33a0xxev_wwdt.h"
 
/** @addtogroup fm33a0xxev_StdPeriph_Driver
  * @{
  */
 
/** @defgroup WWDT 
  * @brief WWDT driver modules
  * @{
  */ 
 
/* µ±CPUÏò´ËµØÖ·Ð´Èë0x5AʱÆô¶¯WWDT¶¨Ê±Æ÷ (WWDT Control,write only)
ÔÚÆô¶¯WWDTºó£¬µ±CPUÏò´ËµØÖ·Ð´Èë0xACʱÇåÁã¼ÆÊýÆ÷ Ïà¹Øº¯Êý */
void WWDT_CR_Write(uint32_t SetValue)
{
    WWDT->CR = (SetValue & WWDT_CR_CON_Msk);
}
 
/* ÅäÖÃWWDT¿´ÃŹ·Òç³öʱ¼ä£¬¸´Î»Öµ011£¬ÓÉÓÚÉϵçºóϵͳʱÖÓĬÈÏΪ8Mhz£¬ËùÒÔĬÈÏÒç³öÖÜÆÚ´óÔ¼32ms (WWDT Config)
000£ºTPCLK * 4096 * 1
001£ºTPCLK * 4096 * 4
010£ºTPCLK * 4096 * 16
011£ºTPCLK * 4096 * 64
100£ºTPCLK * 4096 * 128
101£ºTPCLK * 4096 * 256
110£ºTPCLK * 4096 * 512
111£ºTPCLK * 4096 * 1024 Ïà¹Øº¯Êý */
void WWDT_CFGR_Write(uint32_t SetValue)
{
    WWDT->CFGR = (SetValue & WWDT_CFGR_CFG_Msk);
}
 
uint32_t WWDT_CFGR_Read(void)
{
    return (WWDT->CFGR & WWDT_CFGR_CFG_Msk);
}
 
/* WWDT¼ÆÊý¼Ä´æÆ÷Öµ£¬Èí¼þ¿Éͨ¹ý²éѯ´Ë¼Ä´æÆ÷Á˽âWWDT¼ÆÊ±½ø¶È (WWDT Counter value,read only) Ïà¹Øº¯Êý */
uint32_t WWDT_CNTR_Read(void)
{
    return (WWDT->CNTR & WWDT_CNTR_CNT_Msk);
}
 
/* WWDTÖжÏʹÄÜ (WWDT Interrupt Enable)
0£ºÖжÏʹÄܽûÖ¹
1£ºÖжÏʹÄÜ´ò¿ª Ïà¹Øº¯Êý */
void WWDT_IER_IE_Setable(FunState NewState)
{
    if (NewState == ENABLE)
    {
        WWDT->IER |= (WWDT_IER_IE_Msk);
    }
    else
    {
        WWDT->IER &= ~(WWDT_IER_IE_Msk);
    }
}
 
FunState WWDT_IER_IE_Getable(void)
{
    if (WWDT->IER & (WWDT_IER_IE_Msk))
    {
        return ENABLE;
    }
    else
    {
        return DISABLE;
    }
}
 
/* WWDT 75%¼ÆÊ±ÖжϱêÖ¾£¬Ð´1ÇåÁã (Near Overflow Flag,write 1 to clear)
0£ºÎÞÖжϲúÉú
1£ºÖжϱêÖ¾ÖÃλ
Èç¹ûIE=1£¬Ôò´Ë¼Ä´æÆ÷ÖÃ뽫´¥·¢ÖжϠÏà¹Øº¯Êý */
void WWDT_ISR_NOVF_Clr(void)
{
    WWDT->ISR = WWDT_ISR_NOVF_Msk;
}
 
FlagStatus WWDT_ISR_NOVF_Chk(void)
{
    if (WWDT->ISR & WWDT_ISR_NOVF_Msk)
    {
        return SET;
    }
    else
    {
        return RESET;
    }
}
 
/* WWDTµÄ4096Ô¤·ÖƵ¼ÆÊýÆ÷µ±Ç°¼ÆÊýÖµ£¬Ö»¶Á (WWDT prescaler Divider Counte,read only) Ïà¹Øº¯Êý */
uint32_t WWDT_PSCR_Read(void)
{
    return (WWDT->PSCR & WWDT_PSCR_DIV_CNT_Msk);
}
 
 
void WWDT_Deinit(void)
{
    //WWDT->CR = 0x00000000;
    //WWDT->CFGR = 0x00000003;
    //WWDT->CNTR = 0x00000000;
    //WWDT->IER = 0x00000000;
    //WWDT->ISR = 0x00000000;
    //WWDT->PSCR = 0x00000000;
}
 
/******END OF FILE****/