QuakeGod
2024-02-25 95322c84888cbe2e92024d4d65698f59b016cb52
提交 | 用户 | age
483170 1 /**
Q 2   ******************************************************************************
3   * @file    stm32f0xx_hal_iwdg.h
4   * @author  MCD Application Team
5   * @brief   Header file of IWDG HAL module.
6   ******************************************************************************
7   * @attention
8   *
9   * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
10   *
11   * Redistribution and use in source and binary forms, with or without modification,
12   * are permitted provided that the following conditions are met:
13   *   1. Redistributions of source code must retain the above copyright notice,
14   *      this list of conditions and the following disclaimer.
15   *   2. Redistributions in binary form must reproduce the above copyright notice,
16   *      this list of conditions and the following disclaimer in the documentation
17   *      and/or other materials provided with the distribution.
18   *   3. Neither the name of STMicroelectronics nor the names of its contributors
19   *      may be used to endorse or promote products derived from this software
20   *      without specific prior written permission.
21   *
22   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
23   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
25   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
26   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
28   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
30   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32   *
33   ******************************************************************************
34   */
35
36 /* Define to prevent recursive inclusion -------------------------------------*/
37 #ifndef __STM32F0xx_HAL_IWDG_H
38 #define __STM32F0xx_HAL_IWDG_H
39
40 #ifdef __cplusplus
41  extern "C" {
42 #endif
43
44 /* Includes ------------------------------------------------------------------*/
45 #include "stm32f0xx_hal_def.h"
46
47 /** @addtogroup STM32F0xx_HAL_Driver
48   * @{
49   */
50
51 /** @defgroup IWDG IWDG
52   * @{
53   */
54
55 /* Exported types ------------------------------------------------------------*/
56 /** @defgroup IWDG_Exported_Types IWDG Exported Types
57   * @{
58   */
59
60 /** 
61   * @brief  IWDG Init structure definition
62   */
63 typedef struct
64 {
65   uint32_t Prescaler;  /*!< Select the prescaler of the IWDG.
66                             This parameter can be a value of @ref IWDG_Prescaler */
67
68   uint32_t Reload;     /*!< Specifies the IWDG down-counter reload value.
69                             This parameter must be a number between Min_Data = 0 and Max_Data = 0x0FFF */
70
71   uint32_t Window;     /*!< Specifies the window value to be compared to the down-counter.
72                             This parameter must be a number between Min_Data = 0 and Max_Data = 0x0FFF */
73
74 } IWDG_InitTypeDef;
75
76 /** 
77   * @brief  IWDG Handle Structure definition  
78   */
79 typedef struct
80 {
81   IWDG_TypeDef                 *Instance;  /*!< Register base address    */
82
83   IWDG_InitTypeDef             Init;       /*!< IWDG required parameters */
84
85 }IWDG_HandleTypeDef;
86
87 /**
88   * @}
89   */
90
91 /* Exported constants --------------------------------------------------------*/
92 /** @defgroup IWDG_Exported_Constants IWDG Exported Constants
93   * @{
94   */
95
96 /** @defgroup IWDG_Prescaler IWDG Prescaler
97   * @{
98   */
99 #define IWDG_PRESCALER_4                0x00000000U                   /*!< IWDG prescaler set to 4   */
100 #define IWDG_PRESCALER_8                IWDG_PR_PR_0                  /*!< IWDG prescaler set to 8   */
101 #define IWDG_PRESCALER_16               IWDG_PR_PR_1                  /*!< IWDG prescaler set to 16  */
102 #define IWDG_PRESCALER_32               (IWDG_PR_PR_1 | IWDG_PR_PR_0) /*!< IWDG prescaler set to 32  */
103 #define IWDG_PRESCALER_64               IWDG_PR_PR_2                  /*!< IWDG prescaler set to 64  */
104 #define IWDG_PRESCALER_128              (IWDG_PR_PR_2 | IWDG_PR_PR_0)   /*!< IWDG prescaler set to 128 */
105 #define IWDG_PRESCALER_256              (IWDG_PR_PR_2 | IWDG_PR_PR_1)   /*!< IWDG prescaler set to 256 */
106 /**
107   * @}
108   */
109
110 /** @defgroup IWDG_Window_option IWDG Window option
111   * @{
112   */
113 #define IWDG_WINDOW_DISABLE             IWDG_WINR_WIN
114 /**
115   * @}
116   */
117
118 /**
119   * @}
120   */
121
122 /* Exported macros -----------------------------------------------------------*/
123 /** @defgroup IWDG_Exported_Macros IWDG Exported Macros
124   * @{
125   */
126
127 /**
128   * @brief  Enable the IWDG peripheral.
129   * @param  __HANDLE__  IWDG handle
130   * @retval None
131   */
132 #define __HAL_IWDG_START(__HANDLE__)                WRITE_REG((__HANDLE__)->Instance->KR, IWDG_KEY_ENABLE)
133
134 /**
135   * @brief  Reload IWDG counter with value defined in the reload register
136   *         (write access to IWDG_PR, IWDG_RLR & IWDG_WINR registers disabled).
137   * @param  __HANDLE__  IWDG handle
138   * @retval None
139   */
140 #define __HAL_IWDG_RELOAD_COUNTER(__HANDLE__)       WRITE_REG((__HANDLE__)->Instance->KR, IWDG_KEY_RELOAD)
141
142 /**
143   * @}
144   */
145
146 /* Exported functions --------------------------------------------------------*/
147 /** @defgroup IWDG_Exported_Functions  IWDG Exported Functions
148   * @{
149   */
150
151 /** @defgroup IWDG_Exported_Functions_Group1 Initialization and Start functions
152   * @{
153   */
154 /* Initialization/Start functions  ********************************************/
155 HAL_StatusTypeDef HAL_IWDG_Init(IWDG_HandleTypeDef *hiwdg);
156 /**
157   * @}
158   */
159
160 /** @defgroup IWDG_Exported_Functions_Group2 IO operation functions
161   * @{
162   */
163 /* I/O operation functions ****************************************************/
164 HAL_StatusTypeDef HAL_IWDG_Refresh(IWDG_HandleTypeDef *hiwdg);
165 /**
166   * @}
167   */
168
169 /**
170   * @}
171   */
172
173 /* Private constants ---------------------------------------------------------*/
174 /** @defgroup IWDG_Private_Constants IWDG Private Constants
175   * @{
176   */
177
178 /**
179   * @brief  IWDG Key Register BitMask
180   */
181 #define IWDG_KEY_RELOAD                 0x0000AAAAU  /*!< IWDG Reload Counter Enable   */
182 #define IWDG_KEY_ENABLE                 0x0000CCCCU  /*!< IWDG Peripheral Enable       */
183 #define IWDG_KEY_WRITE_ACCESS_ENABLE    0x00005555U  /*!< IWDG KR Write Access Enable  */
184 #define IWDG_KEY_WRITE_ACCESS_DISABLE   0x00000000U  /*!< IWDG KR Write Access Disable */
185
186 /**
187   * @}
188   */
189
190 /* Private macros ------------------------------------------------------------*/
191 /** @defgroup IWDG_Private_Macros IWDG Private Macros
192   * @{
193   */
194
195 /**
196   * @brief  Enable write access to IWDG_PR, IWDG_RLR and IWDG_WINR registers.
197   * @param  __HANDLE__  IWDG handle
198   * @retval None
199   */
200 #define IWDG_ENABLE_WRITE_ACCESS(__HANDLE__)  WRITE_REG((__HANDLE__)->Instance->KR, IWDG_KEY_WRITE_ACCESS_ENABLE)
201
202 /**
203   * @brief  Disable write access to IWDG_PR, IWDG_RLR and IWDG_WINR registers.
204   * @param  __HANDLE__  IWDG handle
205   * @retval None
206   */
207 #define IWDG_DISABLE_WRITE_ACCESS(__HANDLE__) WRITE_REG((__HANDLE__)->Instance->KR, IWDG_KEY_WRITE_ACCESS_DISABLE)
208
209 /**
210   * @brief  Check IWDG prescaler value.
211   * @param  __PRESCALER__  IWDG prescaler value
212   * @retval None
213   */
214 #define IS_IWDG_PRESCALER(__PRESCALER__)      (((__PRESCALER__) == IWDG_PRESCALER_4)  || \
215                                                ((__PRESCALER__) == IWDG_PRESCALER_8)  || \
216                                                ((__PRESCALER__) == IWDG_PRESCALER_16) || \
217                                                ((__PRESCALER__) == IWDG_PRESCALER_32) || \
218                                                ((__PRESCALER__) == IWDG_PRESCALER_64) || \
219                                                ((__PRESCALER__) == IWDG_PRESCALER_128)|| \
220                                                ((__PRESCALER__) == IWDG_PRESCALER_256))
221
222 /**
223   * @brief  Check IWDG reload value.
224   * @param  __RELOAD__  IWDG reload value
225   * @retval None
226   */
227 #define IS_IWDG_RELOAD(__RELOAD__)            ((__RELOAD__) <= IWDG_RLR_RL)
228
229 /**
230   * @brief  Check IWDG window value.
231   * @param  __WINDOW__  IWDG window value
232   * @retval None
233   */
234 #define IS_IWDG_WINDOW(__WINDOW__)            ((__WINDOW__) <= IWDG_WINR_WIN)
235
236 /**
237   * @}
238   */
239
240 /**
241   * @}
242   */
243
244 /**
245   * @}
246   */
247
248
249 #ifdef __cplusplus
250 }
251 #endif
252
253 #endif /* __STM32F0xx_HAL_IWDG_H */
254
255 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
256