STM32H735xx HAL User Manual
stm32h7xx_hal_wwdg.h
Go to the documentation of this file.
00001 /**
00002   ******************************************************************************
00003   * @file    stm32h7xx_hal_wwdg.h
00004   * @author  MCD Application Team
00005   * @brief   Header file of WWDG HAL module.
00006   ******************************************************************************
00007   * @attention
00008   *
00009   * Copyright (c) 2017 STMicroelectronics.
00010   * All rights reserved.
00011   *
00012   * This software is licensed under terms that can be found in the LICENSE file
00013   * in the root directory of this software component.
00014   * If no LICENSE file comes with this software, it is provided AS-IS.
00015   *
00016   ******************************************************************************
00017   */
00018 
00019 /* Define to prevent recursive inclusion -------------------------------------*/
00020 #ifndef STM32H7xx_HAL_WWDG_H
00021 #define STM32H7xx_HAL_WWDG_H
00022 
00023 #ifdef __cplusplus
00024 extern "C" {
00025 #endif
00026 
00027 /* Includes ------------------------------------------------------------------*/
00028 #include "stm32h7xx_hal_def.h"
00029 
00030 /** @addtogroup STM32H7xx_HAL_Driver
00031   * @{
00032   */
00033 
00034 /** @addtogroup WWDG
00035   * @{
00036   */
00037 
00038 /* Exported types ------------------------------------------------------------*/
00039 
00040 /** @defgroup WWDG_Exported_Types WWDG Exported Types
00041   * @{
00042   */
00043 
00044 /**
00045   * @brief  WWDG Init structure definition
00046   */
00047 typedef struct
00048 {
00049   uint32_t Prescaler;     /*!< Specifies the prescaler value of the WWDG.
00050                                This parameter can be a value of @ref WWDG_Prescaler */
00051 
00052   uint32_t Window;        /*!< Specifies the WWDG window value to be compared to the downcounter.
00053                                This parameter must be a number Min_Data = 0x40 and Max_Data = 0x7F */
00054 
00055   uint32_t Counter;       /*!< Specifies the WWDG free-running downcounter  value.
00056                                This parameter must be a number between Min_Data = 0x40 and Max_Data = 0x7F */
00057 
00058   uint32_t EWIMode ;      /*!< Specifies if WWDG Early Wakeup Interrupt is enable or not.
00059                                This parameter can be a value of @ref WWDG_EWI_Mode */
00060 
00061 } WWDG_InitTypeDef;
00062 
00063 /**
00064   * @brief  WWDG handle Structure definition
00065   */
00066 #if (USE_HAL_WWDG_REGISTER_CALLBACKS == 1)
00067 typedef struct __WWDG_HandleTypeDef
00068 #else
00069 typedef struct
00070 #endif /* USE_HAL_WWDG_REGISTER_CALLBACKS */
00071 {
00072   WWDG_TypeDef      *Instance;  /*!< Register base address */
00073 
00074   WWDG_InitTypeDef  Init;       /*!< WWDG required parameters */
00075 
00076 #if (USE_HAL_WWDG_REGISTER_CALLBACKS == 1)
00077   void (* EwiCallback)(struct __WWDG_HandleTypeDef *hwwdg);                  /*!< WWDG Early WakeUp Interrupt callback */
00078 
00079   void (* MspInitCallback)(struct __WWDG_HandleTypeDef *hwwdg);              /*!< WWDG Msp Init callback */
00080 #endif /* USE_HAL_WWDG_REGISTER_CALLBACKS */
00081 } WWDG_HandleTypeDef;
00082 
00083 #if (USE_HAL_WWDG_REGISTER_CALLBACKS == 1)
00084 /**
00085   * @brief  HAL WWDG common Callback ID enumeration definition
00086   */
00087 typedef enum
00088 {
00089   HAL_WWDG_EWI_CB_ID          = 0x00U,    /*!< WWDG EWI callback ID */
00090   HAL_WWDG_MSPINIT_CB_ID      = 0x01U,    /*!< WWDG MspInit callback ID */
00091 } HAL_WWDG_CallbackIDTypeDef;
00092 
00093 /**
00094   * @brief  HAL WWDG Callback pointer definition
00095   */
00096 typedef void (*pWWDG_CallbackTypeDef)(WWDG_HandleTypeDef *hppp);  /*!< pointer to a WWDG common callback functions */
00097 
00098 #endif /* USE_HAL_WWDG_REGISTER_CALLBACKS */
00099 /**
00100   * @}
00101   */
00102 
00103 /* Exported constants --------------------------------------------------------*/
00104 
00105 /** @defgroup WWDG_Exported_Constants WWDG Exported Constants
00106   * @{
00107   */
00108 
00109 /** @defgroup WWDG_Interrupt_definition WWDG Interrupt definition
00110   * @{
00111   */
00112 #define WWDG_IT_EWI                         WWDG_CFR_EWI  /*!< Early wakeup interrupt */
00113 /**
00114   * @}
00115   */
00116 
00117 /** @defgroup WWDG_Flag_definition WWDG Flag definition
00118   * @brief WWDG Flag definition
00119   * @{
00120   */
00121 #define WWDG_FLAG_EWIF                      WWDG_SR_EWIF  /*!< Early wakeup interrupt flag */
00122 /**
00123   * @}
00124   */
00125 
00126 /** @defgroup WWDG_Prescaler WWDG Prescaler
00127   * @{
00128   */
00129 #define WWDG_PRESCALER_1                    0x00000000u                              /*!< WWDG counter clock = (PCLK1/4096)/1 */
00130 #define WWDG_PRESCALER_2                    WWDG_CFR_WDGTB_0                         /*!< WWDG counter clock = (PCLK1/4096)/2 */
00131 #define WWDG_PRESCALER_4                    WWDG_CFR_WDGTB_1                         /*!< WWDG counter clock = (PCLK1/4096)/4 */
00132 #define WWDG_PRESCALER_8                    (WWDG_CFR_WDGTB_1 | WWDG_CFR_WDGTB_0)    /*!< WWDG counter clock = (PCLK1/4096)/8 */
00133 #define WWDG_PRESCALER_16                   WWDG_CFR_WDGTB_2                         /*!< WWDG counter clock = (PCLK1/4096)/16 */
00134 #define WWDG_PRESCALER_32                   (WWDG_CFR_WDGTB_2 | WWDG_CFR_WDGTB_0)    /*!< WWDG counter clock = (PCLK1/4096)/32 */
00135 #define WWDG_PRESCALER_64                   (WWDG_CFR_WDGTB_2 | WWDG_CFR_WDGTB_1)    /*!< WWDG counter clock = (PCLK1/4096)/64 */
00136 #define WWDG_PRESCALER_128                  WWDG_CFR_WDGTB                           /*!< WWDG counter clock = (PCLK1/4096)/128 */
00137 /**
00138   * @}
00139   */
00140 
00141 /** @defgroup WWDG_EWI_Mode WWDG Early Wakeup Interrupt Mode
00142   * @{
00143   */
00144 #define WWDG_EWI_DISABLE                    0x00000000u       /*!< EWI Disable */
00145 #define WWDG_EWI_ENABLE                     WWDG_CFR_EWI      /*!< EWI Enable */
00146 /**
00147   * @}
00148   */
00149 
00150 /**
00151   * @}
00152   */
00153 
00154 /* Private macros ------------------------------------------------------------*/
00155 
00156 /** @defgroup WWDG_Private_Macros WWDG Private Macros
00157   * @{
00158   */
00159 #define IS_WWDG_PRESCALER(__PRESCALER__)    (((__PRESCALER__) == WWDG_PRESCALER_1)  || \
00160                                              ((__PRESCALER__) == WWDG_PRESCALER_2)  || \
00161                                              ((__PRESCALER__) == WWDG_PRESCALER_4)  || \
00162                                              ((__PRESCALER__) == WWDG_PRESCALER_8)  || \
00163                                              ((__PRESCALER__) == WWDG_PRESCALER_16) || \
00164                                              ((__PRESCALER__) == WWDG_PRESCALER_32) || \
00165                                              ((__PRESCALER__) == WWDG_PRESCALER_64) || \
00166                                              ((__PRESCALER__) == WWDG_PRESCALER_128))
00167 
00168 #define IS_WWDG_WINDOW(__WINDOW__)          (((__WINDOW__) >= WWDG_CFR_W_6) && ((__WINDOW__) <= WWDG_CFR_W))
00169 
00170 #define IS_WWDG_COUNTER(__COUNTER__)        (((__COUNTER__) >= WWDG_CR_T_6) && ((__COUNTER__) <= WWDG_CR_T))
00171 
00172 #define IS_WWDG_EWI_MODE(__MODE__)          (((__MODE__) == WWDG_EWI_ENABLE) || \
00173                                              ((__MODE__) == WWDG_EWI_DISABLE))
00174 /**
00175   * @}
00176   */
00177 
00178 
00179 /* Exported macros ------------------------------------------------------------*/
00180 
00181 /** @defgroup WWDG_Exported_Macros WWDG Exported Macros
00182   * @{
00183   */
00184 
00185 /**
00186   * @brief  Enable the WWDG peripheral.
00187   * @param  __HANDLE__  WWDG handle
00188   * @retval None
00189   */
00190 #define __HAL_WWDG_ENABLE(__HANDLE__)                         SET_BIT((__HANDLE__)->Instance->CR, WWDG_CR_WDGA)
00191 
00192 /**
00193   * @brief  Enable the WWDG early wakeup interrupt.
00194   * @param  __HANDLE__     WWDG handle
00195   * @param  __INTERRUPT__  specifies the interrupt to enable.
00196   *         This parameter can be one of the following values:
00197   *            @arg WWDG_IT_EWI: Early wakeup interrupt
00198   * @note   Once enabled this interrupt cannot be disabled except by a system reset.
00199   * @retval None
00200   */
00201 #define __HAL_WWDG_ENABLE_IT(__HANDLE__, __INTERRUPT__)       SET_BIT((__HANDLE__)->Instance->CFR, (__INTERRUPT__))
00202 
00203 /**
00204   * @brief  Check whether the selected WWDG interrupt has occurred or not.
00205   * @param  __HANDLE__  WWDG handle
00206   * @param  __INTERRUPT__  specifies the it to check.
00207   *        This parameter can be one of the following values:
00208   *            @arg WWDG_FLAG_EWIF: Early wakeup interrupt IT
00209   * @retval The new state of WWDG_FLAG (SET or RESET).
00210   */
00211 #define __HAL_WWDG_GET_IT(__HANDLE__, __INTERRUPT__)        __HAL_WWDG_GET_FLAG((__HANDLE__),(__INTERRUPT__))
00212 
00213 /** @brief  Clear the WWDG interrupt pending bits.
00214   *         bits to clear the selected interrupt pending bits.
00215   * @param  __HANDLE__  WWDG handle
00216   * @param  __INTERRUPT__  specifies the interrupt pending bit to clear.
00217   *         This parameter can be one of the following values:
00218   *            @arg WWDG_FLAG_EWIF: Early wakeup interrupt flag
00219   */
00220 #define __HAL_WWDG_CLEAR_IT(__HANDLE__, __INTERRUPT__)      __HAL_WWDG_CLEAR_FLAG((__HANDLE__), (__INTERRUPT__))
00221 
00222 /**
00223   * @brief  Check whether the specified WWDG flag is set or not.
00224   * @param  __HANDLE__  WWDG handle
00225   * @param  __FLAG__  specifies the flag to check.
00226   *         This parameter can be one of the following values:
00227   *            @arg WWDG_FLAG_EWIF: Early wakeup interrupt flag
00228   * @retval The new state of WWDG_FLAG (SET or RESET).
00229   */
00230 #define __HAL_WWDG_GET_FLAG(__HANDLE__, __FLAG__)           (((__HANDLE__)->Instance->SR & (__FLAG__)) == (__FLAG__))
00231 
00232 /**
00233   * @brief  Clear the WWDG's pending flags.
00234   * @param  __HANDLE__  WWDG handle
00235   * @param  __FLAG__  specifies the flag to clear.
00236   *         This parameter can be one of the following values:
00237   *            @arg WWDG_FLAG_EWIF: Early wakeup interrupt flag
00238   * @retval None
00239   */
00240 #define __HAL_WWDG_CLEAR_FLAG(__HANDLE__, __FLAG__)         ((__HANDLE__)->Instance->SR = ~(__FLAG__))
00241 
00242 /** @brief  Check whether the specified WWDG interrupt source is enabled or not.
00243   * @param  __HANDLE__  WWDG Handle.
00244   * @param  __INTERRUPT__  specifies the WWDG interrupt source to check.
00245   *         This parameter can be one of the following values:
00246   *            @arg WWDG_IT_EWI: Early Wakeup Interrupt
00247   * @retval state of __INTERRUPT__ (TRUE or FALSE).
00248   */
00249 #define __HAL_WWDG_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->CFR\
00250                                                               & (__INTERRUPT__)) == (__INTERRUPT__))
00251 
00252 /**
00253   * @}
00254   */
00255 
00256 /* Exported functions --------------------------------------------------------*/
00257 
00258 /** @addtogroup WWDG_Exported_Functions
00259   * @{
00260   */
00261 
00262 /** @addtogroup WWDG_Exported_Functions_Group1
00263   * @{
00264   */
00265 /* Initialization/de-initialization functions  **********************************/
00266 HAL_StatusTypeDef     HAL_WWDG_Init(WWDG_HandleTypeDef *hwwdg);
00267 void                  HAL_WWDG_MspInit(WWDG_HandleTypeDef *hwwdg);
00268 /* Callbacks Register/UnRegister functions  ***********************************/
00269 #if (USE_HAL_WWDG_REGISTER_CALLBACKS == 1)
00270 HAL_StatusTypeDef     HAL_WWDG_RegisterCallback(WWDG_HandleTypeDef *hwwdg, HAL_WWDG_CallbackIDTypeDef CallbackID,
00271                                                 pWWDG_CallbackTypeDef pCallback);
00272 HAL_StatusTypeDef     HAL_WWDG_UnRegisterCallback(WWDG_HandleTypeDef *hwwdg, HAL_WWDG_CallbackIDTypeDef CallbackID);
00273 #endif /* USE_HAL_WWDG_REGISTER_CALLBACKS */
00274 
00275 /**
00276   * @}
00277   */
00278 
00279 /** @addtogroup WWDG_Exported_Functions_Group2
00280   * @{
00281   */
00282 /* I/O operation functions ******************************************************/
00283 HAL_StatusTypeDef     HAL_WWDG_Refresh(WWDG_HandleTypeDef *hwwdg);
00284 void                  HAL_WWDG_IRQHandler(WWDG_HandleTypeDef *hwwdg);
00285 void                  HAL_WWDG_EarlyWakeupCallback(WWDG_HandleTypeDef *hwwdg);
00286 /**
00287   * @}
00288   */
00289 
00290 /**
00291   * @}
00292   */
00293 
00294 /**
00295   * @}
00296   */
00297 
00298 /**
00299   * @}
00300   */
00301 
00302 #ifdef __cplusplus
00303 }
00304 #endif
00305 
00306 #endif /* STM32H7xx_HAL_WWDG_H */