1
0

gd32f10x_rcc.h 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690
  1. /**
  2. ******************************************************************************
  3. * @brief RCC header file of the firmware library.
  4. ******************************************************************************
  5. */
  6. /* Define to prevent recursive inclusion -------------------------------------*/
  7. #ifndef __GD32F10X_RCC_H
  8. #define __GD32F10X_RCC_H
  9. #ifdef __cplusplus
  10. extern "C" {
  11. #endif
  12. /* Includes ------------------------------------------------------------------*/
  13. #include "gd32f10x.h"
  14. /** @addtogroup GD32F10x_Firmware
  15. * @{
  16. */
  17. /** @addtogroup RCC
  18. * @{
  19. */
  20. /** @defgroup RCC_Exported_Types
  21. * @{
  22. */
  23. /**
  24. * @brief RCC Initial Parameters
  25. */
  26. typedef struct {
  27. uint32_t CK_SYS_Frequency; /*!< The frequency of the CK_SYS. */
  28. uint32_t AHB_Frequency; /*!< The frequency of the AHB. */
  29. uint32_t APB1_Frequency; /*!< The frequency of the APB1. */
  30. uint32_t APB2_Frequency; /*!< The frequency of the APB2. */
  31. uint32_t ADCCLK_Frequency; /*!< The frequency of the ADCCLK. */
  32. } RCC_ClocksPara;
  33. /**
  34. * @}
  35. */
  36. /** @defgroup RCC_Exported_Constants
  37. * @{
  38. */
  39. /** @defgroup RCC_HSE_configuration
  40. * @{
  41. */
  42. #define RCC_HSE_OFF ((uint32_t)0x00000000)
  43. #define RCC_HSE_ON RCC_GCCR_HSEEN
  44. #define RCC_HSE_BYPASS RCC_GCCR_HSEEN | RCC_GCCR_HSEBPS
  45. /**
  46. * @}
  47. */
  48. /** @defgroup RCC_PLL_input_clock_source
  49. * @{
  50. */
  51. #define RCC_PLLSOURCE_HSI_DIV2 RCC_GCFGR_PLLSEL_HSI_DIV2
  52. #ifdef GD32F10X_CL
  53. #define RCC_PLLSOURCE_PREDIV1 RCC_GCFGR_PLLSEL_PREDIV1
  54. #else
  55. #define RCC_PLLSOURCE_HSE_DIV1 ((uint32_t)0x00010000)
  56. #define RCC_PLLSOURCE_HSE_DIV2 ((uint32_t)0x00030000)
  57. #endif /* GD32F10X_CL */
  58. /**
  59. * @}
  60. */
  61. /** @defgroup RCC_PLL_Multiplication_factor
  62. * @{
  63. */
  64. #define RCC_PLLMUL_2 RCC_GCFGR_PLLMF2
  65. #define RCC_PLLMUL_3 RCC_GCFGR_PLLMF3
  66. #define RCC_PLLMUL_4 RCC_GCFGR_PLLMF4
  67. #define RCC_PLLMUL_5 RCC_GCFGR_PLLMF5
  68. #define RCC_PLLMUL_6 RCC_GCFGR_PLLMF6
  69. #define RCC_PLLMUL_7 RCC_GCFGR_PLLMF7
  70. #define RCC_PLLMUL_8 RCC_GCFGR_PLLMF8
  71. #define RCC_PLLMUL_9 RCC_GCFGR_PLLMF9
  72. #define RCC_PLLMUL_10 RCC_GCFGR_PLLMF10
  73. #define RCC_PLLMUL_11 RCC_GCFGR_PLLMF11
  74. #define RCC_PLLMUL_12 RCC_GCFGR_PLLMF12
  75. #define RCC_PLLMUL_13 RCC_GCFGR_PLLMF13
  76. #define RCC_PLLMUL_14 RCC_GCFGR_PLLMF14
  77. #define RCC_PLLMUL_16 RCC_GCFGR_PLLMF16
  78. #define RCC_PLLMUL_17 RCC_GCFGR_PLLMF17
  79. #define RCC_PLLMUL_18 RCC_GCFGR_PLLMF18
  80. #define RCC_PLLMUL_19 RCC_GCFGR_PLLMF19
  81. #define RCC_PLLMUL_20 RCC_GCFGR_PLLMF20
  82. #define RCC_PLLMUL_21 RCC_GCFGR_PLLMF21
  83. #define RCC_PLLMUL_22 RCC_GCFGR_PLLMF22
  84. #define RCC_PLLMUL_23 RCC_GCFGR_PLLMF23
  85. #define RCC_PLLMUL_24 RCC_GCFGR_PLLMF24
  86. #define RCC_PLLMUL_25 RCC_GCFGR_PLLMF25
  87. #define RCC_PLLMUL_26 RCC_GCFGR_PLLMF26
  88. #define RCC_PLLMUL_27 RCC_GCFGR_PLLMF27
  89. #define RCC_PLLMUL_28 RCC_GCFGR_PLLMF28
  90. #define RCC_PLLMUL_29 RCC_GCFGR_PLLMF29
  91. #define RCC_PLLMUL_30 RCC_GCFGR_PLLMF30
  92. #define RCC_PLLMUL_31 RCC_GCFGR_PLLMF31
  93. #define RCC_PLLMUL_32 RCC_GCFGR_PLLMF32
  94. #ifdef GD32F10X_CL
  95. #define RCC_PLLMUL_6_5 RCC_GCFGR_PLLMF6_5
  96. #else
  97. #define RCC_PLLMUL_15 RCC_GCFGR_PLLMF15
  98. #endif /* GD32F10X_CL */
  99. /**
  100. * @}
  101. */
  102. #ifdef GD32F10X_CL
  103. /** @defgroup RCC_PREDIV1_division_factor
  104. * @{
  105. */
  106. #define RCC_PREDIV1_DIV1 RCC_GCFGR2_PREDV1_DIV1
  107. #define RCC_PREDIV1_DIV2 RCC_GCFGR2_PREDV1_DIV2
  108. #define RCC_PREDIV1_DIV3 RCC_GCFGR2_PREDV1_DIV3
  109. #define RCC_PREDIV1_DIV4 RCC_GCFGR2_PREDV1_DIV4
  110. #define RCC_PREDIV1_DIV5 RCC_GCFGR2_PREDV1_DIV5
  111. #define RCC_PREDIV1_DIV6 RCC_GCFGR2_PREDV1_DIV6
  112. #define RCC_PREDIV1_DIV7 RCC_GCFGR2_PREDV1_DIV7
  113. #define RCC_PREDIV1_DIV8 RCC_GCFGR2_PREDV1_DIV8
  114. #define RCC_PREDIV1_DIV9 RCC_GCFGR2_PREDV1_DIV9
  115. #define RCC_PREDIV1_DIV10 RCC_GCFGR2_PREDV1_DIV10
  116. #define RCC_PREDIV1_DIV11 RCC_GCFGR2_PREDV1_DIV11
  117. #define RCC_PREDIV1_DIV12 RCC_GCFGR2_PREDV1_DIV12
  118. #define RCC_PREDIV1_DIV13 RCC_GCFGR2_PREDV1_DIV13
  119. #define RCC_PREDIV1_DIV14 RCC_GCFGR2_PREDV1_DIV14
  120. #define RCC_PREDIV1_DIV15 RCC_GCFGR2_PREDV1_DIV15
  121. #define RCC_PREDIV1_DIV16 RCC_GCFGR2_PREDV1_DIV16
  122. /**
  123. * @}
  124. */
  125. /** @defgroup RCC_PREDIV1_clock_source
  126. * @{
  127. */
  128. #define RCC_PREDIV1_SOURCE_HSE RCC_GCFGR2_PREDV1SEL_HSE
  129. #define RCC_PREDIV1_SOURCE_PLL2 RCC_GCFGR2_PREDV1SEL_PLL2
  130. /**
  131. * @}
  132. */
  133. /** @defgroup RCC_PREDIV2_division_factor
  134. * @{
  135. */
  136. #define RCC_PREDIV2_DIV1 RCC_GCFGR2_PREDV2_DIV1
  137. #define RCC_PREDIV2_DIV2 RCC_GCFGR2_PREDV2_DIV2
  138. #define RCC_PREDIV2_DIV3 RCC_GCFGR2_PREDV2_DIV3
  139. #define RCC_PREDIV2_DIV4 RCC_GCFGR2_PREDV2_DIV4
  140. #define RCC_PREDIV2_DIV5 RCC_GCFGR2_PREDV2_DIV5
  141. #define RCC_PREDIV2_DIV6 RCC_GCFGR2_PREDV2_DIV6
  142. #define RCC_PREDIV2_DIV7 RCC_GCFGR2_PREDV2_DIV7
  143. #define RCC_PREDIV2_DIV8 RCC_GCFGR2_PREDV2_DIV8
  144. #define RCC_PREDIV2_DIV9 RCC_GCFGR2_PREDV2_DIV9
  145. #define RCC_PREDIV2_DIV10 RCC_GCFGR2_PREDV2_DIV10
  146. #define RCC_PREDIV2_DIV11 RCC_GCFGR2_PREDV2_DIV11
  147. #define RCC_PREDIV2_DIV12 RCC_GCFGR2_PREDV2_DIV12
  148. #define RCC_PREDIV2_DIV13 RCC_GCFGR2_PREDV2_DIV13
  149. #define RCC_PREDIV2_DIV14 RCC_GCFGR2_PREDV2_DIV14
  150. #define RCC_PREDIV2_DIV15 RCC_GCFGR2_PREDV2_DIV15
  151. #define RCC_PREDIV2_DIV16 RCC_GCFGR2_PREDV2_DIV16
  152. /**
  153. * @}
  154. */
  155. /** @defgroup RCC_PLL2_multiplication_factor
  156. * @{
  157. */
  158. #define RCC_PLL2MUL_8 RCC_GCFGR2_PLL2MF8
  159. #define RCC_PLL2MUL_9 RCC_GCFGR2_PLL2MF9
  160. #define RCC_PLL2MUL_10 RCC_GCFGR2_PLL2MF10
  161. #define RCC_PLL2MUL_11 RCC_GCFGR2_PLL2MF11
  162. #define RCC_PLL2MUL_12 RCC_GCFGR2_PLL2MF12
  163. #define RCC_PLL2MUL_13 RCC_GCFGR2_PLL2MF13
  164. #define RCC_PLL2MUL_14 RCC_GCFGR2_PLL2MF14
  165. #define RCC_PLL2MUL_16 RCC_GCFGR2_PLL2MF16
  166. #define RCC_PLL2MUL_20 RCC_GCFGR2_PLL2MF20
  167. /**
  168. * @}
  169. */
  170. /** @defgroup RCC_PLL3_multiplication_factor
  171. * @{
  172. */
  173. #define RCC_PLL3MUL_8 RCC_GCFGR2_PLL3MF8
  174. #define RCC_PLL3MUL_9 RCC_GCFGR2_PLL3MF9
  175. #define RCC_PLL3MUL_10 RCC_GCFGR2_PLL3MF10
  176. #define RCC_PLL3MUL_11 RCC_GCFGR2_PLL3MF11
  177. #define RCC_PLL3MUL_12 RCC_GCFGR2_PLL3MF12
  178. #define RCC_PLL3MUL_13 RCC_GCFGR2_PLL3MF13
  179. #define RCC_PLL3MUL_14 RCC_GCFGR2_PLL3MF14
  180. #define RCC_PLL3MUL_16 RCC_GCFGR2_PLL3MF16
  181. #define RCC_PLL3MUL_20 RCC_GCFGR2_PLL3MF20
  182. /**
  183. * @}
  184. */
  185. #endif /* GD32F10X_CL */
  186. /** @defgroup RCC_System_Clock_Source
  187. * @{
  188. */
  189. #define RCC_SYSCLKSOURCE_HSI RCC_GCFGR_SCS_HSI
  190. #define RCC_SYSCLKSOURCE_HSE RCC_GCFGR_SCS_HSE
  191. #define RCC_SYSCLKSOURCE_PLLCLK RCC_GCFGR_SCS_PLL
  192. /**
  193. * @}
  194. */
  195. /** @defgroup RCC_AHB_Clock_Source
  196. * @{
  197. */
  198. #define RCC_SYSCLK_DIV1 RCC_GCFGR_AHBPS_DIV1
  199. #define RCC_SYSCLK_DIV2 RCC_GCFGR_AHBPS_DIV2
  200. #define RCC_SYSCLK_DIV4 RCC_GCFGR_AHBPS_DIV4
  201. #define RCC_SYSCLK_DIV8 RCC_GCFGR_AHBPS_DIV8
  202. #define RCC_SYSCLK_DIV16 RCC_GCFGR_AHBPS_DIV16
  203. #define RCC_SYSCLK_DIV64 RCC_GCFGR_AHBPS_DIV64
  204. #define RCC_SYSCLK_DIV128 RCC_GCFGR_AHBPS_DIV128
  205. #define RCC_SYSCLK_DIV256 RCC_GCFGR_AHBPS_DIV256
  206. #define RCC_SYSCLK_DIV512 RCC_GCFGR_AHBPS_DIV512
  207. /**
  208. * @}
  209. */
  210. /** @defgroup RCC_APB_Clock_Source
  211. * @{
  212. */
  213. #define RCC_APB1AHB_DIV1 RCC_GCFGR_APB1PS_DIV1
  214. #define RCC_APB1AHB_DIV2 RCC_GCFGR_APB1PS_DIV2
  215. #define RCC_APB1AHB_DIV4 RCC_GCFGR_APB1PS_DIV4
  216. #define RCC_APB1AHB_DIV8 RCC_GCFGR_APB1PS_DIV8
  217. #define RCC_APB1AHB_DIV16 RCC_GCFGR_APB1PS_DIV16
  218. #define RCC_APB2AHB_DIV1 RCC_GCFGR_APB2PS_DIV1
  219. #define RCC_APB2AHB_DIV2 RCC_GCFGR_APB2PS_DIV2
  220. #define RCC_APB2AHB_DIV4 RCC_GCFGR_APB2PS_DIV4
  221. #define RCC_APB2AHB_DIV8 RCC_GCFGR_APB2PS_DIV8
  222. #define RCC_APB2AHB_DIV16 RCC_GCFGR_APB2PS_DIV16
  223. /**
  224. * @}
  225. */
  226. /** @defgroup RCC_ADC_clock_source
  227. * @{
  228. */
  229. #define RCC_ADCCLK_APB2_DIV2 RCC_GCFGR_ADCPS_DIV2
  230. #define RCC_ADCCLK_APB2_DIV4 RCC_GCFGR_ADCPS_DIV4
  231. #define RCC_ADCCLK_APB2_DIV6 RCC_GCFGR_ADCPS_DIV6
  232. #define RCC_ADCCLK_APB2_DIV8 RCC_GCFGR_ADCPS_DIV8
  233. #define RCC_ADCCLK_APB2_DIV12 RCC_GCFGR_ADCPS_DIV12
  234. #define RCC_ADCCLK_APB2_DIV16 RCC_GCFGR_ADCPS_DIV16
  235. /**
  236. * @}
  237. */
  238. #ifdef GD32F10X_CL
  239. /** @defgroup RCC_USB_OTG_clock_source
  240. * @{
  241. */
  242. #define RCC_OTGCLK_PLL_DIV1 RCC_GCFGR_OTGFSPS_Div1
  243. #define RCC_OTGCLK_PLL_DIV1_5 RCC_GCFGR_OTGFSPS_Div1_5
  244. #define RCC_OTGCLK_PLL_DIV2 RCC_GCFGR_OTGFSPS_Div2
  245. #define RCC_OTGCLK_PLL_DIV2_5 RCC_GCFGR_OTGFSPS_Div2_5
  246. /**
  247. * @}
  248. */
  249. #else
  250. /** @defgroup RCC_USB_clock_source
  251. * @{
  252. */
  253. #define RCC_USBCLK_PLL_DIV1 RCC_GCFGR_USBPS_Div1
  254. #define RCC_USBCLK_PLL_DIV1_5 RCC_GCFGR_USBPS_Div1_5
  255. #define RCC_USBCLK_PLL_DIV2 RCC_GCFGR_USBPS_Div2
  256. #define RCC_USBCLK_PLL_DIV2_5 RCC_GCFGR_USBPS_Div2_5
  257. /**
  258. * @}
  259. */
  260. #endif /* GD32F10X_CL */
  261. /** @defgroup RCC_CK_OUT_Clock_Source
  262. * @{
  263. */
  264. #ifdef GD32F10X_CL
  265. #define RCC_CKOUTSRC_NOCLOCK RCC_GCFGR_CKOUTSEL_NoClock
  266. #define RCC_CKOUTSRC_SYSCLK RCC_GCFGR_CKOUTSEL_SYSCLK
  267. #define RCC_CKOUTSRC_HSI RCC_GCFGR_CKOUTSEL_HSI
  268. #define RCC_CKOUTSRC_HSE RCC_GCFGR_CKOUTSEL_HSE
  269. #define RCC_CKOUTSRC_PLLCLK_DIV2 RCC_GCFGR_CKOUTSEL_PLL_DIV2
  270. #define RCC_CKOUTSRC_PLL2CLK RCC_GCFGR_CKOUTSEL_PLL2
  271. #define RCC_CKOUTSRC_PLL3CLK RCC_GCFGR_CKOUTSEL_PLL3
  272. #define RCC_CKOUTSRC_PLL3CLK_DIV2 RCC_GCFGR_CKOUTSEL_PLL3_DIV2
  273. #define RCC_CKOUTSRC_EXT1 RCC_GCFGR_CKOUTSEL_EXT1
  274. #else
  275. #define RCC_CKOUTSRC_NOCLOCK RCC_GCFGR_CKOUTSEL_NoClock
  276. #define RCC_CKOUTSRC_SYSCLK RCC_GCFGR_CKOUTSEL_SYSCLK
  277. #define RCC_CKOUTSRC_HSI RCC_GCFGR_CKOUTSEL_HSI
  278. #define RCC_CKOUTSRC_HSE RCC_GCFGR_CKOUTSEL_HSE
  279. #define RCC_CKOUTSRC_PLLCLK_DIV2 RCC_GCFGR_CKOUTSEL_PLL_DIV2
  280. #endif /* GD32F10X_CL */
  281. /**
  282. * @}
  283. */
  284. /** @defgroup RCC_Interrupt_Source
  285. * @{
  286. */
  287. #define RCC_INT_LSISTB ((uint8_t)0x01)
  288. #define RCC_INT_LSESTB ((uint8_t)0x02)
  289. #define RCC_INT_HSISTB ((uint8_t)0x04)
  290. #define RCC_INT_HSESTB ((uint8_t)0x08)
  291. #define RCC_INT_PLLSTB ((uint8_t)0x10)
  292. #define RCC_INT_CKM ((uint8_t)0x80)
  293. #ifdef GD32F10X_CL
  294. #define RCC_INT_PLL2STB ((uint8_t)0x20)
  295. #define RCC_INT_PLL3STB ((uint8_t)0x40)
  296. #endif /* GD32F10X_CL */
  297. /**
  298. * @}
  299. */
  300. #ifdef GD32F10X_CL
  301. /** @defgroup RCC_I2S2_clock_source
  302. * @{
  303. */
  304. #define RCC_I2S2CLK_SYSCLK RCC_GCFGR2_I2S2SEL_CK_SYS
  305. #define RCC_I2S2CLK_PLL3 RCC_GCFGR2_I2S2SEL_PLL3
  306. /**
  307. * @}
  308. */
  309. /** @defgroup RCC_I2S3_clock_source
  310. * @{
  311. */
  312. #define RCC_I2S3CLK_SYSCLK RCC_GCFGR2_I2S3SEL_CK_SYS
  313. #define RCC_I2S3CLK_PLL3 RCC_GCFGR2_I2S3SEL_PLL3
  314. /**
  315. * @}
  316. */
  317. #endif /* GD32F10X_CL */
  318. /** @defgroup RCC_LSE_configuration
  319. * @{
  320. */
  321. #define RCC_LSE_OFF ((uint32_t)0x00000000)
  322. #define RCC_LSE_EN RCC_BDCR_LSEEN
  323. #define RCC_LSE_BYPASS ((uint32_t)(RCC_BDCR_LSEEN | RCC_BDCR_LSEBPS))
  324. /**
  325. * @}
  326. */
  327. /** @defgroup RCC_RTC_clock_source
  328. * @{
  329. */
  330. #define RCC_RTCCLKSOURCE_LSE RCC_BDCR_RTCSEL_LSE
  331. #define RCC_RTCCLKSOURCE_LSI RCC_BDCR_RTCSEL_LSI
  332. #define RCC_RTCCLKSOURCE_HSE_DIV128 RCC_BDCR_RTCSEL_HSE128
  333. /**
  334. * @}
  335. */
  336. /** @defgroup RCC_AHB_peripheral
  337. * @{
  338. */
  339. #define RCC_AHBPERIPH_DMA1 RCC_AHBCCR_DMA1EN
  340. #define RCC_AHBPERIPH_DMA2 RCC_AHBCCR_DMA2EN
  341. #define RCC_AHBPERIPH_SRAM RCC_AHBCCR_SRAMEN
  342. #define RCC_AHBPERIPH_FMC RCC_AHBCCR_FMCEN
  343. #define RCC_AHBPERIPH_CRC RCC_AHBCCR_CRCEN
  344. #define RCC_AHBPERIPH_EXMC RCC_AHBCCR_EXMCEN
  345. #ifdef GD32F10X_CL
  346. #define RCC_AHBPERIPH_OTG_FS RCC_AHBCCR_OTGFSEN
  347. #define RCC_AHBPERIPH_ETH_MAC RCC_AHBCCR_ETHMACEN
  348. #define RCC_AHBPERIPH_ETH_MAC_RX RCC_AHBCCR_ETHMACRXEN
  349. #define RCC_AHBPERIPH_ETH_MAC_TX RCC_AHBCCR_ETHMACTXEN
  350. #else
  351. #define RCC_AHBPERIPH_SDIO RCC_AHBCCR_SDIOEN
  352. #endif/* GD32F10X_CL */
  353. /**
  354. * @}
  355. */
  356. /** @defgroup RCC_AHB_Peripherals_RST
  357. * @{
  358. */
  359. #ifdef GD32F10X_CL
  360. #define RCC_AHBPERIPH_OTGFSRST RCC_AHBRCR_OTGFSRST
  361. #define RCC_AHBPERIPH_ETHMACRST RCC_AHBRCR_ETHMACRST
  362. #endif/* GD32F10X_CL */
  363. /**
  364. * @}
  365. */
  366. /** @defgroup RCC_APB2_peripheral
  367. * @{
  368. */
  369. #define RCC_APB2PERIPH_AF RCC_APB2CCR_AFEN
  370. #define RCC_APB2PERIPH_GPIOA RCC_APB2CCR_PAEN
  371. #define RCC_APB2PERIPH_GPIOB RCC_APB2CCR_PBEN
  372. #define RCC_APB2PERIPH_GPIOC RCC_APB2CCR_PCEN
  373. #define RCC_APB2PERIPH_GPIOD RCC_APB2CCR_PDEN
  374. #define RCC_APB2PERIPH_GPIOE RCC_APB2CCR_PEEN
  375. #define RCC_APB2PERIPH_GPIOF RCC_APB2CCR_PFEN
  376. #define RCC_APB2PERIPH_GPIOG RCC_APB2CCR_PGEN
  377. #define RCC_APB2PERIPH_ADC0 RCC_APB2CCR_ADC0EN
  378. #define RCC_APB2PERIPH_ADC1 RCC_APB2CCR_ADC1EN
  379. #define RCC_APB2PERIPH_TIMER0 RCC_APB2CCR_TIMER0EN
  380. #define RCC_APB2PERIPH_SPI1 RCC_APB2CCR_SPI1EN
  381. #define RCC_APB2PERIPH_TIMER7 RCC_APB2CCR_TIMER7EN
  382. #define RCC_APB2PERIPH_USART1 RCC_APB2CCR_USART1EN
  383. #define RCC_APB2PERIPH_ADC2 RCC_APB2CCR_ADC2EN
  384. #define RCC_APB2PERIPH_TIMER8 RCC_APB2CCR_TIMER8EN
  385. #define RCC_APB2PERIPH_TIMER9 RCC_APB2CCR_TIMER9EN
  386. #define RCC_APB2PERIPH_TIMER10 RCC_APB2CCR_TIMER10EN
  387. /**
  388. * @}
  389. */
  390. /** @defgroup RCC_APB2_Peripherals_RST
  391. * @{
  392. */
  393. #define RCC_APB2PERIPH_AFRST RCC_APB2RCR_AFRST
  394. #define RCC_APB2PERIPH_GPIOARST RCC_APB2RCR_PARST
  395. #define RCC_APB2PERIPH_GPIOBRST RCC_APB2RCR_PBRST
  396. #define RCC_APB2PERIPH_GPIOCRST RCC_APB2RCR_PCRST
  397. #define RCC_APB2PERIPH_GPIODRST RCC_APB2RCR_PDRST
  398. #define RCC_APB2PERIPH_GPIOERST RCC_APB2RCR_PERST
  399. #define RCC_APB2PERIPH_GPIOFRST RCC_APB2RCR_PFRST
  400. #define RCC_APB2PERIPH_GPIOGRST RCC_APB2RCR_PGRST
  401. #define RCC_APB2PERIPH_ADC0RST RCC_APB2RCR_ADC0RST
  402. #define RCC_APB2PERIPH_ADC1RST RCC_APB2RCR_ADC1RST
  403. #define RCC_APB2PERIPH_TIMER0RST RCC_APB2RCR_TIMER0RST
  404. #define RCC_APB2PERIPH_SPI1RST RCC_APB2RCR_SPI1RST
  405. #define RCC_APB2PERIPH_TIMER7RST RCC_APB2RCR_TIMER7RST
  406. #define RCC_APB2PERIPH_USART0RST RCC_APB2RCR_USART0RST
  407. #define RCC_APB2PERIPH_ADC2RST RCC_APB2RCR_ADC2RST
  408. #define RCC_APB2PERIPH_TIMER8RST RCC_APB2RCR_TIMER8RST
  409. #define RCC_APB2PERIPH_TIMER9RST RCC_APB2RCR_TIMER9RST
  410. #define RCC_APB2PERIPH_TIMER10RST RCC_APB2RCR_TIMER10RST
  411. /**
  412. * @}
  413. */
  414. /** @defgroup RCC_APB1_peripheral
  415. * @{
  416. */
  417. #define RCC_APB1PERIPH_TIMER1 RCC_APB1CCR_TIMER1EN
  418. #define RCC_APB1PERIPH_TIMER2 RCC_APB1CCR_TIMER2EN
  419. #define RCC_APB1PERIPH_TIMER3 RCC_APB1CCR_TIMER3EN
  420. #define RCC_APB1PERIPH_TIMER4 RCC_APB1CCR_TIMER4EN
  421. #define RCC_APB1PERIPH_TIMER5 RCC_APB1CCR_TIMER5EN
  422. #define RCC_APB1PERIPH_TIMER6 RCC_APB1CCR_TIMER6EN
  423. #define RCC_APB1PERIPH_TIMER11 RCC_APB1CCR_TIMER11EN
  424. #define RCC_APB1PERIPH_TIMER12 RCC_APB1CCR_TIMER12EN
  425. #define RCC_APB1PERIPH_TIMER13 RCC_APB1CCR_TIMER13EN
  426. #define RCC_APB1PERIPH_WWDG RCC_APB1CCR_WWDGEN
  427. #define RCC_APB1PERIPH_SPI2 RCC_APB1CCR_SPI2EN
  428. #define RCC_APB1PERIPH_SPI3 RCC_APB1CCR_SPI3EN
  429. #define RCC_APB1PERIPH_USART2 RCC_APB1CCR_USART2EN
  430. #define RCC_APB1PERIPH_USART3 RCC_APB1CCR_USART3EN
  431. #define RCC_APB1PERIPH_UART4 RCC_APB1CCR_UART4EN
  432. #define RCC_APB1PERIPH_UART5 RCC_APB1CCR_UART5EN
  433. #define RCC_APB1PERIPH_I2C1 RCC_APB1CCR_I2C1EN
  434. #define RCC_APB1PERIPH_I2C2 RCC_APB1CCR_I2C2EN
  435. #define RCC_APB1PERIPH_USB RCC_APB1CCR_USBEN
  436. #define RCC_APB1PERIPH_CAN1 RCC_APB1CCR_CAN1EN
  437. #define RCC_APB1PERIPH_CAN2 RCC_APB1CCR_CAN2EN
  438. #define RCC_APB1PERIPH_BKP RCC_APB1CCR_BKPEN
  439. #define RCC_APB1PERIPH_PWR RCC_APB1CCR_PWREN
  440. #define RCC_APB1PERIPH_DAC RCC_APB1CCR_DACEN
  441. /**
  442. * @}
  443. */
  444. /** @defgroup RCC_APB1_Peripherals_RST
  445. * @{
  446. */
  447. #define RCC_APB1PERIPH_TIMER1RST RCC_APB1RCR_TIMER1RST
  448. #define RCC_APB1PERIPH_TIMER2RST RCC_APB1RCR_TIMER2RST
  449. #define RCC_APB1PERIPH_TIMER3RST RCC_APB1RCR_TIMER3RST
  450. #define RCC_APB1PERIPH_TIMER4RST RCC_APB1RCR_TIMER4RST
  451. #define RCC_APB1PERIPH_TIMER5RST RCC_APB1RCR_TIMER5RST
  452. #define RCC_APB1PERIPH_TIMER6RST RCC_APB1RCR_TIMER6RST
  453. #define RCC_APB1PERIPH_TIMER11RST RCC_APB1RCR_TIMER11RST
  454. #define RCC_APB1PERIPH_TIMER12RST RCC_APB1RCR_TIMER12RST
  455. #define RCC_APB1PERIPH_TIMER13RST RCC_APB1RCR_TIMER13RST
  456. #define RCC_APB1PERIPH_WWDGRST RCC_APB1RCR_WWDGRST
  457. #define RCC_APB1PERIPH_SPI2RST RCC_APB1RCR_SPI2RST
  458. #define RCC_APB1PERIPH_SPI3RST RCC_APB1RCR_SPI3RST
  459. #define RCC_APB1PERIPH_USART1RST RCC_APB1RCR_USART1RST
  460. #define RCC_APB1PERIPH_USART2RST RCC_APB1RCR_USART2RST
  461. #define RCC_APB1PERIPH_UART3RST RCC_APB1RCR_UART3RST
  462. #define RCC_APB1PERIPH_UART4RST RCC_APB1RCR_UART4RST
  463. #define RCC_APB1PERIPH_I2C1RST RCC_APB1RCR_I2C1RST
  464. #define RCC_APB1PERIPH_I2C2RST RCC_APB1RCR_I2C2RST
  465. #define RCC_APB1PERIPH_USBRST RCC_APB1RCR_USBRST
  466. #define RCC_APB1PERIPH_CAN1RST RCC_APB1RCR_CAN1RST
  467. #define RCC_APB1PERIPH_CAN2RST RCC_APB1RCR_CAN2RST
  468. #define RCC_APB1PERIPH_BKPRST RCC_APB1RCR_BKPRST
  469. #define RCC_APB1PERIPH_PWRRST RCC_APB1RCR_PWRRST
  470. #define RCC_APB1PERIPH_DACRST RCC_APB1RCR_DACRST
  471. /**
  472. * @}
  473. */
  474. /** @defgroup RCC_Flag
  475. * @{
  476. */
  477. /* The flag to check is in GCCR register */
  478. #define RCC_FLAG_HSISTB ((uint8_t)0x21)
  479. #define RCC_FLAG_HSESTB ((uint8_t)0x31)
  480. #define RCC_FLAG_PLLSTB ((uint8_t)0x39)
  481. /* The flag to check is in BDCR register */
  482. #define RCC_FLAG_LSESTB ((uint8_t)0x41)
  483. /* The flag to check is in GCSR register */
  484. #define RCC_FLAG_LSISTB ((uint8_t)0x61)
  485. #define RCC_FLAG_EPRST ((uint8_t)0x7A)
  486. #define RCC_FLAG_POPDRST ((uint8_t)0x7B)
  487. #define RCC_FLAG_SWRRST ((uint8_t)0x7C)
  488. #define RCC_FLAG_IWDGRST ((uint8_t)0x7D)
  489. #define RCC_FLAG_WWDGRST ((uint8_t)0x7E)
  490. #define RCC_FLAG_LPRRST ((uint8_t)0x7F)
  491. #ifdef GD32F10X_CL
  492. /* The flag to check is in GCCR register */
  493. #define RCC_FLAG_PLL2STB ((uint8_t)0x3B)
  494. #define RCC_FLAG_PLL3STB ((uint8_t)0x3D)
  495. #endif/* GD32F10X_CL */
  496. /**
  497. * @}
  498. */
  499. /**
  500. * @}
  501. */
  502. /** @defgroup RCC_Exported_Functions
  503. * @{
  504. */
  505. /* Reset the RCC clock configuration to the default reset state */
  506. void RCC_DeInit(void);
  507. /* Internal/external clocks, PLL, CKM and CK_OUT configuration functions */
  508. void RCC_HSEConfig(uint32_t RCC_HSE);
  509. TypeState RCC_WaitForHSEStartUp(void);
  510. void RCC_AdjustHSICalibrationValue(uint8_t HSICalibrationValue);
  511. void RCC_HSI_Enable(TypeState NewValue);
  512. void RCC_PLLConfig(uint32_t RCC_PLLSelect, uint32_t RCC_PLLMF);
  513. void RCC_PLL_Enable(TypeState NewValue);
  514. void RCC_LSEConfig(uint32_t RCC_LSE);
  515. void RCC_LSI_Enable(TypeState NewValue);
  516. void RCC_HSEClockMonitor_Enable(TypeState NewValue);
  517. void RCC_CKOUTSRCConfig(uint32_t RCC_CKOUTSRC);
  518. #ifdef GD32F10X_CL
  519. void RCC_PREDV1Config(uint32_t RCC_PREDV1_Source, uint32_t RCC_PREDV1_Div);
  520. void RCC_PREDV2Config(uint32_t RCC_PREDV2_Div);
  521. void RCC_PLL2Config(uint32_t RCC_PLL2MF);
  522. void RCC_PLL2_Enable(TypeState NewValue);
  523. void RCC_PLL3Config(uint32_t RCC_PLL3MF);
  524. void RCC_PLL3_Enable(TypeState NewValue);
  525. #endif /* GD32F10X_CL */
  526. /* System, AHB, APB1 and APB2 busses clocks configuration functions */
  527. void RCC_CK_SYSConfig(uint32_t RCC_SYSCLKSource);
  528. uint8_t RCC_GetCK_SYSSource(void);
  529. void RCC_AHBConfig(uint32_t RCC_CK_SYSDiv);
  530. void RCC_APB1Config(uint32_t RCC_APB1);
  531. void RCC_APB2Config(uint32_t RCC_APB2);
  532. #ifndef GD32F10X_CL
  533. void RCC_USBCLKConfig(uint32_t RCC_USBCLK);
  534. #else
  535. void RCC_OTGFSCLKConfig(uint32_t RCC_OTGFSCLK);
  536. #endif /* GD32F10X_CL */
  537. void RCC_ADCCLKConfig(uint32_t RCC_ADCCLK);
  538. #ifdef GD32F10X_CL
  539. void RCC_I2S2CLKConfig(uint32_t RCC_I2S2CLK);
  540. void RCC_I2S3CLKConfig(uint32_t RCC_I2S3CLK);
  541. #endif /* GD32F10X_CL */
  542. void RCC_RTCCLKConfig(uint32_t RCC_RTCCLKSource);
  543. void RCC_GetClocksFreq(RCC_ClocksPara *RCC_Clocks);
  544. /* Peripheral clocks configuration functions */
  545. void RCC_AHBPeriphClock_Enable(uint32_t RCC_AHBPeriph, TypeState NewValue);
  546. void RCC_APB2PeriphClock_Enable(uint32_t RCC_APB2Periph, TypeState NewValue);
  547. void RCC_APB1PeriphClock_Enable(uint32_t RCC_APB1Periph, TypeState NewValue);
  548. void RCC_RTCCLK_Enable(TypeState NewValue);
  549. #ifdef GD32F10X_CL
  550. void RCC_AHBPeriphReset_Enable(uint32_t RCC_AHBPeriphRST, TypeState NewValue);
  551. #endif /* GD32F10X_CL */
  552. void RCC_APB2PeriphReset_Enable(uint32_t RCC_APB2PeriphRST, TypeState NewValue);
  553. void RCC_APB1PeriphReset_Enable(uint32_t RCC_APB1PeriphRST, TypeState NewValue);
  554. void RCC_BackupReset_Enable(TypeState NewValue);
  555. /* Interrupts and flags management functions */
  556. void RCC_INTConfig(uint8_t RCC_INT, TypeState NewValue);
  557. TypeState RCC_GetIntBitState(uint8_t RCC_INT);
  558. void RCC_ClearIntBitState(uint8_t RCC_INT);
  559. TypeState RCC_GetBitState(uint8_t RCC_FLAG);
  560. void RCC_ClearBitState(void);
  561. void RCC_KERNELVOLConfig(uint32_t RCC_KERNEL_VOL);
  562. #ifdef __cplusplus
  563. }
  564. #endif
  565. #endif /* __GD32F10x_RCC_H */
  566. /**
  567. * @}
  568. */
  569. /**
  570. * @}
  571. */
  572. /**
  573. * @}
  574. */