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>© 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
////////////////////////////////////////////////////////////////////////////////
|