1 //////////////////////////////////////////////////////////////////////////////// 2 /// @file hal_iwdg.h 3 /// @author AE TEAM 4 /// @brief THIS FILE CONTAINS ALL THE FUNCTIONS PROTOTYPES FOR THE IWDG 5 /// FIRMWARE LIBRARY. 6 //////////////////////////////////////////////////////////////////////////////// 7 /// @attention 8 /// 9 /// THE EXISTING FIRMWARE IS ONLY FOR REFERENCE, WHICH IS DESIGNED TO PROVIDE 10 /// CUSTOMERS WITH CODING INFORMATION ABOUT THEIR PRODUCTS SO THEY CAN SAVE 11 /// TIME. THEREFORE, MINDMOTION SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT OR 12 /// CONSEQUENTIAL DAMAGES ABOUT ANY CLAIMS ARISING OUT OF THE CONTENT OF SUCH 13 /// HARDWARE AND/OR THE USE OF THE CODING INFORMATION CONTAINED HEREIN IN 14 /// CONNECTION WITH PRODUCTS MADE BY CUSTOMERS. 15 /// 16 /// <H2><CENTER>© COPYRIGHT MINDMOTION </CENTER></H2> 17 //////////////////////////////////////////////////////////////////////////////// 18 19 // Define to prevent recursive inclusion 20 #ifndef __HAL_IWDG_H 21 #define __HAL_IWDG_H 22 23 // Files includes 24 #include "types.h" 25 #include "reg_iwdg.h" 26 #include "reg_common.h" 27 28 //////////////////////////////////////////////////////////////////////////////// 29 /// @addtogroup MM32_Hardware_Abstract_Layer 30 /// @{ 31 32 //////////////////////////////////////////////////////////////////////////////// 33 /// @defgroup IWDG_HAL 34 /// @brief IWDG HAL modules 35 /// @{ 36 37 //////////////////////////////////////////////////////////////////////////////// 38 /// @defgroup IWDG_Exported_Constants 39 /// @{ 40 41 //////////////////////////////////////////////////////////////////////////////// 42 /// @brief IWDG prescaler 43 //////////////////////////////////////////////////////////////////////////////// 44 typedef enum { 45 IWDG_Prescaler_4 = IWDG_PR_PRE_DIV4, 46 IWDG_Prescaler_8 = IWDG_PR_PRE_DIV8, 47 IWDG_Prescaler_16 = IWDG_PR_PRE_DIV16, 48 IWDG_Prescaler_32 = IWDG_PR_PRE_DIV32, 49 IWDG_Prescaler_64 = IWDG_PR_PRE_DIV64, 50 IWDG_Prescaler_128 = IWDG_PR_PRE_DIV128, 51 IWDG_Prescaler_256 = IWDG_PR_PRE_DIV256 52 } IWDGPrescaler_TypeDef; 53 54 //////////////////////////////////////////////////////////////////////////////// 55 /// @brief IWDG flag 56 //////////////////////////////////////////////////////////////////////////////// 57 typedef enum { 58 IWDG_FLAG_PVU = 0x0001, // IWDG prescaler value update flag 59 IWDG_FLAG_RVU = 0x0002 // IWDG counter reload value update flag 60 } IWDGFlag_TypeDef; 61 62 //////////////////////////////////////////////////////////////////////////////// 63 /// @brief Write access to IWDG_PR and IWDG_RLR registers 64 //////////////////////////////////////////////////////////////////////////////// 65 typedef enum { 66 IWDG_WriteAccess_Enable = 0x5555, // Enable write 67 IWDG_WriteAccess_Disable = 0x0000 // Disable write 68 } IWDGWriteAccess_TypeDef; 69 70 //////////////////////////////////////////////////////////////////////////////// 71 /// @brief IWDG Key Reload 72 //////////////////////////////////////////////////////////////////////////////// 73 typedef enum { 74 KR_KEY_Reload = 0xAAAA, // Reload value 75 KR_KEY_Enable = 0xCCCC // Start IWDG 76 } IWDGKey_TypeDef; 77 78 //////////////////////////////////////////////////////////////////////////////// 79 /// @brief IWDG Overflow Configration 80 //////////////////////////////////////////////////////////////////////////////// 81 typedef enum { 82 IWDG_Overflow_Reset = 0, // 83 IWDG_Overflow_Interrupt = IWDG_CR_IRQSEL // 84 } IWDGOverflowConfig_TypeDef; 85 86 /// @} 87 88 //////////////////////////////////////////////////////////////////////////////// 89 /// @defgroup IWDG_Exported_Variables 90 /// @{ 91 #ifdef _HAL_IWDG_C_ 92 #define GLOBAL 93 94 #else 95 #define GLOBAL extern 96 #endif 97 98 99 #undef GLOBAL 100 /// @} 101 102 //////////////////////////////////////////////////////////////////////////////// 103 /// @defgroup IWDG_Exported_Functions 104 /// @{ 105 FlagStatus IWDG_GetFlagStatus(u16 flag); 106 107 void IWDG_WriteAccessCmd(u16 write_access); 108 void IWDG_SetPrescaler(u8 prescaler); 109 void IWDG_SetReload(u16 reload); 110 u32 IWDG_GetReload(void); 111 void IWDG_ReloadCounter(void); 112 void IWDG_Enable(void); 113 void PVU_CheckStatus(void); 114 void RVU_CheckStatus(void); 115 116 void IWDG_OverflowConfig(IWDGOverflowConfig_TypeDef overflow_config); 117 void IWDG_ClearITPendingBit(void); 118 void IWDG_EnableIT(void); 119 void IWDG_Reset(void); 120 void IWDG_ClearIT(void); 121 122 /// @} 123 124 /// @} 125 126 /// @} 127 128 //////////////////////////////////////////////////////////////////////////////// 129 #endif // __HAL_IWDG_H 130 //////////////////////////////////////////////////////////////////////////////// 131