Prusa MINI Firmware overview
stm32f4xx_hal_iwdg.h
Go to the documentation of this file.
1 /**
2  ******************************************************************************
3  * @file stm32f4xx_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) 2017 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 __STM32F4xx_HAL_IWDG_H
38 #define __STM32F4xx_HAL_IWDG_H
39 
40 #ifdef __cplusplus
41  extern "C" {
42 #endif
43 
44 /* Includes ------------------------------------------------------------------*/
45 #include "stm32f4xx_hal_def.h"
46 
47 /** @addtogroup STM32F4xx_HAL_Driver
48  * @{
49  */
50 
51 /** @addtogroup 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 
72 
73 /**
74  * @brief IWDG Handle Structure definition
75  */
76 typedef struct
77 {
78  IWDG_TypeDef *Instance; /*!< Register base address */
79 
80  IWDG_InitTypeDef Init; /*!< IWDG required parameters */
81 
83 
84 /**
85  * @}
86  */
87 
88 /* Exported constants --------------------------------------------------------*/
89 /** @defgroup IWDG_Exported_Constants IWDG Exported Constants
90  * @{
91  */
92 
93 /** @defgroup IWDG_Prescaler IWDG Prescaler
94  * @{
95  */
96 #define IWDG_PRESCALER_4 0x00000000U /*!< IWDG prescaler set to 4 */
97 #define IWDG_PRESCALER_8 IWDG_PR_PR_0 /*!< IWDG prescaler set to 8 */
98 #define IWDG_PRESCALER_16 IWDG_PR_PR_1 /*!< IWDG prescaler set to 16 */
99 #define IWDG_PRESCALER_32 (IWDG_PR_PR_1 | IWDG_PR_PR_0) /*!< IWDG prescaler set to 32 */
100 #define IWDG_PRESCALER_64 IWDG_PR_PR_2 /*!< IWDG prescaler set to 64 */
101 #define IWDG_PRESCALER_128 (IWDG_PR_PR_2 | IWDG_PR_PR_0) /*!< IWDG prescaler set to 128 */
102 #define IWDG_PRESCALER_256 (IWDG_PR_PR_2 | IWDG_PR_PR_1) /*!< IWDG prescaler set to 256 */
103 /**
104  * @}
105  */
106 
107 /**
108  * @}
109  */
110 
111 /* Exported macros -----------------------------------------------------------*/
112 /** @defgroup IWDG_Exported_Macros IWDG Exported Macros
113  * @{
114  */
115 
116 /**
117  * @brief Enable the IWDG peripheral.
118  * @param __HANDLE__ IWDG handle
119  * @retval None
120  */
121 #define __HAL_IWDG_START(__HANDLE__) WRITE_REG((__HANDLE__)->Instance->KR, IWDG_KEY_ENABLE)
122 
123 /**
124  * @brief Reload IWDG counter with value defined in the reload register
125  * (write access to IWDG_PR & IWDG_RLR registers disabled).
126  * @param __HANDLE__ IWDG handle
127  * @retval None
128  */
129 #define __HAL_IWDG_RELOAD_COUNTER(__HANDLE__) WRITE_REG((__HANDLE__)->Instance->KR, IWDG_KEY_RELOAD)
130 
131 /**
132  * @}
133  */
134 
135 /* Exported functions --------------------------------------------------------*/
136 /** @defgroup IWDG_Exported_Functions IWDG Exported Functions
137  * @{
138  */
139 
140 /** @defgroup IWDG_Exported_Functions_Group1 Initialization and Start functions
141  * @{
142  */
143 /* Initialization/Start functions ********************************************/
145 /**
146  * @}
147  */
148 
149 /** @defgroup IWDG_Exported_Functions_Group2 IO operation functions
150  * @{
151  */
152 /* I/O operation functions ****************************************************/
154 /**
155  * @}
156  */
157 
158 /**
159  * @}
160  */
161 
162 /* Private constants ---------------------------------------------------------*/
163 /** @defgroup IWDG_Private_Constants IWDG Private Constants
164  * @{
165  */
166 
167 /**
168  * @brief IWDG Key Register BitMask
169  */
170 #define IWDG_KEY_RELOAD 0x0000AAAAU /*!< IWDG Reload Counter Enable */
171 #define IWDG_KEY_ENABLE 0x0000CCCCU /*!< IWDG Peripheral Enable */
172 #define IWDG_KEY_WRITE_ACCESS_ENABLE 0x00005555U /*!< IWDG KR Write Access Enable */
173 #define IWDG_KEY_WRITE_ACCESS_DISABLE 0x00000000U /*!< IWDG KR Write Access Disable */
174 
175 /**
176  * @}
177  */
178 
179 /* Private macros ------------------------------------------------------------*/
180 /** @defgroup IWDG_Private_Macros IWDG Private Macros
181  * @{
182  */
183 
184 /**
185  * @brief Enable write access to IWDG_PR and IWDG_RLR registers.
186  * @param __HANDLE__ IWDG handle
187  * @retval None
188  */
189 #define IWDG_ENABLE_WRITE_ACCESS(__HANDLE__) WRITE_REG((__HANDLE__)->Instance->KR, IWDG_KEY_WRITE_ACCESS_ENABLE)
190 
191 /**
192  * @brief Disable write access to IWDG_PR and IWDG_RLR registers.
193  * @param __HANDLE__ IWDG handle
194  * @retval None
195  */
196 #define IWDG_DISABLE_WRITE_ACCESS(__HANDLE__) WRITE_REG((__HANDLE__)->Instance->KR, IWDG_KEY_WRITE_ACCESS_DISABLE)
197 
198 /**
199  * @brief Check IWDG prescaler value.
200  * @param __PRESCALER__ IWDG prescaler value
201  * @retval None
202  */
203 #define IS_IWDG_PRESCALER(__PRESCALER__) (((__PRESCALER__) == IWDG_PRESCALER_4) || \
204  ((__PRESCALER__) == IWDG_PRESCALER_8) || \
205  ((__PRESCALER__) == IWDG_PRESCALER_16) || \
206  ((__PRESCALER__) == IWDG_PRESCALER_32) || \
207  ((__PRESCALER__) == IWDG_PRESCALER_64) || \
208  ((__PRESCALER__) == IWDG_PRESCALER_128)|| \
209  ((__PRESCALER__) == IWDG_PRESCALER_256))
210 
211 /**
212  * @brief Check IWDG reload value.
213  * @param __RELOAD__ IWDG reload value
214  * @retval None
215  */
216 #define IS_IWDG_RELOAD(__RELOAD__) ((__RELOAD__) <= IWDG_RLR_RL)
217 
218 /**
219  * @}
220  */
221 
222 /**
223  * @}
224  */
225 
226 /**
227  * @}
228  */
229 
230 
231 #ifdef __cplusplus
232 }
233 #endif
234 
235 #endif /* __STM32F4xx_HAL_IWDG_H */
236 
237 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
stm32f4xx_hal_def.h
This file contains HAL common defines, enumeration, macros and structures definitions.
IWDG_HandleTypeDef
IWDG Handle Structure definition.
Definition: stm32f4xx_hal_iwdg.h:76
HAL_IWDG_Init
HAL_StatusTypeDef HAL_IWDG_Init(IWDG_HandleTypeDef *hiwdg)
IWDG_InitTypeDef::Reload
uint32_t Reload
Definition: stm32f4xx_hal_iwdg.h:68
IWDG_InitTypeDef
IWDG Init structure definition.
Definition: stm32f4xx_hal_iwdg.h:63
HAL_StatusTypeDef
HAL_StatusTypeDef
HAL Status structures definition.
Definition: stm32f4xx_hal_def.h:55
IWDG_InitTypeDef::Prescaler
uint32_t Prescaler
Definition: stm32f4xx_hal_iwdg.h:65
HAL_IWDG_Refresh
HAL_StatusTypeDef HAL_IWDG_Refresh(IWDG_HandleTypeDef *hiwdg)
IWDG_HandleTypeDef::Instance
IWDG_TypeDef * Instance
Definition: stm32f4xx_hal_iwdg.h:78
IWDG_HandleTypeDef::Init
IWDG_InitTypeDef Init
Definition: stm32f4xx_hal_iwdg.h:80
hiwdg
IWDG_HandleTypeDef hiwdg
Definition: watchdog.h:24