reg_crs.h 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. ////////////////////////////////////////////////////////////////////////////////
  2. /// @file reg_crs.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_CRS_H
  20. #define __REG_CRS_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 CRS Base Address Definition
  30. ////////////////////////////////////////////////////////////////////////////////
  31. #define CRS_BASE (APB1PERIPH_BASE + 0x6C00) ///< Base Address: 0x40006C00
  32. ////////////////////////////////////////////////////////////////////////////////
  33. /// @brief CRS Register Structure Definition
  34. ////////////////////////////////////////////////////////////////////////////////
  35. typedef struct {
  36. __IO u32 CR; ///< Control Register offset: 0x00
  37. __IO u32 CFGR; ///< Configuration Register offset: 0x04
  38. __IO u32 ISR; ///< Interrupt and Status Register offset: 0x08
  39. __IO u32 ICR; ///< Interrupt Flag Clear Register offset: 0x0C
  40. } CRS_TypeDef;
  41. ////////////////////////////////////////////////////////////////////////////////
  42. /// @brief CRS type pointer Definition
  43. ////////////////////////////////////////////////////////////////////////////////
  44. #define CRS ((CRS_TypeDef*) CRS_BASE)
  45. ////////////////////////////////////////////////////////////////////////////////
  46. /// @brief CRS_CR Register Bit Definition
  47. ////////////////////////////////////////////////////////////////////////////////
  48. #define CRS_CR_OKIE_Pos (0)
  49. #define CRS_CR_OKIE (0x01U << CRS_CR_OKIE_Pos) ///< SYNC event OK interrupt enable
  50. #define CRS_CR_WARNIE_Pos (1)
  51. #define CRS_CR_WARNIE (0x01U << CRS_CR_WARNIE_Pos) ///< SYNC warning interrupt enable
  52. #define CRS_CR_ERRIE_Pos (2)
  53. #define CRS_CR_ERRIE (0x01U << CRS_CR_ERRIE_Pos) ///< Synchronization or trimming error interrupt enable
  54. #define CRS_CR_EXPTIE_Pos (3)
  55. #define CRS_CR_EXPTIE (0x01U << CRS_CR_EXPTIE_Pos) ///< Expected SYNC interrupt enable
  56. #define CRS_CR_CNTEN_Pos (5)
  57. #define CRS_CR_CNTEN (0x01U << CRS_CR_CNTEN_Pos) ///< Frequency error counter enable
  58. #define CRS_CR_AUTOTRIMEN_Pos (6)
  59. #define CRS_CR_AUTOTRIMEN (0x01U << CRS_CR_AUTOTRIMEN_Pos) ///< Automatic trimming enable
  60. #define CRS_CR_SWSYNC_Pos (7)
  61. #define CRS_CR_SWSYNC (0x01U << CRS_CR_SWSYNC_Pos) ///< Generate software SYNC event
  62. #define CRS_CR_TRIM_Pos (8)
  63. #define CRS_CR_TRIM (0x3FFU << CRS_CR_TRIM_Pos) ///< HSI 48 oscillator smooth trimming
  64. ////////////////////////////////////////////////////////////////////////////////
  65. /// @brief CRS_CFGR Register Bit Definition
  66. ////////////////////////////////////////////////////////////////////////////////
  67. #define CRS_CFGR_RELOAD_Pos (0)
  68. #define CRS_CFGR_RELOAD (0xFFFFU << CRS_CFGR_RELOAD_Pos) ///< Counter reload value
  69. #define CRS_CFGR_FELIM_Pos (16)
  70. #define CRS_CFGR_FELIM (0xFFU << CRS_CFGR_FELIM_Pos) ///< Frequency error limit
  71. #define CRS_CFGR_DIV_Pos (24)
  72. #define CRS_CFGR_DIV (0x07U << CRS_CFGR_DIV_Pos) ///< SYNC divider
  73. #define CRS_CFGR_SRC_Pos (28)
  74. #define CRS_CFGR_SRC (0x03U << CRS_CFGR_SRC_Pos) ///< SYNC signal source selection
  75. #define CRS_CFGR_SRC_MCO (0x00U << CRS_CFGR_SRC_Pos)
  76. #define CRS_CFGR_SRC_USBSOF (0x02U << CRS_CFGR_SRC_Pos)
  77. #define CRS_CFGR_POL_Pos (31)
  78. #define CRS_CFGR_POL (0x01U << CRS_CFGR_POL_Pos) ///< SYNC polarity selection
  79. ////////////////////////////////////////////////////////////////////////////////
  80. /// @brief CRS_ISR Register Bit Definition
  81. ////////////////////////////////////////////////////////////////////////////////
  82. #define CRS_ISR_OKIF_Pos (0)
  83. #define CRS_ISR_OKIF (0x01U << CRS_ISR_OKIF_Pos) ///< SYNC event OK flag
  84. #define CRS_ISR_WARNIF_Pos (1)
  85. #define CRS_ISR_WARNIF (0x01U << CRS_ISR_WARNIF_Pos) ///< SYNC warning flag
  86. #define CRS_ISR_ERRIF_Pos (2)
  87. #define CRS_ISR_ERRIF (0x01U << CRS_ISR_ERRIF_Pos) ///< Error flag
  88. #define CRS_ISR_EXPTIF_Pos (3)
  89. #define CRS_ISR_EXPTIF (0x01U << CRS_ISR_EXPTIF_Pos) ///< Expected SYNC flag
  90. #define CRS_ISR_ERR_Pos (8)
  91. #define CRS_ISR_ERR (0x01U << CRS_ISR_ERR_Pos) ///< SYNC error
  92. #define CRS_ISR_MISS_Pos (9)
  93. #define CRS_ISR_MISS (0x01U << CRS_ISR_MISS_Pos) ///< SYNC missed
  94. #define CRS_ISR_OVERFLOW_Pos (10)
  95. #define CRS_ISR_OVERFLOW (0x01U << CRS_ISR_OVERFLOW_Pos) ///< Trimming overflow or underflow
  96. #define CRS_ISR_FEDIR_Pos (15)
  97. #define CRS_ISR_FEDIR (0x01U << CRS_ISR_FEDIR_Pos) ///< Frequency error direction
  98. #define CRS_ISR_FECAP_Pos (16)
  99. #define CRS_ISR_FECAP (0xFFFFU << CRS_ISR_FECAP_Pos) ///< Frequency error capture
  100. ////////////////////////////////////////////////////////////////////////////////
  101. /// @brief CRS_ICR Register Bit Definition
  102. ////////////////////////////////////////////////////////////////////////////////
  103. #define CRS_ICR_OK_Pos (0)
  104. #define CRS_ICR_OK (0x01U << CRS_ICR_OK_Pos) ///< SYNC event OK clear flag
  105. #define CRS_ICR_WARN_Pos (1)
  106. #define CRS_ICR_WARN (0x01U << CRS_ICR_WARN_Pos) ///< SYNC warning clear flag
  107. #define CRS_ICR_ERR_Pos (2)
  108. #define CRS_ICR_ERR (0x01U << CRS_ICR_ERR_Pos) ///< Error clear flag
  109. #define CRS_ICR_EXPT_Pos (3)
  110. #define CRS_ICR_EXPT (0x01U << CRS_ICR_EXPT_Pos) ///< Expected SYNC clear flag
  111. /// @}
  112. /// @}
  113. /// @}
  114. ////////////////////////////////////////////////////////////////////////////////
  115. #endif
  116. ////////////////////////////////////////////////////////////////////////////////