Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:23:36

0001 /**
0002   ******************************************************************************
0003   * @file    stm32h7xx_hal_wwdg.h
0004   * @author  MCD Application Team
0005   * @brief   Header file of WWDG HAL module.
0006   ******************************************************************************
0007   * @attention
0008   *
0009   * Copyright (c) 2017 STMicroelectronics.
0010   * All rights reserved.
0011   *
0012   * This software is licensed under terms that can be found in the LICENSE file
0013   * in the root directory of this software component.
0014   * If no LICENSE file comes with this software, it is provided AS-IS.
0015   *
0016   ******************************************************************************
0017   */
0018 
0019 /* Define to prevent recursive inclusion -------------------------------------*/
0020 #ifndef STM32H7xx_HAL_WWDG_H
0021 #define STM32H7xx_HAL_WWDG_H
0022 
0023 #ifdef __cplusplus
0024 extern "C" {
0025 #endif
0026 
0027 /* Includes ------------------------------------------------------------------*/
0028 #include "stm32h7xx_hal_def.h"
0029 
0030 /** @addtogroup STM32H7xx_HAL_Driver
0031   * @{
0032   */
0033 
0034 /** @addtogroup WWDG
0035   * @{
0036   */
0037 
0038 /* Exported types ------------------------------------------------------------*/
0039 
0040 /** @defgroup WWDG_Exported_Types WWDG Exported Types
0041   * @ingroup RTEMSBSPsARMSTM32H7
0042   * @{
0043   */
0044 
0045 /**
0046   * @brief  WWDG Init structure definition
0047   */
0048 typedef struct
0049 {
0050   uint32_t Prescaler;     /*!< Specifies the prescaler value of the WWDG.
0051                                This parameter can be a value of @ref WWDG_Prescaler */
0052 
0053   uint32_t Window;        /*!< Specifies the WWDG window value to be compared to the downcounter.
0054                                This parameter must be a number Min_Data = 0x40 and Max_Data = 0x7F */
0055 
0056   uint32_t Counter;       /*!< Specifies the WWDG free-running downcounter  value.
0057                                This parameter must be a number between Min_Data = 0x40 and Max_Data = 0x7F */
0058 
0059   uint32_t EWIMode ;      /*!< Specifies if WWDG Early Wakeup Interrupt is enable or not.
0060                                This parameter can be a value of @ref WWDG_EWI_Mode */
0061 
0062 } WWDG_InitTypeDef;
0063 
0064 /**
0065   * @brief  WWDG handle Structure definition
0066   */
0067 #if (USE_HAL_WWDG_REGISTER_CALLBACKS == 1)
0068 typedef struct __WWDG_HandleTypeDef
0069 #else
0070 typedef struct
0071 #endif /* USE_HAL_WWDG_REGISTER_CALLBACKS */
0072 {
0073   WWDG_TypeDef      *Instance;  /*!< Register base address */
0074 
0075   WWDG_InitTypeDef  Init;       /*!< WWDG required parameters */
0076 
0077 #if (USE_HAL_WWDG_REGISTER_CALLBACKS == 1)
0078   void (* EwiCallback)(struct __WWDG_HandleTypeDef *hwwdg);                  /*!< WWDG Early WakeUp Interrupt callback */
0079 
0080   void (* MspInitCallback)(struct __WWDG_HandleTypeDef *hwwdg);              /*!< WWDG Msp Init callback */
0081 #endif /* USE_HAL_WWDG_REGISTER_CALLBACKS */
0082 } WWDG_HandleTypeDef;
0083 
0084 #if (USE_HAL_WWDG_REGISTER_CALLBACKS == 1)
0085 /**
0086   * @brief  HAL WWDG common Callback ID enumeration definition
0087   */
0088 typedef enum
0089 {
0090   HAL_WWDG_EWI_CB_ID          = 0x00U,    /*!< WWDG EWI callback ID */
0091   HAL_WWDG_MSPINIT_CB_ID      = 0x01U,    /*!< WWDG MspInit callback ID */
0092 } HAL_WWDG_CallbackIDTypeDef;
0093 
0094 /**
0095   * @brief  HAL WWDG Callback pointer definition
0096   */
0097 typedef void (*pWWDG_CallbackTypeDef)(WWDG_HandleTypeDef *hppp);  /*!< pointer to a WWDG common callback functions */
0098 
0099 #endif /* USE_HAL_WWDG_REGISTER_CALLBACKS */
0100 /**
0101   * @}
0102   */
0103 
0104 /* Exported constants --------------------------------------------------------*/
0105 
0106 /** @defgroup WWDG_Exported_Constants WWDG Exported Constants
0107   * @ingroup RTEMSBSPsARMSTM32H7
0108   * @{
0109   */
0110 
0111 /** @defgroup WWDG_Interrupt_definition WWDG Interrupt definition
0112   * @ingroup RTEMSBSPsARMSTM32H7
0113   * @{
0114   */
0115 #define WWDG_IT_EWI                         WWDG_CFR_EWI  /*!< Early wakeup interrupt */
0116 /**
0117   * @}
0118   */
0119 
0120 /** @defgroup WWDG_Flag_definition WWDG Flag definition
0121   * @ingroup RTEMSBSPsARMSTM32H7
0122   * @brief WWDG Flag definition
0123   * @{
0124   */
0125 #define WWDG_FLAG_EWIF                      WWDG_SR_EWIF  /*!< Early wakeup interrupt flag */
0126 /**
0127   * @}
0128   */
0129 
0130 /** @defgroup WWDG_Prescaler WWDG Prescaler
0131   * @ingroup RTEMSBSPsARMSTM32H7
0132   * @{
0133   */
0134 #define WWDG_PRESCALER_1                    0x00000000u                              /*!< WWDG counter clock = (PCLK1/4096)/1 */
0135 #define WWDG_PRESCALER_2                    WWDG_CFR_WDGTB_0                         /*!< WWDG counter clock = (PCLK1/4096)/2 */
0136 #define WWDG_PRESCALER_4                    WWDG_CFR_WDGTB_1                         /*!< WWDG counter clock = (PCLK1/4096)/4 */
0137 #define WWDG_PRESCALER_8                    (WWDG_CFR_WDGTB_1 | WWDG_CFR_WDGTB_0)    /*!< WWDG counter clock = (PCLK1/4096)/8 */
0138 #define WWDG_PRESCALER_16                   WWDG_CFR_WDGTB_2                         /*!< WWDG counter clock = (PCLK1/4096)/16 */
0139 #define WWDG_PRESCALER_32                   (WWDG_CFR_WDGTB_2 | WWDG_CFR_WDGTB_0)    /*!< WWDG counter clock = (PCLK1/4096)/32 */
0140 #define WWDG_PRESCALER_64                   (WWDG_CFR_WDGTB_2 | WWDG_CFR_WDGTB_1)    /*!< WWDG counter clock = (PCLK1/4096)/64 */
0141 #define WWDG_PRESCALER_128                  WWDG_CFR_WDGTB                           /*!< WWDG counter clock = (PCLK1/4096)/128 */
0142 /**
0143   * @}
0144   */
0145 
0146 /** @defgroup WWDG_EWI_Mode WWDG Early Wakeup Interrupt Mode
0147   * @ingroup RTEMSBSPsARMSTM32H7
0148   * @{
0149   */
0150 #define WWDG_EWI_DISABLE                    0x00000000u       /*!< EWI Disable */
0151 #define WWDG_EWI_ENABLE                     WWDG_CFR_EWI      /*!< EWI Enable */
0152 /**
0153   * @}
0154   */
0155 
0156 /**
0157   * @}
0158   */
0159 
0160 /* Private macros ------------------------------------------------------------*/
0161 
0162 /** @defgroup WWDG_Private_Macros WWDG Private Macros
0163   * @ingroup RTEMSBSPsARMSTM32H7
0164   * @{
0165   */
0166 #define IS_WWDG_PRESCALER(__PRESCALER__)    (((__PRESCALER__) == WWDG_PRESCALER_1)  || \
0167                                              ((__PRESCALER__) == WWDG_PRESCALER_2)  || \
0168                                              ((__PRESCALER__) == WWDG_PRESCALER_4)  || \
0169                                              ((__PRESCALER__) == WWDG_PRESCALER_8)  || \
0170                                              ((__PRESCALER__) == WWDG_PRESCALER_16) || \
0171                                              ((__PRESCALER__) == WWDG_PRESCALER_32) || \
0172                                              ((__PRESCALER__) == WWDG_PRESCALER_64) || \
0173                                              ((__PRESCALER__) == WWDG_PRESCALER_128))
0174 
0175 #define IS_WWDG_WINDOW(__WINDOW__)          (((__WINDOW__) >= WWDG_CFR_W_6) && ((__WINDOW__) <= WWDG_CFR_W))
0176 
0177 #define IS_WWDG_COUNTER(__COUNTER__)        (((__COUNTER__) >= WWDG_CR_T_6) && ((__COUNTER__) <= WWDG_CR_T))
0178 
0179 #define IS_WWDG_EWI_MODE(__MODE__)          (((__MODE__) == WWDG_EWI_ENABLE) || \
0180                                              ((__MODE__) == WWDG_EWI_DISABLE))
0181 /**
0182   * @}
0183   */
0184 
0185 
0186 /* Exported macros ------------------------------------------------------------*/
0187 
0188 /** @defgroup WWDG_Exported_Macros WWDG Exported Macros
0189   * @ingroup RTEMSBSPsARMSTM32H7
0190   * @{
0191   */
0192 
0193 /**
0194   * @brief  Enable the WWDG peripheral.
0195   * @param  __HANDLE__  WWDG handle
0196   * @retval None
0197   */
0198 #define __HAL_WWDG_ENABLE(__HANDLE__)                         SET_BIT((__HANDLE__)->Instance->CR, WWDG_CR_WDGA)
0199 
0200 /**
0201   * @brief  Enable the WWDG early wakeup interrupt.
0202   * @param  __HANDLE__     WWDG handle
0203   * @param  __INTERRUPT__  specifies the interrupt to enable.
0204   *         This parameter can be one of the following values:
0205   *            @arg WWDG_IT_EWI: Early wakeup interrupt
0206   * @note   Once enabled this interrupt cannot be disabled except by a system reset.
0207   * @retval None
0208   */
0209 #define __HAL_WWDG_ENABLE_IT(__HANDLE__, __INTERRUPT__)       SET_BIT((__HANDLE__)->Instance->CFR, (__INTERRUPT__))
0210 
0211 /**
0212   * @brief  Check whether the selected WWDG interrupt has occurred or not.
0213   * @param  __HANDLE__  WWDG handle
0214   * @param  __INTERRUPT__  specifies the it to check.
0215   *        This parameter can be one of the following values:
0216   *            @arg WWDG_FLAG_EWIF: Early wakeup interrupt IT
0217   * @retval The new state of WWDG_FLAG (SET or RESET).
0218   */
0219 #define __HAL_WWDG_GET_IT(__HANDLE__, __INTERRUPT__)        __HAL_WWDG_GET_FLAG((__HANDLE__),(__INTERRUPT__))
0220 
0221 /** @brief  Clear the WWDG interrupt pending bits.
0222   *         bits to clear the selected interrupt pending bits.
0223   * @param  __HANDLE__  WWDG handle
0224   * @param  __INTERRUPT__  specifies the interrupt pending bit to clear.
0225   *         This parameter can be one of the following values:
0226   *            @arg WWDG_FLAG_EWIF: Early wakeup interrupt flag
0227   */
0228 #define __HAL_WWDG_CLEAR_IT(__HANDLE__, __INTERRUPT__)      __HAL_WWDG_CLEAR_FLAG((__HANDLE__), (__INTERRUPT__))
0229 
0230 /**
0231   * @brief  Check whether the specified WWDG flag is set or not.
0232   * @param  __HANDLE__  WWDG handle
0233   * @param  __FLAG__  specifies the flag to check.
0234   *         This parameter can be one of the following values:
0235   *            @arg WWDG_FLAG_EWIF: Early wakeup interrupt flag
0236   * @retval The new state of WWDG_FLAG (SET or RESET).
0237   */
0238 #define __HAL_WWDG_GET_FLAG(__HANDLE__, __FLAG__)           (((__HANDLE__)->Instance->SR & (__FLAG__)) == (__FLAG__))
0239 
0240 /**
0241   * @brief  Clear the WWDG's pending flags.
0242   * @param  __HANDLE__  WWDG handle
0243   * @param  __FLAG__  specifies the flag to clear.
0244   *         This parameter can be one of the following values:
0245   *            @arg WWDG_FLAG_EWIF: Early wakeup interrupt flag
0246   * @retval None
0247   */
0248 #define __HAL_WWDG_CLEAR_FLAG(__HANDLE__, __FLAG__)         ((__HANDLE__)->Instance->SR = ~(__FLAG__))
0249 
0250 /** @brief  Check whether the specified WWDG interrupt source is enabled or not.
0251   * @param  __HANDLE__  WWDG Handle.
0252   * @param  __INTERRUPT__  specifies the WWDG interrupt source to check.
0253   *         This parameter can be one of the following values:
0254   *            @arg WWDG_IT_EWI: Early Wakeup Interrupt
0255   * @retval state of __INTERRUPT__ (TRUE or FALSE).
0256   */
0257 #define __HAL_WWDG_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->CFR\
0258                                                               & (__INTERRUPT__)) == (__INTERRUPT__))
0259 
0260 /**
0261   * @}
0262   */
0263 
0264 /* Exported functions --------------------------------------------------------*/
0265 
0266 /** @addtogroup WWDG_Exported_Functions
0267   * @{
0268   */
0269 
0270 /** @addtogroup WWDG_Exported_Functions_Group1
0271   * @{
0272   */
0273 /* Initialization/de-initialization functions  **********************************/
0274 HAL_StatusTypeDef     HAL_WWDG_Init(WWDG_HandleTypeDef *hwwdg);
0275 void                  HAL_WWDG_MspInit(WWDG_HandleTypeDef *hwwdg);
0276 /* Callbacks Register/UnRegister functions  ***********************************/
0277 #if (USE_HAL_WWDG_REGISTER_CALLBACKS == 1)
0278 HAL_StatusTypeDef     HAL_WWDG_RegisterCallback(WWDG_HandleTypeDef *hwwdg, HAL_WWDG_CallbackIDTypeDef CallbackID,
0279                                                 pWWDG_CallbackTypeDef pCallback);
0280 HAL_StatusTypeDef     HAL_WWDG_UnRegisterCallback(WWDG_HandleTypeDef *hwwdg, HAL_WWDG_CallbackIDTypeDef CallbackID);
0281 #endif /* USE_HAL_WWDG_REGISTER_CALLBACKS */
0282 
0283 /**
0284   * @}
0285   */
0286 
0287 /** @addtogroup WWDG_Exported_Functions_Group2
0288   * @{
0289   */
0290 /* I/O operation functions ******************************************************/
0291 HAL_StatusTypeDef     HAL_WWDG_Refresh(WWDG_HandleTypeDef *hwwdg);
0292 void                  HAL_WWDG_IRQHandler(WWDG_HandleTypeDef *hwwdg);
0293 void                  HAL_WWDG_EarlyWakeupCallback(WWDG_HandleTypeDef *hwwdg);
0294 /**
0295   * @}
0296   */
0297 
0298 /**
0299   * @}
0300   */
0301 
0302 /**
0303   * @}
0304   */
0305 
0306 /**
0307   * @}
0308   */
0309 
0310 #ifdef __cplusplus
0311 }
0312 #endif
0313 
0314 #endif /* STM32H7xx_HAL_WWDG_H */