reg_iwdg.h 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. ////////////////////////////////////////////////////////////////////////////////
  2. /// @file reg_iwdg.h
  3. /// @author AE TEAM
  4. /// @brief THIS FILE CONTAINS ALL THE FUNCTIONS PROTOTYPES FOR THE SERIES OF
  5. /// MM32 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 __REG_IWDG_H
  20. #define __REG_IWDG_H
  21. // Files includes
  22. #include <stdint.h>
  23. #include <stdbool.h>
  24. #include "types.h"
  25. #if defined ( __CC_ARM )
  26. #pragma anon_unions
  27. #endif
  28. ////////////////////////////////////////////////////////////////////////////////
  29. /// @brief IWDG Base Address Definition
  30. ////////////////////////////////////////////////////////////////////////////////
  31. #define IWDG_BASE (APB1PERIPH_BASE + 0x3000) ///< Base Address: 0x40003000
  32. ////////////////////////////////////////////////////////////////////////////////
  33. /// @brief IWDG Register Structure Definition
  34. ////////////////////////////////////////////////////////////////////////////////
  35. typedef struct {
  36. __IO u32 KR; ///< Key Register offset: 0x00
  37. __IO u32 PR; ///< Prescaler Register offset: 0x04
  38. __IO u32 RLR; ///< Reload Register offset: 0x08
  39. __IO u32 SR; ///< Status Register offset: 0x0C
  40. __IO u32 CR; ///< Control Register offset: 0x10
  41. __IO u32 IGEN; ///< Interrupt Generator Register offset: 0x14
  42. __IO u32 CNT; ///< Interrupt Generator count Register offset: 0x18
  43. __IO u32 PS; ///< Prescaler count Register offset: 0x1C
  44. } IWDG_TypeDef;
  45. ////////////////////////////////////////////////////////////////////////////////
  46. /// @brief IWDG type pointer Definition
  47. ////////////////////////////////////////////////////////////////////////////////
  48. #define IWDG ((IWDG_TypeDef*) IWDG_BASE)
  49. ////////////////////////////////////////////////////////////////////////////////
  50. /// @brief IWDG_KR Register Bit Definition
  51. ////////////////////////////////////////////////////////////////////////////////
  52. #define IWDG_KEYR_KEY_Pos (0)
  53. #define IWDG_KEYR_KEY (0xFFFFU << IWDG_KEYR_KEY_Pos) ///< Key Value
  54. ////////////////////////////////////////////////////////////////////////////////
  55. /// @brief IWDG_PR Register Bit Definition
  56. ////////////////////////////////////////////////////////////////////////////////
  57. #define IWDG_PR_PRE_Pos (0)
  58. #define IWDG_PR_PRE (0x07U << IWDG_PR_PRE_Pos) ///< Prescaler divided by 4
  59. #define IWDG_PR_PRE_DIV4 (0x00U << IWDG_PR_PRE_Pos) ///< Prescaler divided by 4
  60. #define IWDG_PR_PRE_DIV8 (0x01U << IWDG_PR_PRE_Pos) ///< Prescaler divided by 8
  61. #define IWDG_PR_PRE_DIV16 (0x02U << IWDG_PR_PRE_Pos) ///< Prescaler divided by 16
  62. #define IWDG_PR_PRE_DIV32 (0x03U << IWDG_PR_PRE_Pos) ///< Prescaler divided by 32
  63. #define IWDG_PR_PRE_DIV64 (0x04U << IWDG_PR_PRE_Pos) ///< Prescaler divided by 64
  64. #define IWDG_PR_PRE_DIV128 (0x05U << IWDG_PR_PRE_Pos) ///< Prescaler divided by 128
  65. #define IWDG_PR_PRE_DIV256 (0x06U << IWDG_PR_PRE_Pos) ///< Prescaler divided by 256
  66. ////////////////////////////////////////////////////////////////////////////////
  67. /// @brief IWDG_RLR Register Bit Definition
  68. ////////////////////////////////////////////////////////////////////////////////
  69. #define IWDG_RLR_RL_Pos (0)
  70. #define IWDG_RLR_RL (0x0FFFU << IWDG_RLR_RL_Pos) ///< Watchdog counter reload value
  71. ////////////////////////////////////////////////////////////////////////////////
  72. /// @brief IWDG_SR Register Bit Definition
  73. ////////////////////////////////////////////////////////////////////////////////
  74. #define IWDG_SR_PVU_Pos (0)
  75. #define IWDG_SR_PVU (0x01U << IWDG_SR_PVU_Pos) ///< Watchdog prescaler value update
  76. #define IWDG_SR_RVU_Pos (1)
  77. #define IWDG_SR_RVU (0x01U << IWDG_SR_RVU_Pos) ///< Watchdog counter reload value update
  78. #define IWDG_SR_IVU_Pos (2)
  79. #define IWDG_SR_IVU (0x01U << IWDG_SR_IVU_Pos)
  80. #define IWDG_SR_UPDATE_Pos (3)
  81. #define IWDG_SR_UPDATE (0x01U << IWDG_SR_UPDATE_Pos)
  82. ////////////////////////////////////////////////////////////////////////////////
  83. /// @brief IWDG_CR Register Bit Definition
  84. ////////////////////////////////////////////////////////////////////////////////
  85. #define IWDG_CR_IRQSEL_Pos (0)
  86. #define IWDG_CR_IRQSEL (0x01U << IWDG_CR_IRQSEL_Pos) ///< IWDG overflow operation selection
  87. #define IWDG_CR_IRQCLR_Pos (1)
  88. #define IWDG_CR_IRQCLR (0x01U << IWDG_CR_IRQCLR_Pos) ///< IWDG interrupt clear
  89. ////////////////////////////////////////////////////////////////////////////////
  90. /// @brief IWDG_IGRN Register Bit Definition
  91. ////////////////////////////////////////////////////////////////////////////////
  92. #define IWDG_IGEN_IGEN_Pos (0)
  93. #define IWDG_IGEN_IGEN (0xFFFU << IWDG_CR_IRQSEL_Pos) ///< IWDG Interrupt Generate value
  94. /// @}
  95. /// @}
  96. /// @}
  97. ////////////////////////////////////////////////////////////////////////////////
  98. #endif
  99. ////////////////////////////////////////////////////////////////////////////////