Back to home page

LXR

 
 

    


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

0001 /**
0002   ******************************************************************************
0003   * @file    stm32h7xx_hal_iwdg.h
0004   * @author  MCD Application Team
0005   * @brief   Header file of IWDG 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_IWDG_H
0021 #define STM32H7xx_HAL_IWDG_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 /** @defgroup IWDG IWDG
0035   * @ingroup RTEMSBSPsARMSTM32H7
0036   * @{
0037   */
0038 
0039 /* Exported types ------------------------------------------------------------*/
0040 /** @defgroup IWDG_Exported_Types IWDG Exported Types
0041   * @ingroup RTEMSBSPsARMSTM32H7
0042   * @{
0043   */
0044 
0045 /**
0046   * @brief  IWDG Init structure definition
0047   */
0048 typedef struct
0049 {
0050   uint32_t Prescaler;  /*!< Select the prescaler of the IWDG.
0051                             This parameter can be a value of @ref IWDG_Prescaler */
0052 
0053   uint32_t Reload;     /*!< Specifies the IWDG down-counter reload value.
0054                             This parameter must be a number between Min_Data = 0 and Max_Data = 0x0FFF */
0055 
0056   uint32_t Window;     /*!< Specifies the window value to be compared to the down-counter.
0057                             This parameter must be a number between Min_Data = 0 and Max_Data = 0x0FFF */
0058 
0059 } IWDG_InitTypeDef;
0060 
0061 /**
0062   * @brief  IWDG Handle Structure definition
0063   */
0064 typedef struct
0065 {
0066   IWDG_TypeDef                 *Instance;  /*!< Register base address    */
0067 
0068   IWDG_InitTypeDef             Init;       /*!< IWDG required parameters */
0069 } IWDG_HandleTypeDef;
0070 
0071 
0072 /**
0073   * @}
0074   */
0075 
0076 /* Exported constants --------------------------------------------------------*/
0077 /** @defgroup IWDG_Exported_Constants IWDG Exported Constants
0078   * @ingroup RTEMSBSPsARMSTM32H7
0079   * @{
0080   */
0081 
0082 /** @defgroup IWDG_Prescaler IWDG Prescaler
0083   * @ingroup RTEMSBSPsARMSTM32H7
0084   * @{
0085   */
0086 #define IWDG_PRESCALER_4                0x00000000u                                     /*!< IWDG prescaler set to 4   */
0087 #define IWDG_PRESCALER_8                IWDG_PR_PR_0                                    /*!< IWDG prescaler set to 8   */
0088 #define IWDG_PRESCALER_16               IWDG_PR_PR_1                                    /*!< IWDG prescaler set to 16  */
0089 #define IWDG_PRESCALER_32               (IWDG_PR_PR_1 | IWDG_PR_PR_0)                   /*!< IWDG prescaler set to 32  */
0090 #define IWDG_PRESCALER_64               IWDG_PR_PR_2                                    /*!< IWDG prescaler set to 64  */
0091 #define IWDG_PRESCALER_128              (IWDG_PR_PR_2 | IWDG_PR_PR_0)                   /*!< IWDG prescaler set to 128 */
0092 #define IWDG_PRESCALER_256              (IWDG_PR_PR_2 | IWDG_PR_PR_1)                   /*!< IWDG prescaler set to 256 */
0093 /**
0094   * @}
0095   */
0096 
0097 /** @defgroup IWDG_Window_option IWDG Window option
0098   * @ingroup RTEMSBSPsARMSTM32H7
0099   * @{
0100   */
0101 #define IWDG_WINDOW_DISABLE             IWDG_WINR_WIN
0102 /**
0103   * @}
0104   */
0105 
0106 /**
0107   * @}
0108   */
0109 
0110 /* Exported macros -----------------------------------------------------------*/
0111 /** @defgroup IWDG_Exported_Macros IWDG Exported Macros
0112   * @ingroup RTEMSBSPsARMSTM32H7
0113   * @{
0114   */
0115 
0116 /**
0117   * @brief  Enable the IWDG peripheral.
0118   * @param  __HANDLE__  IWDG handle
0119   * @retval None
0120   */
0121 #define __HAL_IWDG_START(__HANDLE__)                WRITE_REG((__HANDLE__)->Instance->KR, IWDG_KEY_ENABLE)
0122 
0123 /**
0124   * @brief  Reload IWDG counter with value defined in the reload register
0125   *         (write access to IWDG_PR, IWDG_RLR and IWDG_WINR registers disabled).
0126   * @param  __HANDLE__  IWDG handle
0127   * @retval None
0128   */
0129 #define __HAL_IWDG_RELOAD_COUNTER(__HANDLE__)       WRITE_REG((__HANDLE__)->Instance->KR, IWDG_KEY_RELOAD)
0130 
0131 /**
0132   * @}
0133   */
0134 
0135 /* Exported functions --------------------------------------------------------*/
0136 /** @defgroup IWDG_Exported_Functions  IWDG Exported Functions
0137   * @ingroup RTEMSBSPsARMSTM32H7
0138   * @{
0139   */
0140 
0141 /** @defgroup IWDG_Exported_Functions_Group1 Initialization and Start functions
0142   * @ingroup RTEMSBSPsARMSTM32H7
0143   * @{
0144   */
0145 /* Initialization/Start functions  ********************************************/
0146 HAL_StatusTypeDef     HAL_IWDG_Init(IWDG_HandleTypeDef *hiwdg);
0147 /**
0148   * @}
0149   */
0150 
0151 /** @defgroup IWDG_Exported_Functions_Group2 IO operation functions
0152   * @ingroup RTEMSBSPsARMSTM32H7
0153   * @{
0154   */
0155 /* I/O operation functions ****************************************************/
0156 HAL_StatusTypeDef     HAL_IWDG_Refresh(IWDG_HandleTypeDef *hiwdg);
0157 /**
0158   * @}
0159   */
0160 
0161 /**
0162   * @}
0163   */
0164 
0165 /* Private constants ---------------------------------------------------------*/
0166 /** @defgroup IWDG_Private_Constants IWDG Private Constants
0167   * @ingroup RTEMSBSPsARMSTM32H7
0168   * @{
0169   */
0170 
0171 /**
0172   * @brief  IWDG Key Register BitMask
0173   */
0174 #define IWDG_KEY_RELOAD                 0x0000AAAAu  /*!< IWDG Reload Counter Enable   */
0175 #define IWDG_KEY_ENABLE                 0x0000CCCCu  /*!< IWDG Peripheral Enable       */
0176 #define IWDG_KEY_WRITE_ACCESS_ENABLE    0x00005555u  /*!< IWDG KR Write Access Enable  */
0177 #define IWDG_KEY_WRITE_ACCESS_DISABLE   0x00000000u  /*!< IWDG KR Write Access Disable */
0178 
0179 /**
0180   * @}
0181   */
0182 
0183 /* Private macros ------------------------------------------------------------*/
0184 /** @defgroup IWDG_Private_Macros IWDG Private Macros
0185   * @ingroup RTEMSBSPsARMSTM32H7
0186   * @{
0187   */
0188 
0189 /**
0190   * @brief  Enable write access to IWDG_PR, IWDG_RLR and IWDG_WINR registers.
0191   * @param  __HANDLE__  IWDG handle
0192   * @retval None
0193   */
0194 #define IWDG_ENABLE_WRITE_ACCESS(__HANDLE__)  WRITE_REG((__HANDLE__)->Instance->KR, IWDG_KEY_WRITE_ACCESS_ENABLE)
0195 
0196 /**
0197   * @brief  Disable write access to IWDG_PR, IWDG_RLR and IWDG_WINR registers.
0198   * @param  __HANDLE__  IWDG handle
0199   * @retval None
0200   */
0201 #define IWDG_DISABLE_WRITE_ACCESS(__HANDLE__) WRITE_REG((__HANDLE__)->Instance->KR, IWDG_KEY_WRITE_ACCESS_DISABLE)
0202 
0203 /**
0204   * @brief  Check IWDG prescaler value.
0205   * @param  __PRESCALER__  IWDG prescaler value
0206   * @retval None
0207   */
0208 #define IS_IWDG_PRESCALER(__PRESCALER__)      (((__PRESCALER__) == IWDG_PRESCALER_4)  || \
0209                                                ((__PRESCALER__) == IWDG_PRESCALER_8)  || \
0210                                                ((__PRESCALER__) == IWDG_PRESCALER_16) || \
0211                                                ((__PRESCALER__) == IWDG_PRESCALER_32) || \
0212                                                ((__PRESCALER__) == IWDG_PRESCALER_64) || \
0213                                                ((__PRESCALER__) == IWDG_PRESCALER_128)|| \
0214                                                ((__PRESCALER__) == IWDG_PRESCALER_256))
0215 
0216 /**
0217   * @brief  Check IWDG reload value.
0218   * @param  __RELOAD__  IWDG reload value
0219   * @retval None
0220   */
0221 #define IS_IWDG_RELOAD(__RELOAD__)            ((__RELOAD__) <= IWDG_RLR_RL)
0222 
0223 /**
0224   * @brief  Check IWDG window value.
0225   * @param  __WINDOW__  IWDG window value
0226   * @retval None
0227   */
0228 #define IS_IWDG_WINDOW(__WINDOW__)            ((__WINDOW__) <= IWDG_WINR_WIN)
0229 
0230 
0231 /**
0232   * @}
0233   */
0234 
0235 /**
0236   * @}
0237   */
0238 
0239 /**
0240   * @}
0241   */
0242 
0243 
0244 #ifdef __cplusplus
0245 }
0246 #endif
0247 
0248 #endif /* STM32H7xx_HAL_IWDG_H */