hal_iwdg.h 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  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>&COPY; COPYRIGHT MINDMOTION </CENTER></H2>
  17. ////////////////////////////////////////////////////////////////////////////////
  18. // Define to prevent recursive inclusion
  19. #ifndef __HAL_IWDG_H
  20. #define __HAL_IWDG_H
  21. // Files includes
  22. #include "types.h"
  23. #include "reg_iwdg.h"
  24. #include "reg_common.h"
  25. ////////////////////////////////////////////////////////////////////////////////
  26. /// @addtogroup MM32_Hardware_Abstract_Layer
  27. /// @{
  28. ////////////////////////////////////////////////////////////////////////////////
  29. /// @defgroup IWDG_HAL
  30. /// @brief IWDG HAL modules
  31. /// @{
  32. ////////////////////////////////////////////////////////////////////////////////
  33. /// @defgroup IWDG_Exported_Constants
  34. /// @{
  35. ////////////////////////////////////////////////////////////////////////////////
  36. /// @brief IWDG prescaler
  37. ////////////////////////////////////////////////////////////////////////////////
  38. typedef enum {
  39. IWDG_Prescaler_4 = IWDG_PR_PRE_DIV4,
  40. IWDG_Prescaler_8 = IWDG_PR_PRE_DIV8,
  41. IWDG_Prescaler_16 = IWDG_PR_PRE_DIV16,
  42. IWDG_Prescaler_32 = IWDG_PR_PRE_DIV32,
  43. IWDG_Prescaler_64 = IWDG_PR_PRE_DIV64,
  44. IWDG_Prescaler_128 = IWDG_PR_PRE_DIV128,
  45. IWDG_Prescaler_256 = IWDG_PR_PRE_DIV256
  46. } IWDGPrescaler_TypeDef;
  47. ////////////////////////////////////////////////////////////////////////////////
  48. /// @brief IWDG flag
  49. ////////////////////////////////////////////////////////////////////////////////
  50. typedef enum {
  51. IWDG_FLAG_PVU = 0x0001, // IWDG prescaler value update flag
  52. IWDG_FLAG_RVU = 0x0002 // IWDG counter reload value update flag
  53. } IWDGFlag_TypeDef;
  54. ////////////////////////////////////////////////////////////////////////////////
  55. /// @brief Write access to IWDG_PR and IWDG_RLR registers
  56. ////////////////////////////////////////////////////////////////////////////////
  57. typedef enum {
  58. IWDG_WriteAccess_Enable = 0x5555, // Enable write
  59. IWDG_WriteAccess_Disable = 0x0000 // Disable write
  60. } IWDGWriteAccess_TypeDef;
  61. ////////////////////////////////////////////////////////////////////////////////
  62. /// @brief IWDG Key Reload
  63. ////////////////////////////////////////////////////////////////////////////////
  64. typedef enum {
  65. KR_KEY_Reload = 0xAAAA, // Reload value
  66. KR_KEY_Enable = 0xCCCC // Start IWDG
  67. } IWDGKey_TypeDef;
  68. ////////////////////////////////////////////////////////////////////////////////
  69. /// @brief IWDG Overflow Configration
  70. ////////////////////////////////////////////////////////////////////////////////
  71. typedef enum {
  72. IWDG_Overflow_Reset = 0, //
  73. IWDG_Overflow_Interrupt = IWDG_CR_IRQSEL //
  74. } IWDGOverflowConfig_TypeDef;
  75. /// @}
  76. ////////////////////////////////////////////////////////////////////////////////
  77. /// @defgroup IWDG_Exported_Variables
  78. /// @{
  79. #ifdef _HAL_IWDG_C_
  80. #define GLOBAL
  81. #else
  82. #define GLOBAL extern
  83. #endif
  84. #undef GLOBAL
  85. /// @}
  86. ////////////////////////////////////////////////////////////////////////////////
  87. /// @defgroup IWDG_Exported_Functions
  88. /// @{
  89. FlagStatus IWDG_GetFlagStatus(u16 flag);
  90. void IWDG_WriteAccessCmd(u16 write_access);
  91. void IWDG_SetPrescaler(u8 prescaler);
  92. void IWDG_SetReload(u16 reload);
  93. u32 IWDG_GetReload(void);
  94. void IWDG_ReloadCounter(void);
  95. void IWDG_Enable(void);
  96. void PVU_CheckStatus(void);
  97. void RVU_CheckStatus(void);
  98. void IWDG_OverflowConfig(IWDGOverflowConfig_TypeDef overflow_config);
  99. void IWDG_ClearITPendingBit(void);
  100. void IWDG_EnableIT(void);
  101. void IWDG_Reset(void);
  102. void IWDG_ClearIT(void);
  103. /// @}
  104. /// @}
  105. /// @}
  106. ////////////////////////////////////////////////////////////////////////////////
  107. #endif // __HAL_IWDG_H
  108. ////////////////////////////////////////////////////////////////////////////////