gd32f3x0_syscfg.h 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. /*!
  2. \file gd32f3x0_syscfg.h
  3. \brief definitions for the SYSCFG
  4. */
  5. /*
  6. Copyright (C) 2017 GigaDevice
  7. 2017-06-06, V1.0.0, firmware for GD32F3x0
  8. */
  9. #ifndef GD32F3X0_SYSCFG_H
  10. #define GD32F3X0_SYSCFG_H
  11. #include "gd32f3x0.h"
  12. /* SYSCFG definitions */
  13. #define SYSCFG SYSCFG_BASE
  14. /* registers definitions */
  15. #define SYSCFG_CFG0 REG32(SYSCFG + 0x00U) /*!< system configuration register 0 */
  16. #define SYSCFG_EXTISS0 REG32(SYSCFG + 0x08U) /*!< EXTI sources selection register 0 */
  17. #define SYSCFG_EXTISS1 REG32(SYSCFG + 0x0CU) /*!< EXTI sources selection register 1 */
  18. #define SYSCFG_EXTISS2 REG32(SYSCFG + 0x10U) /*!< EXTI sources selection register 2 */
  19. #define SYSCFG_EXTISS3 REG32(SYSCFG + 0x14U) /*!< EXTI sources selection register 3 */
  20. #define SYSCFG_CFG2 REG32(SYSCFG + 0x18U) /*!< system configuration register 2 */
  21. #define SYSCFG_CPSCTL REG32(SYSCFG + 0x20U) /*!< system I/O compensation control register */
  22. /* SYSCFG_CFG0 bits definitions */
  23. #define SYSCFG_CFG0_BOOT_MODE BITS(0,1) /*!< SYSCFG memory remap config */
  24. #define SYSCFG_CFG0_ADC_DMA_RMP BIT(8) /*!< ADC DMA remap config */
  25. #define SYSCFG_CFG0_USART0_TX_DMA_RMP BIT(9) /*!< USART0 Tx DMA remap config */
  26. #define SYSCFG_CFG0_USART0_RX_DMA_RMP BIT(10) /*!< USART0 Rx DMA remap config */
  27. #define SYSCFG_CFG0_TIMER15_DMA_RMP BIT(11) /*!< TIMER 15 DMA remap config */
  28. #define SYSCFG_CFG0_TIMER16_DMA_RMP BIT(12) /*!< TIMER 16 DMA remap config */
  29. #define SYSCFG_CFG0_PB9_HCCE BIT(19) /*!< PB9 pin high current capability enable */
  30. /* SYSCFG_EXTISS0 bits definitions */
  31. #define SYSCFG_EXTISS0_EXTI0_SS BITS(0,3) /*!< EXTI 0 configuration */
  32. #define SYSCFG_EXTISS0_EXTI1_SS BITS(4,7) /*!< EXTI 1 configuration */
  33. #define SYSCFG_EXTISS0_EXTI2_SS BITS(8,11) /*!< EXTI 2 configuration */
  34. #define SYSCFG_EXTISS0_EXTI3_SS BITS(12,15) /*!< EXTI 3 configuration */
  35. /* SYSCFG_EXTISS1 bits definitions */
  36. #define SYSCFG_EXTISS1_EXTI4_SS BITS(0,3) /*!< EXTI 4 configuration */
  37. #define SYSCFG_EXTISS1_EXTI5_SS BITS(4,7) /*!< EXTI 5 configuration */
  38. #define SYSCFG_EXTISS1_EXTI6_SS BITS(8,11) /*!< EXTI 6 configuration */
  39. #define SYSCFG_EXTISS1_EXTI7_SS BITS(12,15) /*!< EXTI 7 configuration */
  40. /* SYSCFG_EXTISS2 bits definitions */
  41. #define SYSCFG_EXTISS2_EXTI8_SS BITS(0,3) /*!< EXTI 8 configuration */
  42. #define SYSCFG_EXTISS2_EXTI9_SS BITS(4,7) /*!< EXTI 9 configuration */
  43. #define SYSCFG_EXTISS2_EXTI10_SS BITS(8,11) /*!< EXTI 10 configuration */
  44. #define SYSCFG_EXTISS2_EXTI11_SS BITS(12,15) /*!< EXTI 11 configuration */
  45. /* SYSCFG_EXTISS3 bits definitions */
  46. #define SYSCFG_EXTISS3_EXTI12_SS BITS(0,3) /*!< EXTI 12 configuration */
  47. #define SYSCFG_EXTISS3_EXTI13_SS BITS(4,7) /*!< EXTI 13 configuration */
  48. #define SYSCFG_EXTISS3_EXTI14_SS BITS(8,11) /*!< EXTI 14 configuration */
  49. #define SYSCFG_EXTISS3_EXTI15_SS BITS(12,15) /*!< EXTI 15 configuration */
  50. /* SYSCFG_CFG2 bits definitions */
  51. #define SYSCFG_CFG2_LOCKUP_LOCK BIT(0) /*!< enable and lock the LOCKUP (Hardfault) output of Cortex-M4 with break input of TIMER0/14/15/16 */
  52. #define SYSCFG_CFG2_SRAM_PARITY_ERROR_LOCK BIT(1) /*!< enable and lock the SRAM_PARITY error signal with break input of TIMER0/14/15/16 */
  53. #define SYSCFG_CFG2_LVD_LOCK BIT(2) /*!< enable and lock the LVD connection with TIMER0 break input and also the LVD_EN and LVDSEL[2:0] bits of the power control interface */
  54. #define SYSCFG_CFG2_SRAM_PCEF BIT(8) /*!< SRAM parity check error flag */
  55. /* SYSCFG_CPSCTL bits definitions */
  56. #define SYSCFG_CPSCTL_CPS_EN BIT(0) /*!< I/O compensation cell enable */
  57. #define SYSCFG_CPSCTL_CPS_RDY BIT(8) /*!< I/O compensation cell is ready or not */
  58. /* constants definitions */
  59. /* DMA remap definitions */
  60. #define SYSCFG_DMA_REMAP_ADC SYSCFG_CFG0_ADC_DMA_RMP /*!< ADC DMA remap */
  61. #define SYSCFG_DMA_REMAP_USART0TX SYSCFG_CFG0_USART0_TX_DMA_RMP /*!< USART0_TX DMA remap */
  62. #define SYSCFG_DMA_REMAP_USART0RX SYSCFG_CFG0_USART0_RX_DMA_RMP /*!< USART0_RX DMA remap */
  63. #define SYSCFG_DMA_REMAP_TIMER15 SYSCFG_CFG0_TIMER15_DMA_RMP /*!< TIMER15 DMA remap */
  64. #define SYSCFG_DMA_REMAP_TIMER16 SYSCFG_CFG0_TIMER16_DMA_RMP /*!< TIMER16 DMA remap */
  65. /* high current definitions */
  66. #define SYSCFG_HIGH_CURRENT_ENABLE SYSCFG_CFG0_PB9_HCCE /*!< high current enable */
  67. #define SYSCFG_HIGH_CURRENT_DISABLE (~SYSCFG_CFG0_PB9_HCCE) /*!< high current disable */
  68. /* EXTI source select definition */
  69. #define EXTISS0 ((uint8_t)0x00U) /*!< EXTI source select register 0 */
  70. #define EXTISS1 ((uint8_t)0x01U) /*!< EXTI source select register 1 */
  71. #define EXTISS2 ((uint8_t)0x02U) /*!< EXTI source select register 2 */
  72. #define EXTISS3 ((uint8_t)0x03U) /*!< EXTI source select register 3 */
  73. /* EXTI source select mask bits definition */
  74. #define EXTI_SS_MASK BITS(0,3) /*!< EXTI source select mask */
  75. /* EXTI source select jumping step definition */
  76. #define EXTI_SS_JSTEP ((uint8_t)(0x04U)) /*!< EXTI source select jumping step */
  77. /* EXTI source select moving step definition */
  78. #define EXTI_SS_MSTEP(pin) (EXTI_SS_JSTEP * ((pin) % EXTI_SS_JSTEP)) /*!< EXTI source select moving step */
  79. /* EXTI source port definitions */
  80. #define EXTI_SOURCE_GPIOA ((uint8_t)0x00U) /*!< EXTI GPIOA configuration */
  81. #define EXTI_SOURCE_GPIOB ((uint8_t)0x01U) /*!< EXTI GPIOB configuration */
  82. #define EXTI_SOURCE_GPIOC ((uint8_t)0x02U) /*!< EXTI GPIOC configuration */
  83. #define EXTI_SOURCE_GPIOD ((uint8_t)0x03U) /*!< EXTI GPIOD configuration */
  84. #define EXTI_SOURCE_GPIOF ((uint8_t)0x05U) /*!< EXTI GPIOF configuration */
  85. /* EXTI source pin definitions */
  86. #define EXTI_SOURCE_PIN0 ((uint8_t)0x00U) /*!< EXTI GPIO pin0 configuration */
  87. #define EXTI_SOURCE_PIN1 ((uint8_t)0x01U) /*!< EXTI GPIO pin1 configuration */
  88. #define EXTI_SOURCE_PIN2 ((uint8_t)0x02U) /*!< EXTI GPIO pin2 configuration */
  89. #define EXTI_SOURCE_PIN3 ((uint8_t)0x03U) /*!< EXTI GPIO pin3 configuration */
  90. #define EXTI_SOURCE_PIN4 ((uint8_t)0x04U) /*!< EXTI GPIO pin4 configuration */
  91. #define EXTI_SOURCE_PIN5 ((uint8_t)0x05U) /*!< EXTI GPIO pin5 configuration */
  92. #define EXTI_SOURCE_PIN6 ((uint8_t)0x06U) /*!< EXTI GPIO pin6 configuration */
  93. #define EXTI_SOURCE_PIN7 ((uint8_t)0x07U) /*!< EXTI GPIO pin7 configuration */
  94. #define EXTI_SOURCE_PIN8 ((uint8_t)0x08U) /*!< EXTI GPIO pin8 configuration */
  95. #define EXTI_SOURCE_PIN9 ((uint8_t)0x09U) /*!< EXTI GPIO pin9 configuration */
  96. #define EXTI_SOURCE_PIN10 ((uint8_t)0x0AU) /*!< EXTI GPIO pin10 configuration */
  97. #define EXTI_SOURCE_PIN11 ((uint8_t)0x0BU) /*!< EXTI GPIO pin11 configuration */
  98. #define EXTI_SOURCE_PIN12 ((uint8_t)0x0CU) /*!< EXTI GPIO pin12 configuration */
  99. #define EXTI_SOURCE_PIN13 ((uint8_t)0x0DU) /*!< EXTI GPIO pin13 configuration */
  100. #define EXTI_SOURCE_PIN14 ((uint8_t)0x0EU) /*!< EXTI GPIO pin14 configuration */
  101. #define EXTI_SOURCE_PIN15 ((uint8_t)0x0FU) /*!< EXTI GPIO pin15 configuration */
  102. /* lock definitions */
  103. #define SYSCFG_LOCK_LOCKUP SYSCFG_CFG2_LOCKUP_LOCK /*!< LOCKUP output lock */
  104. #define SYSCFG_LOCK_SRAM_PARITY_ERROR SYSCFG_CFG2_SRAM_PARITY_ERROR_LOCK /*!< SRAM parity error lock */
  105. #define SYSCFG_LOCK_LVD SYSCFG_CFG2_LVD_LOCK /*!< LVD lock */
  106. /* SRAM parity check error flag definitions */
  107. #define SYSCFG_SRAM_PCEF SYSCFG_CFG2_SRAM_PCEF /*!< SRAM parity check error flag */
  108. /* I/O compensation cell enable/disable */
  109. #define SYSCFG_COMPENSATION(regval) (BIT(0) & ((uint32_t)(regval) << 0))
  110. #define SYSCFG_COMPENSATION_DISABLE SYSCFG_COMPENSATION(0) /*!< I/O compensation cell is power-down */
  111. #define SYSCFG_COMPENSATION_ENABLE SYSCFG_COMPENSATION(1) /*!< I/O compensation cell is enabled */
  112. /* function declarations */
  113. /* deinit syscfg module */
  114. void syscfg_deinit(void);
  115. /* enable the DMA channels remapping */
  116. void syscfg_dma_remap_enable(uint32_t syscfg_dma_remap);
  117. /* disable the DMA channels remapping */
  118. void syscfg_dma_remap_disable(uint32_t syscfg_dma_remap);
  119. /* enable PB9 high current capability */
  120. void syscfg_high_current_enable(void);
  121. /* disable PB9 high current capability */
  122. void syscfg_high_current_disable(void);
  123. /* configure the GPIO pin as EXTI Line */
  124. void syscfg_exti_line_config(uint8_t exti_port, uint8_t exti_pin);
  125. /* connect TIMER0/14/15/16 break input to the selected parameter */
  126. void syscfg_lock_config(uint32_t syscfg_lock);
  127. /* check if the specified flag in SYSCFG_CFG2 is set or not */
  128. FlagStatus syscfg_flag_get(uint32_t syscfg_flag);
  129. /* clear the flag in SYSCFG_CFG2 by writing 1 */
  130. void syscfg_flag_clear(uint32_t syscfg_flag);
  131. /* configure the I/O compensation cell */
  132. void syscfg_compensation_config(uint32_t syscfg_compensation);
  133. /* check if the I/O compensation cell ready flag is set or not */
  134. FlagStatus syscfg_cps_rdy_flag_get(void);
  135. #endif /* GD32F3X0_SYSCFG_H */