1 ////////////////////////////////////////////////////////////////////////////////
2 /// @file     hal_iwdg.h
3 /// @author   AE TEAM
4 /// @brief    THIS FILE CONTAINS ALL THE FUNCTIONS PROTOTYPES FOR THE IWDG
5 ///           FIRMWARE LIBRARY.
6 ////////////////////////////////////////////////////////////////////////////////
7 /// @attention
8 ///
9 /// THE EXISTING FIRMWARE IS ONLY FOR REFERENCE, WHICH IS DESIGNED TO PROVIDE
10 /// CUSTOMERS WITH CODING INFORMATION ABOUT THEIR PRODUCTS SO THEY CAN SAVE
11 /// TIME. THEREFORE, MINDMOTION SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT OR
12 /// CONSEQUENTIAL DAMAGES ABOUT ANY CLAIMS ARISING OUT OF THE CONTENT OF SUCH
13 /// HARDWARE AND/OR THE USE OF THE CODING INFORMATION CONTAINED HEREIN IN
14 /// CONNECTION WITH PRODUCTS MADE BY CUSTOMERS.
15 ///
16 /// <H2><CENTER>&COPY; COPYRIGHT MINDMOTION </CENTER></H2>
17 ////////////////////////////////////////////////////////////////////////////////
18 
19 // Define to prevent recursive inclusion
20 #ifndef __HAL_IWDG_H
21 #define __HAL_IWDG_H
22 
23 // Files includes
24 #include "types.h"
25 #include "reg_iwdg.h"
26 #include "reg_common.h"
27 
28 ////////////////////////////////////////////////////////////////////////////////
29 /// @addtogroup MM32_Hardware_Abstract_Layer
30 /// @{
31 
32 ////////////////////////////////////////////////////////////////////////////////
33 /// @defgroup IWDG_HAL
34 /// @brief IWDG HAL modules
35 /// @{
36 
37 ////////////////////////////////////////////////////////////////////////////////
38 /// @defgroup IWDG_Exported_Constants
39 /// @{
40 
41 ////////////////////////////////////////////////////////////////////////////////
42 /// @brief  IWDG prescaler
43 ////////////////////////////////////////////////////////////////////////////////
44 typedef enum {
45     IWDG_Prescaler_4   = IWDG_PR_PRE_DIV4,
46     IWDG_Prescaler_8   = IWDG_PR_PRE_DIV8,
47     IWDG_Prescaler_16  = IWDG_PR_PRE_DIV16,
48     IWDG_Prescaler_32  = IWDG_PR_PRE_DIV32,
49     IWDG_Prescaler_64  = IWDG_PR_PRE_DIV64,
50     IWDG_Prescaler_128 = IWDG_PR_PRE_DIV128,
51     IWDG_Prescaler_256 = IWDG_PR_PRE_DIV256
52 } IWDGPrescaler_TypeDef;
53 
54 ////////////////////////////////////////////////////////////////////////////////
55 /// @brief  IWDG flag
56 ////////////////////////////////////////////////////////////////////////////////
57 typedef enum {
58     IWDG_FLAG_PVU = 0x0001,  // IWDG prescaler value update flag
59     IWDG_FLAG_RVU = 0x0002   // IWDG counter reload value update flag
60 } IWDGFlag_TypeDef;
61 
62 ////////////////////////////////////////////////////////////////////////////////
63 /// @brief  Write access to IWDG_PR and IWDG_RLR registers
64 ////////////////////////////////////////////////////////////////////////////////
65 typedef enum {
66     IWDG_WriteAccess_Enable  = 0x5555,  // Enable write
67     IWDG_WriteAccess_Disable = 0x0000   // Disable write
68 } IWDGWriteAccess_TypeDef;
69 
70 ////////////////////////////////////////////////////////////////////////////////
71 /// @brief  IWDG Key Reload
72 ////////////////////////////////////////////////////////////////////////////////
73 typedef enum {
74     KR_KEY_Reload = 0xAAAA,  // Reload value
75     KR_KEY_Enable = 0xCCCC   // Start IWDG
76 } IWDGKey_TypeDef;
77 
78 ////////////////////////////////////////////////////////////////////////////////
79 /// @brief  IWDG Overflow Configration
80 ////////////////////////////////////////////////////////////////////////////////
81 typedef enum {
82     IWDG_Overflow_Reset     = 0,               //
83     IWDG_Overflow_Interrupt = IWDG_CR_IRQSEL   //
84 } IWDGOverflowConfig_TypeDef;
85 
86 /// @}
87 
88 ////////////////////////////////////////////////////////////////////////////////
89 /// @defgroup IWDG_Exported_Variables
90 /// @{
91 #ifdef _HAL_IWDG_C_
92 #define GLOBAL
93 
94 #else
95 #define GLOBAL extern
96 #endif
97 
98 
99 #undef GLOBAL
100 /// @}
101 
102 ////////////////////////////////////////////////////////////////////////////////
103 /// @defgroup IWDG_Exported_Functions
104 /// @{
105 FlagStatus IWDG_GetFlagStatus(u16 flag);
106 
107 void IWDG_WriteAccessCmd(u16 write_access);
108 void IWDG_SetPrescaler(u8 prescaler);
109 void IWDG_SetReload(u16 reload);
110 u32 IWDG_GetReload(void);
111 void IWDG_ReloadCounter(void);
112 void IWDG_Enable(void);
113 void PVU_CheckStatus(void);
114 void RVU_CheckStatus(void);
115 
116 void IWDG_OverflowConfig(IWDGOverflowConfig_TypeDef overflow_config);
117 void IWDG_ClearITPendingBit(void);
118 void IWDG_EnableIT(void);
119 void IWDG_Reset(void);
120 void IWDG_ClearIT(void);
121 
122 /// @}
123 
124 /// @}
125 
126 /// @}
127 
128 ////////////////////////////////////////////////////////////////////////////////
129 #endif // __HAL_IWDG_H
130 ////////////////////////////////////////////////////////////////////////////////
131