]> git.friedersdorff.com Git - max/tmk_keyboard.git/blob - tmk_core/tool/mbed/mbed-sdk/libraries/mbed/targets/cmsis/TARGET_STM/TARGET_STM32F3/stm32f3xx_hal_wwdg.h
Merge pull request #24 from marknsikora/master
[max/tmk_keyboard.git] / tmk_core / tool / mbed / mbed-sdk / libraries / mbed / targets / cmsis / TARGET_STM / TARGET_STM32F3 / stm32f3xx_hal_wwdg.h
1 /**
2   ******************************************************************************
3   * @file    stm32f3xx_hal_wwdg.h
4   * @author  MCD Application Team
5   * @version V1.1.0
6   * @date    12-Sept-2014
7   * @brief   Header file of WWDG HAL module.
8   ******************************************************************************
9   * @attention
10   *
11   * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
12   *
13   * Redistribution and use in source and binary forms, with or without modification,
14   * are permitted provided that the following conditions are met:
15   *   1. Redistributions of source code must retain the above copyright notice,
16   *      this list of conditions and the following disclaimer.
17   *   2. Redistributions in binary form must reproduce the above copyright notice,
18   *      this list of conditions and the following disclaimer in the documentation
19   *      and/or other materials provided with the distribution.
20   *   3. Neither the name of STMicroelectronics nor the names of its contributors
21   *      may be used to endorse or promote products derived from this software
22   *      without specific prior written permission.
23   *
24   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
27   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
28   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
30   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
31   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
32   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
33   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34   *
35   ******************************************************************************
36   */ 
37
38 /* Define to prevent recursive inclusion -------------------------------------*/
39 #ifndef __STM32F3xx_HAL_WWDG_H
40 #define __STM32F3xx_HAL_WWDG_H
41
42 #ifdef __cplusplus
43  extern "C" {
44 #endif
45
46 /* Includes ------------------------------------------------------------------*/
47 #include "stm32f3xx_hal_def.h"
48
49 /** @addtogroup STM32F3xx_HAL_Driver
50   * @{
51   */
52
53 /** @addtogroup WWDG
54   * @{
55   */ 
56
57 /* Exported types ------------------------------------------------------------*/ 
58
59 /** @defgroup WWDG_Exported_Types WWDG Exported Types
60   * @{
61   */
62 /** 
63   * @brief  WWDG HAL State Structure definition  
64   */ 
65 typedef enum
66 {
67   HAL_WWDG_STATE_RESET     = 0x00,  /*!< WWDG not yet initialized or disabled */
68   HAL_WWDG_STATE_READY     = 0x01,  /*!< WWDG initialized and ready for use   */
69   HAL_WWDG_STATE_BUSY      = 0x02,  /*!< WWDG internal process is ongoing     */ 
70   HAL_WWDG_STATE_TIMEOUT   = 0x03,  /*!< WWDG timeout state                   */
71   HAL_WWDG_STATE_ERROR     = 0x04   /*!< WWDG error state                     */
72     
73 }HAL_WWDG_StateTypeDef;
74
75 /** 
76   * @brief   WWDG Init structure definition  
77   */
78 typedef struct
79 {
80   uint32_t Prescaler;      /*!< Specifies the prescaler value of the WWDG.  
81                                 This parameter can be a value of @ref WWDG_Prescaler */
82
83   uint32_t Window;         /*!< Specifies the WWDG window value to be compared to the downcounter.
84                                 This parameter must be a number lower than Max_Data = 0x80 */ 
85                                
86   uint32_t Counter;        /*!< Specifies the WWDG free-running downcounter  value.
87                                 This parameter must be a number between Min_Data = 0x40 and Max_Data = 0x7F */                                    
88
89 } WWDG_InitTypeDef;
90
91 /** 
92   * @brief  WWDG Handle Structure definition  
93   */ 
94 typedef struct
95 {
96   WWDG_TypeDef                   *Instance;  /*!< Register base address    */ 
97   
98   WWDG_InitTypeDef               Init;       /*!< WWDG required parameters */
99   
100   HAL_LockTypeDef                Lock;       /*!< WWDG Locking object      */
101   
102   __IO HAL_WWDG_StateTypeDef     State;      /*!< WWDG communication state */
103
104 } WWDG_HandleTypeDef;
105
106 /**
107   * @}
108   */
109
110 /* Exported constants --------------------------------------------------------*/
111
112 /** @defgroup WWDG_Exported_Constants WWDG Exported Constants
113   * @{
114   */
115
116 /** @defgroup WWDG_BitAddress_AliasRegion WWDG registers bit address in the alias region
117   * @brief WWDG registers bit address in the alias region
118   * @{
119   */  
120
121 /* --- CFR Register ---*/
122 /* Alias word address of EWI bit */
123 #define CFR_BASE        (uint32_t)(WWDG_BASE + 0x04)
124
125 /**
126   * @}
127   */
128
129 /** @defgroup WWDG_Interrupt_definition WWDG Interrupt definition 
130   * @brief WWDG registers bit address in the alias region
131   * @{
132   */ 
133 #define WWDG_IT_EWI      ((uint32_t)WWDG_CFR_EWI)  
134
135 #define IS_WWDG_IT(__IT__) ((__IT__) == WWDG_IT_EWI)
136
137 /**
138   * @}
139   */
140
141 /** @defgroup WWDG_Flag_definition WWDG Flag definition
142   * @brief WWDG Flag definition
143   * @{
144   */ 
145 #define WWDG_FLAG_EWIF    ((uint32_t)WWDG_SR_EWIF)  /*!< Early Wakeup Interrupt Flag */
146
147 #define IS_WWDG_FLAG(__FLAG__)    ((__FLAG__) == WWDG_FLAG_EWIF)) 
148
149 /**
150   * @}
151   */
152
153 /** @defgroup WWDG_Prescaler WWDG Prescaler
154   * @{
155   */ 
156 #define WWDG_PRESCALER_1    ((uint32_t)0x00000000)  /*!< WWDG counter clock = (PCLK1/4096)/1 */
157 #define WWDG_PRESCALER_2    ((uint32_t)WWDG_CFR_WDGTB0)  /*!< WWDG counter clock = (PCLK1/4096)/2 */
158 #define WWDG_PRESCALER_4    ((uint32_t)WWDG_CFR_WDGTB1)  /*!< WWDG counter clock = (PCLK1/4096)/4 */
159 #define WWDG_PRESCALER_8    ((uint32_t)WWDG_CFR_WDGTB)  /*!< WWDG counter clock = (PCLK1/4096)/8 */
160
161 #define IS_WWDG_PRESCALER(__PRESCALER__) (((__PRESCALER__) == WWDG_PRESCALER_1) || \
162                                           ((__PRESCALER__) == WWDG_PRESCALER_2) || \
163                                           ((__PRESCALER__) == WWDG_PRESCALER_4) || \
164                                           ((__PRESCALER__) == WWDG_PRESCALER_8))
165
166 /**
167   * @}
168   */
169
170 /** @defgroup WWDG_Window WWDG Window
171   * @{
172   */ 
173 #define IS_WWDG_WINDOW(__WINDOW__) ((__WINDOW__) <= 0x7F)
174
175 /**
176   * @}
177   */
178
179 /** @defgroup WWDG_Counter WWDG Counter
180   * @{
181   */ 
182 #define IS_WWDG_COUNTER(__COUNTER__) (((__COUNTER__) >= 0x40) && ((__COUNTER__) <= 0x7F))
183
184 /**
185   * @}
186   */ 
187
188 /**
189   * @}
190   */ 
191   
192 /* Exported macros -----------------------------------------------------------*/
193
194 /** @defgroup WWDG_Exported_Macros WWDG Exported Macros
195  * @{
196  */
197
198 /** @brief Reset WWDG handle state
199   * @param  __HANDLE__: WWDG handle.
200   * @retval None
201   */
202 #define __HAL_WWDG_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_WWDG_STATE_RESET)
203
204 /**
205   * @brief Enable the WWDG peripheral.
206   * @param  __HANDLE__: WWDG handle
207   * @retval None
208   */
209 #define __HAL_WWDG_ENABLE(__HANDLE__) SET_BIT((__HANDLE__)->Instance->CR, WWDG_CR_WDGA)
210
211 /**
212   * @brief Get the selected WWDG's flag status.
213   * @param  __HANDLE__: WWDG handle
214   * @param  __FLAG__: specifies the flag to check.
215   *        This parameter can be one of the following values:
216   *            @arg WWDG_FLAG_EWIF: Early Wakeup Interrupt flag
217   * @retval The new state of WWDG_FLAG (SET or RESET).
218   */
219 #define __HAL_WWDG_GET_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->SR & (__FLAG__)) == (__FLAG__))
220
221 /**
222   * @brief Clear the WWDG's pending flags.
223   * @param  __HANDLE__: WWDG handle
224   * @param  __FLAG__: specifies the flag to clear.
225   *        This parameter can be one of the following values:
226   *            @arg WWDG_FLAG_EWIF: Early Wakeup Interrupt flag
227   * @retval None
228   */
229 #define __HAL_WWDG_CLEAR_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->SR) = ~(__FLAG__))
230
231 /**
232   * @brief  Enable the WWDG early wakeup interrupt.
233   * @note   Once enabled this interrupt cannot be disabled except by a system reset.
234   * @retval None
235   */
236 #define __HAL_WWDG_ENABLE_IT(__INTERRUPT__) (*(__IO uint32_t *) CFR_BASE |= (__INTERRUPT__))
237
238 /** @brief  Clear the WWDG's interrupt pending bits
239   *         bits to clear the selected interrupt pending bits.
240   * @param  __HANDLE__: WWDG handle
241   * @param  __INTERRUPT__: specifies the interrupt pending bit to clear.
242   *         This parameter can be one of the following values:
243   *            @arg WWDG_FLAG_EWIF: Early wakeup interrupt flag
244   */
245 #define __HAL_WWDG_CLEAR_IT(__HANDLE__, __INTERRUPT__) __HAL_WWDG_CLEAR_FLAG((__HANDLE__), (__INTERRUPT__))
246 /**
247   * @}
248   */
249
250 /* Exported functions --------------------------------------------------------*/
251 /** @addtogroup WWDG_Exported_Functions WWDG Exported Functions
252   * @{
253   */
254
255 /** @addtogroup WWDG_Exported_Functions_Group1 Initialization and de-initialization functions
256  *  @brief    Initialization and Configuration functions. 
257  * @{
258  */
259
260 /* Initialization/de-initialization functions  **********************************/
261 HAL_StatusTypeDef HAL_WWDG_Init(WWDG_HandleTypeDef *hwwdg);
262 HAL_StatusTypeDef HAL_WWDG_DeInit(WWDG_HandleTypeDef *hwwdg);
263 void HAL_WWDG_MspInit(WWDG_HandleTypeDef *hwwdg);
264 void HAL_WWDG_MspDeInit(WWDG_HandleTypeDef *hwwdg);
265 void HAL_WWDG_WakeupCallback(WWDG_HandleTypeDef* hwwdg);
266 /**
267   * @}
268   */
269
270 /** @addtogroup WWDG_Exported_Functions_Group2 Input and Output operation functions 
271  *  @brief    I/O operation functions 
272  * @{
273  */
274 /* I/O operation functions ******************************************************/
275 HAL_StatusTypeDef HAL_WWDG_Start(WWDG_HandleTypeDef *hwwdg);
276 HAL_StatusTypeDef HAL_WWDG_Start_IT(WWDG_HandleTypeDef *hwwdg);
277 HAL_StatusTypeDef HAL_WWDG_Refresh(WWDG_HandleTypeDef *hwwdg, uint32_t Counter);
278 void HAL_WWDG_IRQHandler(WWDG_HandleTypeDef *hwwdg);
279 /**
280   * @}
281   */
282
283 /** @addtogroup WWDG_Exported_Functions_Group3 Peripheral State functions 
284  *  @brief    Peripheral State functions. 
285  * @{
286  */
287 /* Peripheral State functions  **************************************************/
288 HAL_WWDG_StateTypeDef HAL_WWDG_GetState(WWDG_HandleTypeDef *hwwdg);
289 /**
290   * @}
291   */
292
293 /**
294   * @}
295   */
296
297 /**
298   * @}
299   */ 
300
301 /**
302   * @}
303   */ 
304
305 #ifdef __cplusplus
306 }
307 #endif
308
309 #endif /* __STM32F3xx_HAL_WWDG_H */
310
311 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/