gd32f30x.h 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329
  1. /*!
  2. \file gd32f30x.h
  3. \brief general definitions for GD32F30x
  4. */
  5. /*
  6. Copyright (C) 2017 GigaDevice
  7. 2017-02-10, V1.0.1, firmware for GD32F30x
  8. */
  9. #ifndef GD32F30X_H
  10. #define GD32F30X_H
  11. #ifdef cplusplus
  12. extern "C" {
  13. #endif
  14. /* define GD32F30x */
  15. #if !defined (GD32F30X_HD) && !defined (GD32F30X_XD) && !defined (GD32F30X_CL)
  16. /* #define GD32F30X_HD */
  17. /* #define GD32F30X_XD */
  18. /* #define GD32F30X_CL */
  19. #endif /* define GD32F30x */
  20. #if !defined (GD32F30X_HD) && !defined (GD32F30X_XD) && !defined (GD32F30X_CL)
  21. #error "Please select the target GD32F30x device in gd32f30x.h file"
  22. #endif /* undefine GD32F30x tip */
  23. /* define value of high speed crystal oscillator (HXTAL) in Hz */
  24. #if !defined HXTAL_VALUE
  25. #ifdef GD32F30X_CL
  26. #define HXTAL_VALUE ((uint32_t)25000000) /*!< value of the external oscillator in Hz */
  27. #else
  28. #define HXTAL_VALUE ((uint32_t)8000000) /* !< from 4M to 16M *!< value of the external oscillator in Hz*/
  29. #endif /* HXTAL_VALUE */
  30. #endif /* high speed crystal oscillator value */
  31. /* define startup timeout value of high speed crystal oscillator (HXTAL) */
  32. #if !defined (HXTAL_STARTUP_TIMEOUT)
  33. #define HXTAL_STARTUP_TIMEOUT ((uint16_t)0x0800)
  34. #endif /* high speed crystal oscillator startup timeout */
  35. /* define value of internal 48MHz RC oscillator (IRC48M) in Hz */
  36. #if !defined (IRC48M_VALUE)
  37. #define IRC48M_VALUE ((uint32_t)48000000)
  38. #endif /* internal 48MHz RC oscillator value */
  39. /* define value of internal 8MHz RC oscillator (IRC8M) in Hz */
  40. #if !defined (IRC8M_VALUE)
  41. #define IRC8M_VALUE ((uint32_t)8000000)
  42. #endif /* internal 8MHz RC oscillator value */
  43. /* define startup timeout value of internal 8MHz RC oscillator (IRC8M) */
  44. #if !defined (IRC8M_STARTUP_TIMEOUT)
  45. #define IRC8M_STARTUP_TIMEOUT ((uint16_t)0x0500)
  46. #endif /* internal 8MHz RC oscillator startup timeout */
  47. /* define value of internal 40KHz RC oscillator(IRC40K) in Hz */
  48. #if !defined (IRC40K_VALUE)
  49. #define IRC40K_VALUE ((uint32_t)40000)
  50. #endif /* internal 40KHz RC oscillator value */
  51. /* define value of low speed crystal oscillator (LXTAL)in Hz */
  52. #if !defined (LXTAL_VALUE)
  53. #define LXTAL_VALUE ((uint32_t)32768)
  54. #endif /* low speed crystal oscillator value */
  55. /* GD32F30x firmware library version number V1.0 */
  56. #define __GD32F30x_STDPERIPH_VERSION_MAIN (0x01) /*!< [31:24] main version */
  57. #define __GD32F30x_STDPERIPH_VERSION_SUB1 (0x00) /*!< [23:16] sub1 version */
  58. #define __GD32F30x_STDPERIPH_VERSION_SUB2 (0x00) /*!< [15:8] sub2 version */
  59. #define __GD32F30x_STDPERIPH_VERSION_RC (0x00) /*!< [7:0] release candidate */
  60. #define __GD32F30x_STDPERIPH_VERSION ((__GD32F30x_STDPERIPH_VERSION_MAIN << 24)\
  61. |(__GD32F30x_STDPERIPH_VERSION_SUB1 << 16)\
  62. |(__GD32F30x_STDPERIPH_VERSION_SUB2 << 8)\
  63. |(__GD32F30x_STDPERIPH_VERSION_RC))
  64. /* configuration of the Cortex-M4 processor and core peripherals */
  65. #define __CM4_REV 0x0001 /*!< Core revision r0p1 */
  66. #define __MPU_PRESENT 1 /*!< GD32F30x do not provide MPU */
  67. #define __NVIC_PRIO_BITS 4 /*!< GD32F30x uses 4 bits for the priority levels */
  68. #define __Vendor_SysTickConfig 0 /*!< set to 1 if different sysTick config is used */
  69. /* define interrupt number */
  70. typedef enum IRQn
  71. {
  72. /* Cortex-M4 processor exceptions numbers */
  73. NonMaskableInt_IRQn = -14, /*!< 2 non maskable interrupt */
  74. MemoryManagement_IRQn = -12, /*!< 4 Cortex-M4 memory management interrupt */
  75. BusFault_IRQn = -11, /*!< 5 Cortex-M4 bus fault interrupt */
  76. UsageFault_IRQn = -10, /*!< 6 Cortex-M4 usage fault interrupt */
  77. SVCall_IRQn = -5, /*!< 11 Cortex-M4 SV call interrupt */
  78. DebugMonitor_IRQn = -4, /*!< 12 Cortex-M4 debug monitor interrupt */
  79. PendSV_IRQn = -2, /*!< 14 Cortex-M4 pend SV interrupt */
  80. SysTick_IRQn = -1, /*!< 15 Cortex-M4 system tick interrupt */
  81. /* interruput numbers */
  82. WWDGT_IRQn = 0, /*!< window watchDog timer interrupt */
  83. LVD_IRQn = 1, /*!< LVD through EXTI line detect interrupt */
  84. TAMPER_IRQn = 2, /*!< tamper through EXTI line detect */
  85. RTC_IRQn = 3, /*!< RTC through EXTI line interrupt */
  86. FMC_IRQn = 4, /*!< FMC interrupt */
  87. RCU_CTC_IRQn = 5, /*!< RCU and CTC interrupt */
  88. EXTI0_IRQn = 6, /*!< EXTI line 0 interrupts */
  89. EXTI1_IRQn = 7, /*!< EXTI line 1 interrupts */
  90. EXTI2_IRQn = 8, /*!< EXTI line 2 interrupts */
  91. EXTI3_IRQn = 9, /*!< EXTI line 3 interrupts */
  92. EXTI4_IRQn = 10, /*!< EXTI line 4 interrupts */
  93. DMA0_Channel0_IRQn = 11, /*!< DMA0 channel0 interrupt */
  94. DMA0_Channel1_IRQn = 12, /*!< DMA0 channel1 interrupt */
  95. DMA0_Channel2_IRQn = 13, /*!< DMA0 channel2 interrupt */
  96. DMA0_Channel3_IRQn = 14, /*!< DMA0 channel3 interrupt */
  97. DMA0_Channel4_IRQn = 15, /*!< DMA0 channel4 interrupt */
  98. DMA0_Channel5_IRQn = 16, /*!< DMA0 channel5 interrupt */
  99. DMA0_Channel6_IRQn = 17, /*!< DMA0 channel6 interrupt */
  100. ADC0_1_IRQn = 18, /*!< ADC0 and ADC1 interrupt */
  101. #ifdef GD32F30X_HD
  102. USBD_HP_CAN0_TX_IRQn = 19, /*!< CAN0 TX interrupts */
  103. USBD_LP_CAN0_RX0_IRQn = 20, /*!< CAN0 RX0 interrupts */
  104. CAN0_RX1_IRQn = 21, /*!< CAN0 RX1 interrupts */
  105. CAN0_EWMC_IRQn = 22, /*!< CAN0 EWMC interrupts */
  106. EXTI5_9_IRQn = 23, /*!< EXTI[9:5] interrupts */
  107. TIMER0_BRK_IRQn = 24, /*!< TIMER0 break interrupts */
  108. TIMER0_UP_IRQn = 25, /*!< TIMER0 update interrupts */
  109. TIMER0_TRG_CMT_IRQn = 26, /*!< TIMER0 trigger and commutation interrupts */
  110. TIMER0_Channel_IRQn = 27, /*!< TIMER0 channel capture compare interrupts */
  111. TIMER1_IRQn = 28, /*!< TIMER1 interrupt */
  112. TIMER2_IRQn = 29, /*!< TIMER2 interrupt */
  113. TIMER3_IRQn = 30, /*!< TIMER3 interrupts */
  114. I2C0_EV_IRQn = 31, /*!< I2C0 event interrupt */
  115. I2C0_ER_IRQn = 32, /*!< I2C0 error interrupt */
  116. I2C1_EV_IRQn = 33, /*!< I2C1 event interrupt */
  117. I2C1_ER_IRQn = 34, /*!< I2C1 error interrupt */
  118. SPI0_IRQn = 35, /*!< SPI0 interrupt */
  119. SPI1_IRQn = 36, /*!< SPI1 interrupt */
  120. USART0_IRQn = 37, /*!< USART0 interrupt */
  121. USART1_IRQn = 38, /*!< USART1 interrupt */
  122. USART2_IRQn = 39, /*!< USART2 interrupt */
  123. EXTI10_15_IRQn = 40, /*!< EXTI[15:10] interrupts */
  124. RTC_Alarm_IRQn = 41, /*!< RTC alarm interrupt */
  125. USBD_WKUP_IRQn = 42, /*!< USBD Wakeup interrupt */
  126. TIMER7_BRK_IRQn = 43, /*!< TIMER7 break interrupts */
  127. TIMER7_UP_IRQn = 44, /*!< TIMER7 update interrupts */
  128. TIMER7_TRG_CMT_IRQn = 45, /*!< TIMER7 trigger and commutation interrupts */
  129. TIMER7_Channel_IRQn = 46, /*!< TIMER7 channel capture compare interrupts */
  130. ADC2_IRQn = 47, /*!< ADC2 global interrupt */
  131. EXMC_IRQn = 48, /*!< EXMC global interrupt */
  132. SDIO_IRQn = 49, /*!< SDIO global interrupt */
  133. TIMER4_IRQn = 50, /*!< TIMER4 global interrupt */
  134. SPI2_IRQn = 51, /*!< SPI2 global interrupt */
  135. UART3_IRQn = 52, /*!< UART3 global interrupt */
  136. UART4_IRQn = 53, /*!< UART4 global interrupt */
  137. TIMER5_IRQn = 54, /*!< TIMER5 global interrupt */
  138. TIMER6_IRQn = 55, /*!< TIMER6 global interrupt */
  139. DMA1_Channel0_IRQn = 56, /*!< DMA1 channel0 global interrupt */
  140. DMA1_Channel1_IRQn = 57, /*!< DMA1 channel1 global interrupt */
  141. DMA1_Channel2_IRQn = 58, /*!< DMA1 channel2 global interrupt */
  142. DMA1_Channel3_Channel4_IRQn = 59, /*!< DMA1 channel3 and channel4 global Interrupt */
  143. #endif /* GD32F30X_HD */
  144. #ifdef GD32F30X_XD
  145. USBD_HP_CAN0_TX_IRQn = 19, /*!< CAN0 TX interrupts */
  146. USBD_LP_CAN0_RX0_IRQn = 20, /*!< CAN0 RX0 interrupts */
  147. CAN0_RX1_IRQn = 21, /*!< CAN0 RX1 interrupts */
  148. CAN0_EWMC_IRQn = 22, /*!< CAN0 EWMC interrupts */
  149. EXTI5_9_IRQn = 23, /*!< EXTI[9:5] interrupts */
  150. TIMER0_BRK_TIMER8_IRQn = 24, /*!< TIMER0 break and TIMER8 interrupts */
  151. TIMER0_UP_TIMER9_IRQn = 25, /*!< TIMER0 update and TIMER9 interrupts */
  152. TIMER0_TRG_CMT_TIMER10_IRQn = 26, /*!< TIMER0 trigger and commutation and TIMER10 interrupts */
  153. TIMER0_Channel_IRQn = 27, /*!< TIMER0 channel capture compare interrupts */
  154. TIMER1_IRQn = 28, /*!< TIMER1 interrupt */
  155. TIMER2_IRQn = 29, /*!< TIMER2 interrupt */
  156. TIMER3_IRQn = 30, /*!< TIMER3 interrupts */
  157. I2C0_EV_IRQn = 31, /*!< I2C0 event interrupt */
  158. I2C0_ER_IRQn = 32, /*!< I2C0 error interrupt */
  159. I2C1_EV_IRQn = 33, /*!< I2C1 event interrupt */
  160. I2C1_ER_IRQn = 34, /*!< I2C1 error interrupt */
  161. SPI0_IRQn = 35, /*!< SPI0 interrupt */
  162. SPI1_IRQn = 36, /*!< SPI1 interrupt */
  163. USART0_IRQn = 37, /*!< USART0 interrupt */
  164. USART1_IRQn = 38, /*!< USART1 interrupt */
  165. USART2_IRQn = 39, /*!< USART2 interrupt */
  166. EXTI10_15_IRQn = 40, /*!< EXTI[15:10] interrupts */
  167. RTC_Alarm_IRQn = 41, /*!< RTC alarm interrupt */
  168. USBD_WKUP_IRQn = 42, /*!< USBD wakeup interrupt */
  169. TIMER7_BRK_TIMER11_IRQn = 43, /*!< TIMER7 break and TIMER11 interrupts */
  170. TIMER7_UP_TIMER12_IRQn = 44, /*!< TIMER7 update and TIMER12 interrupts */
  171. TIMER7_TRG_CMT_TIMER13_IRQn = 45, /*!< TIMER7 trigger and commutation and TIMER13 interrupts */
  172. TIMER7_Channel_IRQn = 46, /*!< TIMER7 channel capture compare interrupts */
  173. ADC2_IRQn = 47, /*!< ADC2 global interrupt */
  174. EXMC_IRQn = 48, /*!< EXMC global interrupt */
  175. SDIO_IRQn = 49, /*!< SDIO global interrupt */
  176. TIMER4_IRQn = 50, /*!< TIMER4 global interrupt */
  177. SPI2_IRQn = 51, /*!< SPI2 global interrupt */
  178. UART3_IRQn = 52, /*!< UART3 global interrupt */
  179. UART4_IRQn = 53, /*!< UART4 global interrupt */
  180. TIMER5_IRQn = 54, /*!< TIMER5 global interrupt */
  181. TIMER6_IRQn = 55, /*!< TIMER6 global interrupt */
  182. DMA1_Channel0_IRQn = 56, /*!< DMA1 channel0 global interrupt */
  183. DMA1_Channel1_IRQn = 57, /*!< DMA1 channel1 global interrupt */
  184. DMA1_Channel2_IRQn = 58, /*!< DMA1 channel2 global interrupt */
  185. DMA1_Channel3_Channel4_IRQn = 59, /*!< DMA1 channel3 and channel4 global interrupt */
  186. #endif /* GD32F30X_XD */
  187. #ifdef GD32F30X_CL
  188. CAN0_TX_IRQn = 19, /*!< CAN0 TX interrupts */
  189. CAN0_RX0_IRQn = 20, /*!< CAN0 RX0 interrupts */
  190. CAN0_RX1_IRQn = 21, /*!< CAN0 RX1 interrupts */
  191. CAN0_EWMC_IRQn = 22, /*!< CAN0 EWMC interrupts */
  192. EXTI5_9_IRQn = 23, /*!< EXTI[9:5] interrupts */
  193. TIMER0_BRK_TIMER8_IRQn = 24, /*!< TIMER0 break and TIMER8 interrupts */
  194. TIMER0_UP_TIMER9_IRQn = 25, /*!< TIMER0 update and TIMER9 interrupts */
  195. TIMER0_TRG_CMT_TIMER10_IRQn = 26, /*!< TIMER0 trigger and commutation and TIMER10 interrupts */
  196. TIMER0_Channel_IRQn = 27, /*!< TIMER0 channel capture compare interrupts */
  197. TIMER1_IRQn = 28, /*!< TIMER1 interrupt */
  198. TIMER2_IRQn = 29, /*!< TIMER2 interrupt */
  199. TIMER3_IRQn = 30, /*!< TIMER3 interrupts */
  200. I2C0_EV_IRQn = 31, /*!< I2C0 event interrupt */
  201. I2C0_ER_IRQn = 32, /*!< I2C0 error interrupt */
  202. I2C1_EV_IRQn = 33, /*!< I2C1 event interrupt */
  203. I2C1_ER_IRQn = 34, /*!< I2C1 error interrupt */
  204. SPI0_IRQn = 35, /*!< SPI0 interrupt */
  205. SPI1_IRQn = 36, /*!< SPI1 interrupt */
  206. USART0_IRQn = 37, /*!< USART0 interrupt */
  207. USART1_IRQn = 38, /*!< USART1 interrupt */
  208. USART2_IRQn = 39, /*!< USART2 interrupt */
  209. EXTI10_15_IRQn = 40, /*!< EXTI[15:10] interrupts */
  210. RTC_ALARM_IRQn = 41, /*!< RTC alarm interrupt */
  211. USBFS_WKUP_IRQn = 42, /*!< USBFS wakeup interrupt */
  212. TIMER7_BRK_TIMER11_IRQn = 43, /*!< TIMER7 break and TIMER11 interrupts */
  213. TIMER7_UP_TIMER12_IRQn = 44, /*!< TIMER7 update and TIMER12 interrupts */
  214. TIMER7_TRG_CMT_TIMER13_IRQn = 45, /*!< TIMER7 trigger and commutation and TIMER13 interrupts */
  215. TIMER7_Channel_IRQn = 46, /*!< TIMER7 channel capture compare interrupts */
  216. EXMC_IRQn = 48, /*!< EXMC global interrupt */
  217. TIMER4_IRQn = 50, /*!< TIMER4 global interrupt */
  218. SPI2_IRQn = 51, /*!< SPI2 global interrupt */
  219. UART3_IRQn = 52, /*!< UART3 global interrupt */
  220. UART4_IRQn = 53, /*!< UART4 global interrupt */
  221. TIMER5_IRQn = 54, /*!< TIMER5 global interrupt */
  222. TIMER6_IRQn = 55, /*!< TIMER6 global interrupt */
  223. DMA1_Channel0_IRQn = 56, /*!< DMA1 channel0 global interrupt */
  224. DMA1_Channel1_IRQn = 57, /*!< DMA1 channel1 global interrupt */
  225. DMA1_Channel2_IRQn = 58, /*!< DMA1 channel2 global interrupt */
  226. DMA1_Channel3_IRQn = 59, /*!< DMA1 channel3 global interrupt */
  227. DMA1_Channel4_IRQn = 60, /*!< DMA1 channel3 global interrupt */
  228. ENET_IRQn = 61, /*!< ENET global interrupt */
  229. ENET_WKUP_IRQn = 62, /*!< ENET Wakeup interrupt */
  230. CAN1_TX_IRQn = 63, /*!< CAN1 TX interrupt */
  231. CAN1_RX0_IRQn = 64, /*!< CAN1 RX0 interrupt */
  232. CAN1_RX1_IRQn = 65, /*!< CAN1 RX1 interrupt */
  233. CAN1_EWMC_IRQn = 66, /*!< CAN1 EWMC interrupt */
  234. USBFS_IRQn = 67, /*!< USBFS global interrupt */
  235. #endif /* GD32F30X_CL */
  236. } IRQn_Type;
  237. /* includes */
  238. #include "core_cm4.h"
  239. #include "system_gd32f30x.h"
  240. #include <stdint.h>
  241. /* enum definitions */
  242. typedef enum {DISABLE = 0, ENABLE = !DISABLE} EventStatus, ControlStatus;
  243. typedef enum {FALSE = 0, TRUE = !FALSE} bool;
  244. typedef enum {RESET = 0, SET = !RESET} FlagStatus;
  245. typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrStatus;
  246. /* bit operations */
  247. #define REG32(addr) (*(volatile uint32_t *)(uint32_t)(addr))
  248. #define REG16(addr) (*(volatile uint16_t *)(uint32_t)(addr))
  249. #define REG8(addr) (*(volatile uint8_t *)(uint32_t)(addr))
  250. #define BIT(x) ((uint32_t)((uint32_t)0x01U<<(x)))
  251. #define BITS(start, end) ((0xFFFFFFFFUL << (start)) & (0xFFFFFFFFUL >> (31U - (uint32_t)(end))))
  252. #define GET_BITS(regval, start, end) (((regval) & BITS((start),(end))) >> (start))
  253. /* main flash and SRAM memory map */
  254. #define FLASH_BASE ((uint32_t)0x08000000U) /*!< main FLASH base address */
  255. #define SRAM_BASE ((uint32_t)0x20000000U) /*!< SRAM0 base address */
  256. #define OB_BASE ((uint32_t)0x1FFFF800U) /*!< OB base address */
  257. #define DBG_BASE ((uint32_t)0xE0042000U) /*!< DBG base address */
  258. #define EXMC_BASE ((uint32_t)0xA0000000U) /*!< EXMC register base address */
  259. /* peripheral memory map */
  260. #define APB1_BUS_BASE ((uint32_t)0x40000000U) /*!< apb1 base address */
  261. #define APB2_BUS_BASE ((uint32_t)0x40010000U) /*!< apb2 base address */
  262. #define AHB1_BUS_BASE ((uint32_t)0x40018000U) /*!< ahb1 base address */
  263. #define AHB3_BUS_BASE ((uint32_t)0x60000000U) /*!< ahb3 base address */
  264. /* advanced peripheral bus 1 memory map */
  265. #define TIMER_BASE (APB1_BUS_BASE + 0x00000000U) /*!< TIMER base address */
  266. #define RTC_BASE (APB1_BUS_BASE + 0x00002800U) /*!< RTC base address */
  267. #define WWDGT_BASE (APB1_BUS_BASE + 0x00002C00U) /*!< WWDGT base address */
  268. #define FWDGT_BASE (APB1_BUS_BASE + 0x00003000U) /*!< FWDGT base address */
  269. #define SPI_BASE (APB1_BUS_BASE + 0x00003800U) /*!< SPI base address */
  270. #define USART_BASE (APB1_BUS_BASE + 0x00004400U) /*!< USART base address */
  271. #define I2C_BASE (APB1_BUS_BASE + 0x00005400U) /*!< I2C base address */
  272. #define USBD_BASE (APB1_BUS_BASE + 0x00005C00U) /*!< USBD base address */
  273. #define CAN_BASE (APB1_BUS_BASE + 0x00006400U) /*!< CAN base address */
  274. #define BKP_BASE (APB1_BUS_BASE + 0x00006C00U) /*!< BKP base address */
  275. #define PMU_BASE (APB1_BUS_BASE + 0x00007000U) /*!< PMU base address */
  276. #define DAC_BASE (APB1_BUS_BASE + 0x00007400U) /*!< DAC base address */
  277. #define CTC_BASE (APB1_BUS_BASE + 0x0000C800U) /*!< CTC base address */
  278. /* advanced peripheral bus 2 memory map */
  279. #define AFIO_BASE (APB2_BUS_BASE + 0x00000000U) /*!< AFIO base address */
  280. #define EXTI_BASE (APB2_BUS_BASE + 0x00000400U) /*!< EXTI base address */
  281. #define GPIO_BASE (APB2_BUS_BASE + 0x00000800U) /*!< GPIO base address */
  282. #define ADC_BASE (APB2_BUS_BASE + 0x00002400U) /*!< ADC base address */
  283. /* advanced high performance bus 1 memory map */
  284. #define SDIO_BASE (AHB1_BUS_BASE + 0x00000000U) /*!< SDIO base address */
  285. #define DMA_BASE (AHB1_BUS_BASE + 0x00008000U) /*!< DMA base address */
  286. #define RCU_BASE (AHB1_BUS_BASE + 0x00009000U) /*!< RCU base address */
  287. #define FMC_BASE (AHB1_BUS_BASE + 0x0000A000U) /*!< FMC base address */
  288. #define CRC_BASE (AHB1_BUS_BASE + 0x0000B000U) /*!< CRC base address */
  289. #define ENET_BASE (AHB1_BUS_BASE + 0x00010000U) /*!< ENET base address */
  290. #define USBFS_BASE (AHB1_BUS_BASE + 0x0FFE8000U) /*!< USBFS base address */
  291. /* define marco USE_STDPERIPH_DRIVER */
  292. #if !defined USE_STDPERIPH_DRIVER
  293. #define USE_STDPERIPH_DRIVER
  294. #endif
  295. #ifdef USE_STDPERIPH_DRIVER
  296. #include "gd32f30x_libopt.h"
  297. #endif /* USE_STDPERIPH_DRIVER */
  298. #ifdef cplusplus
  299. }
  300. #endif
  301. #endif