summaryrefslogtreecommitdiff
path: root/bsp/mm32f327x/Libraries/MM32F327x/HAL_Lib/Inc/hal_iwdg.h
blob: e0b86d7b71596fbb1b1d7df7d22cf9dced2b328c (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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
////////////////////////////////////////////////////////////////////////////////
/// @file     hal_iwdg.h
/// @author   AE TEAM
/// @brief    THIS FILE CONTAINS ALL THE FUNCTIONS PROTOTYPES FOR THE IWDG
///           FIRMWARE LIBRARY.
////////////////////////////////////////////////////////////////////////////////
/// @attention
///
/// THE EXISTING FIRMWARE IS ONLY FOR REFERENCE, WHICH IS DESIGNED TO PROVIDE
/// CUSTOMERS WITH CODING INFORMATION ABOUT THEIR PRODUCTS SO THEY CAN SAVE
/// TIME. THEREFORE, MINDMOTION SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT OR
/// CONSEQUENTIAL DAMAGES ABOUT ANY CLAIMS ARISING OUT OF THE CONTENT OF SUCH
/// HARDWARE AND/OR THE USE OF THE CODING INFORMATION CONTAINED HEREIN IN
/// CONNECTION WITH PRODUCTS MADE BY CUSTOMERS.
///
/// <H2><CENTER>&COPY; COPYRIGHT MINDMOTION </CENTER></H2>
////////////////////////////////////////////////////////////////////////////////

// Define to prevent recursive inclusion
#ifndef __HAL_IWDG_H
#define __HAL_IWDG_H

// Files includes
#include "types.h"
#include "reg_iwdg.h"
#include "reg_common.h"

////////////////////////////////////////////////////////////////////////////////
/// @addtogroup MM32_Hardware_Abstract_Layer
/// @{

////////////////////////////////////////////////////////////////////////////////
/// @defgroup IWDG_HAL
/// @brief IWDG HAL modules
/// @{

////////////////////////////////////////////////////////////////////////////////
/// @defgroup IWDG_Exported_Constants
/// @{

////////////////////////////////////////////////////////////////////////////////
/// @brief  IWDG prescaler
////////////////////////////////////////////////////////////////////////////////
typedef enum {
    IWDG_Prescaler_4   = IWDG_PR_PRE_DIV4,
    IWDG_Prescaler_8   = IWDG_PR_PRE_DIV8,
    IWDG_Prescaler_16  = IWDG_PR_PRE_DIV16,
    IWDG_Prescaler_32  = IWDG_PR_PRE_DIV32,
    IWDG_Prescaler_64  = IWDG_PR_PRE_DIV64,
    IWDG_Prescaler_128 = IWDG_PR_PRE_DIV128,
    IWDG_Prescaler_256 = IWDG_PR_PRE_DIV256
} IWDGPrescaler_TypeDef;

////////////////////////////////////////////////////////////////////////////////
/// @brief  IWDG flag
////////////////////////////////////////////////////////////////////////////////
typedef enum {
    IWDG_FLAG_PVU = 0x0001,  // IWDG prescaler value update flag
    IWDG_FLAG_RVU = 0x0002   // IWDG counter reload value update flag
} IWDGFlag_TypeDef;

////////////////////////////////////////////////////////////////////////////////
/// @brief  Write access to IWDG_PR and IWDG_RLR registers
////////////////////////////////////////////////////////////////////////////////
typedef enum {
    IWDG_WriteAccess_Enable  = 0x5555,  // Enable write
    IWDG_WriteAccess_Disable = 0x0000   // Disable write
} IWDGWriteAccess_TypeDef;

////////////////////////////////////////////////////////////////////////////////
/// @brief  IWDG Key Reload
////////////////////////////////////////////////////////////////////////////////
typedef enum {
    KR_KEY_Reload = 0xAAAA,  // Reload value
    KR_KEY_Enable = 0xCCCC   // Start IWDG
} IWDGKey_TypeDef;

////////////////////////////////////////////////////////////////////////////////
/// @brief  IWDG Overflow Configration
////////////////////////////////////////////////////////////////////////////////
typedef enum {
    IWDG_Overflow_Reset     = 0,               //
    IWDG_Overflow_Interrupt = IWDG_CR_IRQSEL   //
} IWDGOverflowConfig_TypeDef;

/// @}

////////////////////////////////////////////////////////////////////////////////
/// @defgroup IWDG_Exported_Variables
/// @{
#ifdef _HAL_IWDG_C_
#define GLOBAL

#else
#define GLOBAL extern
#endif


#undef GLOBAL
/// @}

////////////////////////////////////////////////////////////////////////////////
/// @defgroup IWDG_Exported_Functions
/// @{
FlagStatus IWDG_GetFlagStatus(u16 flag);

void IWDG_WriteAccessCmd(u16 write_access);
void IWDG_SetPrescaler(u8 prescaler);
void IWDG_SetReload(u16 reload);
u32 IWDG_GetReload(void);
void IWDG_ReloadCounter(void);
void IWDG_Enable(void);
void PVU_CheckStatus(void);
void RVU_CheckStatus(void);

void IWDG_OverflowConfig(IWDGOverflowConfig_TypeDef overflow_config);
void IWDG_ClearITPendingBit(void);
void IWDG_EnableIT(void);
void IWDG_Reset(void);
void IWDG_ClearIT(void);

/// @}

/// @}

/// @}

////////////////////////////////////////////////////////////////////////////////
#endif // __HAL_IWDG_H 
////////////////////////////////////////////////////////////////////////////////