n32g45x_rcc.h 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708
  1. /*****************************************************************************
  2. * Copyright (c) 2019, Nations Technologies Inc.
  3. *
  4. * All rights reserved.
  5. * ****************************************************************************
  6. *
  7. * Redistribution and use in source and binary forms, with or without
  8. * modification, are permitted provided that the following conditions are met:
  9. *
  10. * - Redistributions of source code must retain the above copyright notice,
  11. * this list of conditions and the disclaimer below.
  12. *
  13. * Nations' name may not be used to endorse or promote products derived from
  14. * this software without specific prior written permission.
  15. *
  16. * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY NATIONS "AS IS" AND ANY EXPRESS OR
  17. * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  18. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
  19. * DISCLAIMED. IN NO EVENT SHALL NATIONS BE LIABLE FOR ANY DIRECT, INDIRECT,
  20. * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  21. * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
  22. * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  23. * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  24. * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
  25. * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  26. * ****************************************************************************/
  27. /**
  28. * @file n32g45x_rcc.h
  29. * @author Nations
  30. * @version v1.0.2
  31. *
  32. * @copyright Copyright (c) 2019, Nations Technologies Inc. All rights reserved.
  33. */
  34. #ifndef __N32G45X_RCC_H__
  35. #define __N32G45X_RCC_H__
  36. #ifdef __cplusplus
  37. extern "C" {
  38. #endif
  39. #include "n32g45x.h"
  40. /** @addtogroup N32G45X_StdPeriph_Driver
  41. * @{
  42. */
  43. /** @addtogroup RCC
  44. * @{
  45. */
  46. /** @addtogroup RCC_Exported_Types
  47. * @{
  48. */
  49. typedef struct
  50. {
  51. uint32_t SysclkFreq; /*!< returns SYSCLK clock frequency expressed in Hz */
  52. uint32_t HclkFreq; /*!< returns HCLK clock frequency expressed in Hz */
  53. uint32_t Pclk1Freq; /*!< returns PCLK1 clock frequency expressed in Hz */
  54. uint32_t Pclk2Freq; /*!< returns PCLK2 clock frequency expressed in Hz */
  55. uint32_t AdcPllClkFreq; /*!< returns ADCPLLCLK clock frequency expressed in Hz */
  56. uint32_t AdcHclkFreq; /*!< returns ADCHCLK clock frequency expressed in Hz */
  57. } RCC_ClocksType;
  58. /**
  59. * @}
  60. */
  61. /** @addtogroup RCC_Exported_Constants
  62. * @{
  63. */
  64. /** @addtogroup HSE_configuration
  65. * @{
  66. */
  67. #define RCC_HSE_DISABLE ((uint32_t)0x00000000)
  68. #define RCC_HSE_ENABLE ((uint32_t)0x00010000)
  69. #define RCC_HSE_BYPASS ((uint32_t)0x00040000)
  70. #define IS_RCC_HSE(HSE) (((HSE) == RCC_HSE_DISABLE) || ((HSE) == RCC_HSE_ENABLE) || ((HSE) == RCC_HSE_BYPASS))
  71. /**
  72. * @}
  73. */
  74. /** @addtogroup PLL_entry_clock_source
  75. * @{
  76. */
  77. #define RCC_PLL_SRC_HSI_DIV2 ((uint32_t)0x00000000)
  78. #define RCC_PLL_SRC_HSE_DIV1 ((uint32_t)0x00010000)
  79. #define RCC_PLL_SRC_HSE_DIV2 ((uint32_t)0x00030000)
  80. #define IS_RCC_PLL_SRC(SOURCE) \
  81. (((SOURCE) == RCC_PLL_SRC_HSI_DIV2) || ((SOURCE) == RCC_PLL_SRC_HSE_DIV1) || ((SOURCE) == RCC_PLL_SRC_HSE_DIV2))
  82. /**
  83. * @}
  84. */
  85. /** @addtogroup PLL_multiplication_factor
  86. * @{
  87. */
  88. #define RCC_PLL_MUL_2 ((uint32_t)0x00000000)
  89. #define RCC_PLL_MUL_3 ((uint32_t)0x00040000)
  90. #define RCC_PLL_MUL_4 ((uint32_t)0x00080000)
  91. #define RCC_PLL_MUL_5 ((uint32_t)0x000C0000)
  92. #define RCC_PLL_MUL_6 ((uint32_t)0x00100000)
  93. #define RCC_PLL_MUL_7 ((uint32_t)0x00140000)
  94. #define RCC_PLL_MUL_8 ((uint32_t)0x00180000)
  95. #define RCC_PLL_MUL_9 ((uint32_t)0x001C0000)
  96. #define RCC_PLL_MUL_10 ((uint32_t)0x00200000)
  97. #define RCC_PLL_MUL_11 ((uint32_t)0x00240000)
  98. #define RCC_PLL_MUL_12 ((uint32_t)0x00280000)
  99. #define RCC_PLL_MUL_13 ((uint32_t)0x002C0000)
  100. #define RCC_PLL_MUL_14 ((uint32_t)0x00300000)
  101. #define RCC_PLL_MUL_15 ((uint32_t)0x00340000)
  102. #define RCC_PLL_MUL_16 ((uint32_t)0x00380000)
  103. #define RCC_PLL_MUL_17 ((uint32_t)0x08000000)
  104. #define RCC_PLL_MUL_18 ((uint32_t)0x08040000)
  105. #define RCC_PLL_MUL_19 ((uint32_t)0x08080000)
  106. #define RCC_PLL_MUL_20 ((uint32_t)0x080C0000)
  107. #define RCC_PLL_MUL_21 ((uint32_t)0x08100000)
  108. #define RCC_PLL_MUL_22 ((uint32_t)0x08140000)
  109. #define RCC_PLL_MUL_23 ((uint32_t)0x08180000)
  110. #define RCC_PLL_MUL_24 ((uint32_t)0x081C0000)
  111. #define RCC_PLL_MUL_25 ((uint32_t)0x08200000)
  112. #define RCC_PLL_MUL_26 ((uint32_t)0x08240000)
  113. #define RCC_PLL_MUL_27 ((uint32_t)0x08280000)
  114. #define RCC_PLL_MUL_28 ((uint32_t)0x082C0000)
  115. #define RCC_PLL_MUL_29 ((uint32_t)0x08300000)
  116. #define RCC_PLL_MUL_30 ((uint32_t)0x08340000)
  117. #define RCC_PLL_MUL_31 ((uint32_t)0x08380000)
  118. #define RCC_PLL_MUL_32 ((uint32_t)0x083C0000)
  119. #define IS_RCC_PLL_MUL(MUL) \
  120. (((MUL) == RCC_PLL_MUL_2) || ((MUL) == RCC_PLL_MUL_3) || ((MUL) == RCC_PLL_MUL_4) || ((MUL) == RCC_PLL_MUL_5) \
  121. || ((MUL) == RCC_PLL_MUL_6) || ((MUL) == RCC_PLL_MUL_7) || ((MUL) == RCC_PLL_MUL_8) || ((MUL) == RCC_PLL_MUL_9) \
  122. || ((MUL) == RCC_PLL_MUL_10) || ((MUL) == RCC_PLL_MUL_11) || ((MUL) == RCC_PLL_MUL_12) \
  123. || ((MUL) == RCC_PLL_MUL_13) || ((MUL) == RCC_PLL_MUL_14) || ((MUL) == RCC_PLL_MUL_15) \
  124. || ((MUL) == RCC_PLL_MUL_16) || ((MUL) == RCC_PLL_MUL_17) || ((MUL) == RCC_PLL_MUL_18) \
  125. || ((MUL) == RCC_PLL_MUL_19) || ((MUL) == RCC_PLL_MUL_20) || ((MUL) == RCC_PLL_MUL_21) \
  126. || ((MUL) == RCC_PLL_MUL_22) || ((MUL) == RCC_PLL_MUL_23) || ((MUL) == RCC_PLL_MUL_24) \
  127. || ((MUL) == RCC_PLL_MUL_25) || ((MUL) == RCC_PLL_MUL_26) || ((MUL) == RCC_PLL_MUL_27) \
  128. || ((MUL) == RCC_PLL_MUL_28) || ((MUL) == RCC_PLL_MUL_29) || ((MUL) == RCC_PLL_MUL_30) \
  129. || ((MUL) == RCC_PLL_MUL_31) || ((MUL) == RCC_PLL_MUL_32))
  130. /**
  131. * @}
  132. */
  133. /** @addtogroup System_clock_source
  134. * @{
  135. */
  136. #define RCC_SYSCLK_SRC_HSI ((uint32_t)0x00000000)
  137. #define RCC_SYSCLK_SRC_HSE ((uint32_t)0x00000001)
  138. #define RCC_SYSCLK_SRC_PLLCLK ((uint32_t)0x00000002)
  139. #define IS_RCC_SYSCLK_SRC(SOURCE) \
  140. (((SOURCE) == RCC_SYSCLK_SRC_HSI) || ((SOURCE) == RCC_SYSCLK_SRC_HSE) || ((SOURCE) == RCC_SYSCLK_SRC_PLLCLK))
  141. /**
  142. * @}
  143. */
  144. /** @addtogroup AHB_clock_source
  145. * @{
  146. */
  147. #define RCC_SYSCLK_DIV1 ((uint32_t)0x00000000)
  148. #define RCC_SYSCLK_DIV2 ((uint32_t)0x00000080)
  149. #define RCC_SYSCLK_DIV4 ((uint32_t)0x00000090)
  150. #define RCC_SYSCLK_DIV8 ((uint32_t)0x000000A0)
  151. #define RCC_SYSCLK_DIV16 ((uint32_t)0x000000B0)
  152. #define RCC_SYSCLK_DIV64 ((uint32_t)0x000000C0)
  153. #define RCC_SYSCLK_DIV128 ((uint32_t)0x000000D0)
  154. #define RCC_SYSCLK_DIV256 ((uint32_t)0x000000E0)
  155. #define RCC_SYSCLK_DIV512 ((uint32_t)0x000000F0)
  156. #define IS_RCC_SYSCLK_DIV(HCLK) \
  157. (((HCLK) == RCC_SYSCLK_DIV1) || ((HCLK) == RCC_SYSCLK_DIV2) || ((HCLK) == RCC_SYSCLK_DIV4) \
  158. || ((HCLK) == RCC_SYSCLK_DIV8) || ((HCLK) == RCC_SYSCLK_DIV16) || ((HCLK) == RCC_SYSCLK_DIV64) \
  159. || ((HCLK) == RCC_SYSCLK_DIV128) || ((HCLK) == RCC_SYSCLK_DIV256) || ((HCLK) == RCC_SYSCLK_DIV512))
  160. /**
  161. * @}
  162. */
  163. /** @addtogroup APB1_APB2_clock_source
  164. * @{
  165. */
  166. #define RCC_HCLK_DIV1 ((uint32_t)0x00000000)
  167. #define RCC_HCLK_DIV2 ((uint32_t)0x00000400)
  168. #define RCC_HCLK_DIV4 ((uint32_t)0x00000500)
  169. #define RCC_HCLK_DIV8 ((uint32_t)0x00000600)
  170. #define RCC_HCLK_DIV16 ((uint32_t)0x00000700)
  171. #define IS_RCC_HCLK_DIV(PCLK) \
  172. (((PCLK) == RCC_HCLK_DIV1) || ((PCLK) == RCC_HCLK_DIV2) || ((PCLK) == RCC_HCLK_DIV4) || ((PCLK) == RCC_HCLK_DIV8) \
  173. || ((PCLK) == RCC_HCLK_DIV16))
  174. /**
  175. * @}
  176. */
  177. /** @addtogroup RCC_Interrupt_source
  178. * @{
  179. */
  180. #define RCC_INT_LSIRDIF ((uint8_t)0x01)
  181. #define RCC_INT_LSERDIF ((uint8_t)0x02)
  182. #define RCC_INT_HSIRDIF ((uint8_t)0x04)
  183. #define RCC_INT_HSERDIF ((uint8_t)0x08)
  184. #define RCC_INT_PLLRDIF ((uint8_t)0x10)
  185. #define RCC_INT_CLKSSIF ((uint8_t)0x80)
  186. #define IS_RCC_INT(IT) ((((IT) & (uint8_t)0xE0) == 0x00) && ((IT) != 0x00))
  187. #define IS_RCC_GET_INT(IT) \
  188. (((IT) == RCC_INT_LSIRDIF) || ((IT) == RCC_INT_LSERDIF) || ((IT) == RCC_INT_HSIRDIF) || ((IT) == RCC_INT_HSERDIF) \
  189. || ((IT) == RCC_INT_PLLRDIF) || ((IT) == RCC_INT_CLKSSIF))
  190. #define IS_RCC_CLR_INT(IT) ((((IT) & (uint8_t)0x60) == 0x00) && ((IT) != 0x00))
  191. /**
  192. * @}
  193. */
  194. /** @addtogroup USB_Device_clock_source
  195. * @{
  196. */
  197. #define RCC_USBCLK_SRC_PLLCLK_DIV1_5 ((uint8_t)0x00)
  198. #define RCC_USBCLK_SRC_PLLCLK_DIV1 ((uint8_t)0x01)
  199. #define RCC_USBCLK_SRC_PLLCLK_DIV2 ((uint8_t)0x02)
  200. #define RCC_USBCLK_SRC_PLLCLK_DIV3 ((uint8_t)0x03)
  201. #define IS_RCC_USBCLK_SRC(SOURCE) \
  202. (((SOURCE) == RCC_USBCLK_SRC_PLLCLK_DIV1_5) || ((SOURCE) == RCC_USBCLK_SRC_PLLCLK_DIV1) \
  203. || ((SOURCE) == RCC_USBCLK_SRC_PLLCLK_DIV2) || ((SOURCE) == RCC_USBCLK_SRC_PLLCLK_DIV3))
  204. /**
  205. * @}
  206. */
  207. /** @addtogroup ADC_clock_source
  208. * @{
  209. */
  210. #define RCC_PCLK2_DIV2 ((uint32_t)0x00000000)
  211. #define RCC_PCLK2_DIV4 ((uint32_t)0x00004000)
  212. #define RCC_PCLK2_DIV6 ((uint32_t)0x00008000)
  213. #define RCC_PCLK2_DIV8 ((uint32_t)0x0000C000)
  214. #define IS_RCC_PCLK2_DIV(ADCCLK) \
  215. (((ADCCLK) == RCC_PCLK2_DIV2) || ((ADCCLK) == RCC_PCLK2_DIV4) || ((ADCCLK) == RCC_PCLK2_DIV6) \
  216. || ((ADCCLK) == RCC_PCLK2_DIV8))
  217. /**
  218. * @}
  219. */
  220. /** @addtogroup RCC_CFGR2_Config
  221. * @{
  222. */
  223. #define RCC_TIM18CLK_SRC_TIM18CLK ((uint32_t)0x00000000)
  224. #define RCC_TIM18CLK_SRC_SYSCLK ((uint32_t)0x20000000)
  225. #define IS_RCC_TIM18CLKSRC(TIM18CLK) \
  226. (((TIM18CLK) == RCC_TIM18CLK_SRC_TIM18CLK) || ((TIM18CLK) == RCC_TIM18CLK_SRC_SYSCLK))
  227. #define RCC_RNGCCLK_SYSCLK_DIV1 ((uint32_t)0x00000000)
  228. #define RCC_RNGCCLK_SYSCLK_DIV2 ((uint32_t)0x01000000)
  229. #define RCC_RNGCCLK_SYSCLK_DIV3 ((uint32_t)0x02000000)
  230. #define RCC_RNGCCLK_SYSCLK_DIV4 ((uint32_t)0x03000000)
  231. #define RCC_RNGCCLK_SYSCLK_DIV5 ((uint32_t)0x04000000)
  232. #define RCC_RNGCCLK_SYSCLK_DIV6 ((uint32_t)0x05000000)
  233. #define RCC_RNGCCLK_SYSCLK_DIV7 ((uint32_t)0x06000000)
  234. #define RCC_RNGCCLK_SYSCLK_DIV8 ((uint32_t)0x07000000)
  235. #define RCC_RNGCCLK_SYSCLK_DIV9 ((uint32_t)0x08000000)
  236. #define RCC_RNGCCLK_SYSCLK_DIV10 ((uint32_t)0x09000000)
  237. #define RCC_RNGCCLK_SYSCLK_DIV11 ((uint32_t)0x0A000000)
  238. #define RCC_RNGCCLK_SYSCLK_DIV12 ((uint32_t)0x0B000000)
  239. #define RCC_RNGCCLK_SYSCLK_DIV13 ((uint32_t)0x0C000000)
  240. #define RCC_RNGCCLK_SYSCLK_DIV14 ((uint32_t)0x0D000000)
  241. #define RCC_RNGCCLK_SYSCLK_DIV15 ((uint32_t)0x0E000000)
  242. #define RCC_RNGCCLK_SYSCLK_DIV16 ((uint32_t)0x0F000000)
  243. #define RCC_RNGCCLK_SYSCLK_DIV17 ((uint32_t)0x10000000)
  244. #define RCC_RNGCCLK_SYSCLK_DIV18 ((uint32_t)0x11000000)
  245. #define RCC_RNGCCLK_SYSCLK_DIV19 ((uint32_t)0x12000000)
  246. #define RCC_RNGCCLK_SYSCLK_DIV20 ((uint32_t)0x13000000)
  247. #define RCC_RNGCCLK_SYSCLK_DIV21 ((uint32_t)0x14000000)
  248. #define RCC_RNGCCLK_SYSCLK_DIV22 ((uint32_t)0x15000000)
  249. #define RCC_RNGCCLK_SYSCLK_DIV23 ((uint32_t)0x16000000)
  250. #define RCC_RNGCCLK_SYSCLK_DIV24 ((uint32_t)0x17000000)
  251. #define RCC_RNGCCLK_SYSCLK_DIV25 ((uint32_t)0x18000000)
  252. #define RCC_RNGCCLK_SYSCLK_DIV26 ((uint32_t)0x19000000)
  253. #define RCC_RNGCCLK_SYSCLK_DIV27 ((uint32_t)0x1A000000)
  254. #define RCC_RNGCCLK_SYSCLK_DIV28 ((uint32_t)0x1B000000)
  255. #define RCC_RNGCCLK_SYSCLK_DIV29 ((uint32_t)0x1C000000)
  256. #define RCC_RNGCCLK_SYSCLK_DIV30 ((uint32_t)0x1D000000)
  257. #define RCC_RNGCCLK_SYSCLK_DIV31 ((uint32_t)0x1E000000)
  258. #define RCC_RNGCCLK_SYSCLK_DIV32 ((uint32_t)0x1F000000)
  259. #define IS_RCC_RNGCCLKPRE(DIV) \
  260. (((DIV) == RCC_RNGCCLK_SYSCLK_DIV1) || ((DIV) == RCC_RNGCCLK_SYSCLK_DIV2) || ((DIV) == RCC_RNGCCLK_SYSCLK_DIV3) \
  261. || ((DIV) == RCC_RNGCCLK_SYSCLK_DIV4) || ((DIV) == RCC_RNGCCLK_SYSCLK_DIV5) || ((DIV) == RCC_RNGCCLK_SYSCLK_DIV6) \
  262. || ((DIV) == RCC_RNGCCLK_SYSCLK_DIV7) || ((DIV) == RCC_RNGCCLK_SYSCLK_DIV8) || ((DIV) == RCC_RNGCCLK_SYSCLK_DIV9) \
  263. || ((DIV) == RCC_RNGCCLK_SYSCLK_DIV10) || ((DIV) == RCC_RNGCCLK_SYSCLK_DIV11) \
  264. || ((DIV) == RCC_RNGCCLK_SYSCLK_DIV12) || ((DIV) == RCC_RNGCCLK_SYSCLK_DIV13) \
  265. || ((DIV) == RCC_RNGCCLK_SYSCLK_DIV14) || ((DIV) == RCC_RNGCCLK_SYSCLK_DIV15) \
  266. || ((DIV) == RCC_RNGCCLK_SYSCLK_DIV16) || ((DIV) == RCC_RNGCCLK_SYSCLK_DIV17) \
  267. || ((DIV) == RCC_RNGCCLK_SYSCLK_DIV18) || ((DIV) == RCC_RNGCCLK_SYSCLK_DIV19) \
  268. || ((DIV) == RCC_RNGCCLK_SYSCLK_DIV20) || ((DIV) == RCC_RNGCCLK_SYSCLK_DIV21) \
  269. || ((DIV) == RCC_RNGCCLK_SYSCLK_DIV22) || ((DIV) == RCC_RNGCCLK_SYSCLK_DIV23) \
  270. || ((DIV) == RCC_RNGCCLK_SYSCLK_DIV24) || ((DIV) == RCC_RNGCCLK_SYSCLK_DIV25) \
  271. || ((DIV) == RCC_RNGCCLK_SYSCLK_DIV26) || ((DIV) == RCC_RNGCCLK_SYSCLK_DIV27) \
  272. || ((DIV) == RCC_RNGCCLK_SYSCLK_DIV28) || ((DIV) == RCC_RNGCCLK_SYSCLK_DIV29) \
  273. || ((DIV) == RCC_RNGCCLK_SYSCLK_DIV30) || ((DIV) == RCC_RNGCCLK_SYSCLK_DIV31) \
  274. || ((DIV) == RCC_RNGCCLK_SYSCLK_DIV32))
  275. #define RCC_ADC1MCLK_SRC_HSI ((uint32_t)0x00000000)
  276. #define RCC_ADC1MCLK_SRC_HSE ((uint32_t)0x00000400)
  277. #define IS_RCC_ADC1MCLKSRC(ADC1MCLK) (((ADC1MCLK) == RCC_ADC1MCLK_SRC_HSI) || ((ADC1MCLK) == RCC_ADC1MCLK_SRC_HSE))
  278. #define RCC_ADC1MCLK_DIV1 ((uint32_t)0x00000000)
  279. #define RCC_ADC1MCLK_DIV2 ((uint32_t)0x00000800)
  280. #define RCC_ADC1MCLK_DIV3 ((uint32_t)0x00001000)
  281. #define RCC_ADC1MCLK_DIV4 ((uint32_t)0x00001800)
  282. #define RCC_ADC1MCLK_DIV5 ((uint32_t)0x00002000)
  283. #define RCC_ADC1MCLK_DIV6 ((uint32_t)0x00002800)
  284. #define RCC_ADC1MCLK_DIV7 ((uint32_t)0x00003000)
  285. #define RCC_ADC1MCLK_DIV8 ((uint32_t)0x00003800)
  286. #define RCC_ADC1MCLK_DIV9 ((uint32_t)0x00004000)
  287. #define RCC_ADC1MCLK_DIV10 ((uint32_t)0x00004800)
  288. #define RCC_ADC1MCLK_DIV11 ((uint32_t)0x00005000)
  289. #define RCC_ADC1MCLK_DIV12 ((uint32_t)0x00005800)
  290. #define RCC_ADC1MCLK_DIV13 ((uint32_t)0x00006000)
  291. #define RCC_ADC1MCLK_DIV14 ((uint32_t)0x00006800)
  292. #define RCC_ADC1MCLK_DIV15 ((uint32_t)0x00007000)
  293. #define RCC_ADC1MCLK_DIV16 ((uint32_t)0x00007800)
  294. #define RCC_ADC1MCLK_DIV17 ((uint32_t)0x00008000)
  295. #define RCC_ADC1MCLK_DIV18 ((uint32_t)0x00008800)
  296. #define RCC_ADC1MCLK_DIV19 ((uint32_t)0x00009000)
  297. #define RCC_ADC1MCLK_DIV20 ((uint32_t)0x00009800)
  298. #define RCC_ADC1MCLK_DIV21 ((uint32_t)0x0000A000)
  299. #define RCC_ADC1MCLK_DIV22 ((uint32_t)0x0000A800)
  300. #define RCC_ADC1MCLK_DIV23 ((uint32_t)0x0000B000)
  301. #define RCC_ADC1MCLK_DIV24 ((uint32_t)0x0000B800)
  302. #define RCC_ADC1MCLK_DIV25 ((uint32_t)0x0000C000)
  303. #define RCC_ADC1MCLK_DIV26 ((uint32_t)0x0000C800)
  304. #define RCC_ADC1MCLK_DIV27 ((uint32_t)0x0000D000)
  305. #define RCC_ADC1MCLK_DIV28 ((uint32_t)0x0000D800)
  306. #define RCC_ADC1MCLK_DIV29 ((uint32_t)0x0000E000)
  307. #define RCC_ADC1MCLK_DIV30 ((uint32_t)0x0000E800)
  308. #define RCC_ADC1MCLK_DIV31 ((uint32_t)0x0000F000)
  309. #define RCC_ADC1MCLK_DIV32 ((uint32_t)0x0000F800)
  310. #define IS_RCC_ADC1MCLKPRE(DIV) \
  311. (((DIV) == RCC_ADC1MCLK_DIV1) || ((DIV) == RCC_ADC1MCLK_DIV2) || ((DIV) == RCC_ADC1MCLK_DIV3) \
  312. || ((DIV) == RCC_ADC1MCLK_DIV4) || ((DIV) == RCC_ADC1MCLK_DIV5) || ((DIV) == RCC_ADC1MCLK_DIV6) \
  313. || ((DIV) == RCC_ADC1MCLK_DIV7) || ((DIV) == RCC_ADC1MCLK_DIV8) || ((DIV) == RCC_ADC1MCLK_DIV9) \
  314. || ((DIV) == RCC_ADC1MCLK_DIV10) || ((DIV) == RCC_ADC1MCLK_DIV11) || ((DIV) == RCC_ADC1MCLK_DIV12) \
  315. || ((DIV) == RCC_ADC1MCLK_DIV13) || ((DIV) == RCC_ADC1MCLK_DIV14) || ((DIV) == RCC_ADC1MCLK_DIV15) \
  316. || ((DIV) == RCC_ADC1MCLK_DIV16) || ((DIV) == RCC_ADC1MCLK_DIV17) || ((DIV) == RCC_ADC1MCLK_DIV18) \
  317. || ((DIV) == RCC_ADC1MCLK_DIV19) || ((DIV) == RCC_ADC1MCLK_DIV20) || ((DIV) == RCC_ADC1MCLK_DIV21) \
  318. || ((DIV) == RCC_ADC1MCLK_DIV22) || ((DIV) == RCC_ADC1MCLK_DIV23) || ((DIV) == RCC_ADC1MCLK_DIV24) \
  319. || ((DIV) == RCC_ADC1MCLK_DIV25) || ((DIV) == RCC_ADC1MCLK_DIV26) || ((DIV) == RCC_ADC1MCLK_DIV27) \
  320. || ((DIV) == RCC_ADC1MCLK_DIV28) || ((DIV) == RCC_ADC1MCLK_DIV29) || ((DIV) == RCC_ADC1MCLK_DIV30) \
  321. || ((DIV) == RCC_ADC1MCLK_DIV31) || ((DIV) == RCC_ADC1MCLK_DIV32))
  322. #define RCC_ADCPLLCLK_DISABLE ((uint32_t)0xFFFFFEFF)
  323. #define RCC_ADCPLLCLK_DIV1 ((uint32_t)0x00000100)
  324. #define RCC_ADCPLLCLK_DIV2 ((uint32_t)0x00000110)
  325. #define RCC_ADCPLLCLK_DIV4 ((uint32_t)0x00000120)
  326. #define RCC_ADCPLLCLK_DIV6 ((uint32_t)0x00000130)
  327. #define RCC_ADCPLLCLK_DIV8 ((uint32_t)0x00000140)
  328. #define RCC_ADCPLLCLK_DIV10 ((uint32_t)0x00000150)
  329. #define RCC_ADCPLLCLK_DIV12 ((uint32_t)0x00000160)
  330. #define RCC_ADCPLLCLK_DIV16 ((uint32_t)0x00000170)
  331. #define RCC_ADCPLLCLK_DIV32 ((uint32_t)0x00000180)
  332. #define RCC_ADCPLLCLK_DIV64 ((uint32_t)0x00000190)
  333. #define RCC_ADCPLLCLK_DIV128 ((uint32_t)0x000001A0)
  334. #define RCC_ADCPLLCLK_DIV256 ((uint32_t)0x000001B0)
  335. #define RCC_ADCPLLCLK_DIV_OTHERS ((uint32_t)0x000001C0)
  336. #define IS_RCC_ADCPLLCLKPRE(DIV) \
  337. (((DIV) == RCC_ADCPLLCLK_DIV1) || ((DIV) == RCC_ADCPLLCLK_DIV2) || ((DIV) == RCC_ADCPLLCLK_DIV4) \
  338. || ((DIV) == RCC_ADCPLLCLK_DIV6) || ((DIV) == RCC_ADCPLLCLK_DIV8) || ((DIV) == RCC_ADCPLLCLK_DIV10) \
  339. || ((DIV) == RCC_ADCPLLCLK_DIV12) || ((DIV) == RCC_ADCPLLCLK_DIV16) || ((DIV) == RCC_ADCPLLCLK_DIV32) \
  340. || ((DIV) == RCC_ADCPLLCLK_DIV64) || ((DIV) == RCC_ADCPLLCLK_DIV128) || ((DIV) == RCC_ADCPLLCLK_DIV256) \
  341. || ((DIV) == RCC_ADC1MCLK_DIV15) || ((DIV) == RCC_ADCPLLCLK_DIV16) \
  342. || (((DIV)&RCC_ADCPLLCLK_DIV_OTHERS) == 0x000001C0))
  343. #define RCC_ADCHCLK_DIV1 ((uint32_t)0x00000000)
  344. #define RCC_ADCHCLK_DIV2 ((uint32_t)0x00000001)
  345. #define RCC_ADCHCLK_DIV4 ((uint32_t)0x00000002)
  346. #define RCC_ADCHCLK_DIV6 ((uint32_t)0x00000003)
  347. #define RCC_ADCHCLK_DIV8 ((uint32_t)0x00000004)
  348. #define RCC_ADCHCLK_DIV10 ((uint32_t)0x00000005)
  349. #define RCC_ADCHCLK_DIV12 ((uint32_t)0x00000006)
  350. #define RCC_ADCHCLK_DIV16 ((uint32_t)0x00000007)
  351. #define RCC_ADCHCLK_DIV32 ((uint32_t)0x00000008)
  352. #define RCC_ADCHCLK_DIV_OTHERS ((uint32_t)0x00000008)
  353. #define IS_RCC_ADCHCLKPRE(DIV) \
  354. (((DIV) == RCC_ADCHCLK_DIV1) || ((DIV) == RCC_ADCHCLK_DIV2) || ((DIV) == RCC_ADCHCLK_DIV4) \
  355. || ((DIV) == RCC_ADCHCLK_DIV6) || ((DIV) == RCC_ADCHCLK_DIV8) || ((DIV) == RCC_ADCHCLK_DIV10) \
  356. || ((DIV) == RCC_ADCHCLK_DIV12) || ((DIV) == RCC_ADCHCLK_DIV16) || ((DIV) == RCC_ADCHCLK_DIV32) \
  357. || (((DIV)&RCC_ADCHCLK_DIV_OTHERS) != 0x00))
  358. /**
  359. * @}
  360. */
  361. /** @addtogroup RCC_CFGR3_Config
  362. * @{
  363. */
  364. #define RCC_BOR_RST_ENABLE ((uint32_t)0x00000040)
  365. #define RCC_TRNG1MCLK_ENABLE ((uint32_t)0x00040000)
  366. #define RCC_TRNG1MCLK_DISABLE ((uint32_t)0xFFFBFFFF)
  367. #define RCC_TRNG1MCLK_SRC_HSI ((uint32_t)0x00000000)
  368. #define RCC_TRNG1MCLK_SRC_HSE ((uint32_t)0x00020000)
  369. #define IS_RCC_TRNG1MCLK_SRC(TRNG1MCLK) \
  370. (((TRNG1MCLK) == RCC_TRNG1MCLK_SRC_HSI) || ((TRNG1MCLK) == RCC_TRNG1MCLK_SRC_HSE))
  371. #define RCC_TRNG1MCLK_DIV2 ((uint32_t)0x00000800)
  372. #define RCC_TRNG1MCLK_DIV4 ((uint32_t)0x00001800)
  373. #define RCC_TRNG1MCLK_DIV6 ((uint32_t)0x00002800)
  374. #define RCC_TRNG1MCLK_DIV8 ((uint32_t)0x00003800)
  375. #define RCC_TRNG1MCLK_DIV10 ((uint32_t)0x00004800)
  376. #define RCC_TRNG1MCLK_DIV12 ((uint32_t)0x00005800)
  377. #define RCC_TRNG1MCLK_DIV14 ((uint32_t)0x00006800)
  378. #define RCC_TRNG1MCLK_DIV16 ((uint32_t)0x00007800)
  379. #define RCC_TRNG1MCLK_DIV18 ((uint32_t)0x00008800)
  380. #define RCC_TRNG1MCLK_DIV20 ((uint32_t)0x00009800)
  381. #define RCC_TRNG1MCLK_DIV22 ((uint32_t)0x0000A800)
  382. #define RCC_TRNG1MCLK_DIV24 ((uint32_t)0x0000B800)
  383. #define RCC_TRNG1MCLK_DIV26 ((uint32_t)0x0000C800)
  384. #define RCC_TRNG1MCLK_DIV28 ((uint32_t)0x0000D800)
  385. #define RCC_TRNG1MCLK_DIV30 ((uint32_t)0x0000E800)
  386. #define RCC_TRNG1MCLK_DIV32 ((uint32_t)0x0000F800)
  387. #define IS_RCC_TRNG1MCLKPRE(VAL) \
  388. (((VAL) == RCC_TRNG1MCLK_DIV2) || ((VAL) == RCC_TRNG1MCLK_DIV4) || ((VAL) == RCC_TRNG1MCLK_DIV6) \
  389. || ((VAL) == RCC_TRNG1MCLK_DIV8) || ((VAL) == RCC_TRNG1MCLK_DIV10) || ((VAL) == RCC_TRNG1MCLK_DIV12) \
  390. || ((VAL) == RCC_TRNG1MCLK_DIV14) || ((VAL) == RCC_TRNG1MCLK_DIV16) || ((VAL) == RCC_TRNG1MCLK_DIV18) \
  391. || ((VAL) == RCC_TRNG1MCLK_DIV20) || ((VAL) == RCC_TRNG1MCLK_DIV22) || ((VAL) == RCC_TRNG1MCLK_DIV24) \
  392. || ((VAL) == RCC_TRNG1MCLK_DIV26) || ((VAL) == RCC_TRNG1MCLK_DIV28) || ((VAL) == RCC_TRNG1MCLK_DIV30) \
  393. || ((VAL) == RCC_TRNG1MCLK_DIV32))
  394. /**
  395. * @}
  396. */
  397. /** @addtogroup LSE_configuration
  398. * @{
  399. */
  400. #define RCC_LSE_DISABLE ((uint8_t)0x00)
  401. #define RCC_LSE_ENABLE ((uint8_t)0x01)
  402. #define RCC_LSE_BYPASS ((uint8_t)0x04)
  403. #define IS_RCC_LSE(LSE) (((LSE) == RCC_LSE_DISABLE) || ((LSE) == RCC_LSE_ENABLE) || ((LSE) == RCC_LSE_BYPASS))
  404. /**
  405. * @}
  406. */
  407. /** @addtogroup RTC_clock_source
  408. * @{
  409. */
  410. #define RCC_RTCCLK_SRC_LSE ((uint32_t)0x00000100)
  411. #define RCC_RTCCLK_SRC_LSI ((uint32_t)0x00000200)
  412. #define RCC_RTCCLK_SRC_HSE_DIV128 ((uint32_t)0x00000300)
  413. #define IS_RCC_RTCCLK_SRC(SOURCE) \
  414. (((SOURCE) == RCC_RTCCLK_SRC_LSE) || ((SOURCE) == RCC_RTCCLK_SRC_LSI) || ((SOURCE) == RCC_RTCCLK_SRC_HSE_DIV128))
  415. /**
  416. * @}
  417. */
  418. /** @addtogroup AHB_peripheral
  419. * @{
  420. */
  421. #define RCC_AHB_PERIPH_DMA1 ((uint32_t)0x00000001)
  422. #define RCC_AHB_PERIPH_DMA2 ((uint32_t)0x00000002)
  423. #define RCC_AHB_PERIPH_SRAM ((uint32_t)0x00000004)
  424. #define RCC_AHB_PERIPH_FLITF ((uint32_t)0x00000010)
  425. #define RCC_AHB_PERIPH_CRC ((uint32_t)0x00000040)
  426. #define RCC_AHB_PERIPH_RNGC ((uint32_t)0x00000200)
  427. #define RCC_AHB_PERIPH_SDIO ((uint32_t)0x00000400)
  428. #define RCC_AHB_PERIPH_SAC ((uint32_t)0x00000800)
  429. #define RCC_AHB_PERIPH_ADC1 ((uint32_t)0x00001000)
  430. #define RCC_AHB_PERIPH_ADC2 ((uint32_t)0x00002000)
  431. #define RCC_AHB_PERIPH_ADC3 ((uint32_t)0x00004000)
  432. #define RCC_AHB_PERIPH_ADC4 ((uint32_t)0x00008000)
  433. #define RCC_AHB_PERIPH_ETHMAC ((uint32_t)0x00010000)
  434. #define RCC_AHB_PERIPH_QSPI ((uint32_t)0x00020000)
  435. #define IS_RCC_AHB_PERIPH(PERIPH) ((((PERIPH)&0xFFFC02A8) == 0x00) && ((PERIPH) != 0x00))
  436. /**
  437. * @}
  438. */
  439. /** @addtogroup APB2_peripheral
  440. * @{
  441. */
  442. #define RCC_APB2_PERIPH_AFIO ((uint32_t)0x00000001)
  443. #define RCC_APB2_PERIPH_GPIOA ((uint32_t)0x00000004)
  444. #define RCC_APB2_PERIPH_GPIOB ((uint32_t)0x00000008)
  445. #define RCC_APB2_PERIPH_GPIOC ((uint32_t)0x00000010)
  446. #define RCC_APB2_PERIPH_GPIOD ((uint32_t)0x00000020)
  447. #define RCC_APB2_PERIPH_GPIOE ((uint32_t)0x00000040)
  448. #define RCC_APB2_PERIPH_GPIOF ((uint32_t)0x00000080)
  449. #define RCC_APB2_PERIPH_GPIOG ((uint32_t)0x00000100)
  450. #define RCC_APB2_PERIPH_TIM1 ((uint32_t)0x00000800)
  451. #define RCC_APB2_PERIPH_SPI1 ((uint32_t)0x00001000)
  452. #define RCC_APB2_PERIPH_TIM8 ((uint32_t)0x00002000)
  453. #define RCC_APB2_PERIPH_USART1 ((uint32_t)0x00004000)
  454. #define RCC_APB2_PERIPH_DVP ((uint32_t)0x00010000)
  455. #define RCC_APB2_PERIPH_UART6 ((uint32_t)0x00020000)
  456. #define RCC_APB2_PERIPH_UART7 ((uint32_t)0x00040000)
  457. #define RCC_APB2_PERIPH_I2C3 ((uint32_t)0x00080000)
  458. #define RCC_APB2_PERIPH_I2C4 ((uint32_t)0x00100000)
  459. #define IS_RCC_APB2_PERIPH(PERIPH) ((((PERIPH)&0xFFE08602) == 0x00) && ((PERIPH) != 0x00))
  460. /**
  461. * @}
  462. */
  463. /** @addtogroup APB1_peripheral
  464. * @{
  465. */
  466. #define RCC_APB1_PERIPH_TIM2 ((uint32_t)0x00000001)
  467. #define RCC_APB1_PERIPH_TIM3 ((uint32_t)0x00000002)
  468. #define RCC_APB1_PERIPH_TIM4 ((uint32_t)0x00000004)
  469. #define RCC_APB1_PERIPH_TIM5 ((uint32_t)0x00000008)
  470. #define RCC_APB1_PERIPH_TIM6 ((uint32_t)0x00000010)
  471. #define RCC_APB1_PERIPH_TIM7 ((uint32_t)0x00000020)
  472. #define RCC_APB1_PERIPH_COMP ((uint32_t)0x00000040)
  473. #define RCC_APB1_PERIPH_COMP_FILT ((uint32_t)0x00000080)
  474. #define RCC_APB1_PERIPH_TSC ((uint32_t)0x00000400)
  475. #define RCC_APB1_PERIPH_WWDG ((uint32_t)0x00000800)
  476. #define RCC_APB1_PERIPH_SPI2 ((uint32_t)0x00004000)
  477. #define RCC_APB1_PERIPH_SPI3 ((uint32_t)0x00008000)
  478. #define RCC_APB1_PERIPH_USART2 ((uint32_t)0x00020000)
  479. #define RCC_APB1_PERIPH_USART3 ((uint32_t)0x00040000)
  480. #define RCC_APB1_PERIPH_UART4 ((uint32_t)0x00080000)
  481. #define RCC_APB1_PERIPH_UART5 ((uint32_t)0x00100000)
  482. #define RCC_APB1_PERIPH_I2C1 ((uint32_t)0x00200000)
  483. #define RCC_APB1_PERIPH_I2C2 ((uint32_t)0x00400000)
  484. #define RCC_APB1_PERIPH_USB ((uint32_t)0x00800000)
  485. #define RCC_APB1_PERIPH_CAN1 ((uint32_t)0x02000000)
  486. #define RCC_APB1_PERIPH_CAN2 ((uint32_t)0x04000000)
  487. #define RCC_APB1_PERIPH_BKP ((uint32_t)0x08000000)
  488. #define RCC_APB1_PERIPH_PWR ((uint32_t)0x10000000)
  489. #define RCC_APB1_PERIPH_DAC ((uint32_t)0x20000000)
  490. #define RCC_APB1_PERIPH_OPAMP ((uint32_t)0x80000000)
  491. #define IS_RCC_APB1_PERIPH(PERIPH) ((((PERIPH)&0x41013300) == 0x00) && ((PERIPH) != 0x00))
  492. /**
  493. * @}
  494. */
  495. #define RCC_MCO_PLLCLK_DIV2 ((uint32_t)0x20000000)
  496. #define RCC_MCO_PLLCLK_DIV3 ((uint32_t)0x30000000)
  497. #define RCC_MCO_PLLCLK_DIV4 ((uint32_t)0x40000000)
  498. #define RCC_MCO_PLLCLK_DIV5 ((uint32_t)0x50000000)
  499. #define RCC_MCO_PLLCLK_DIV6 ((uint32_t)0x60000000)
  500. #define RCC_MCO_PLLCLK_DIV7 ((uint32_t)0x70000000)
  501. #define RCC_MCO_PLLCLK_DIV8 ((uint32_t)0x80000000)
  502. #define RCC_MCO_PLLCLK_DIV9 ((uint32_t)0x90000000)
  503. #define RCC_MCO_PLLCLK_DIV10 ((uint32_t)0xA0000000)
  504. #define RCC_MCO_PLLCLK_DIV11 ((uint32_t)0xB0000000)
  505. #define RCC_MCO_PLLCLK_DIV12 ((uint32_t)0xC0000000)
  506. #define RCC_MCO_PLLCLK_DIV13 ((uint32_t)0xD0000000)
  507. #define RCC_MCO_PLLCLK_DIV14 ((uint32_t)0xE0000000)
  508. #define RCC_MCO_PLLCLK_DIV15 ((uint32_t)0xF0000000)
  509. #define IS_RCC_MCOPLLCLKPRE(DIV) \
  510. (((DIV) == RCC_MCO_PLLCLK_DIV2) || ((DIV) == RCC_MCO_PLLCLK_DIV3) || ((DIV) == RCC_MCO_PLLCLK_DIV4) \
  511. || ((DIV) == RCC_MCO_PLLCLK_DIV5) || ((DIV) == RCC_MCO_PLLCLK_DIV6) || ((DIV) == RCC_MCO_PLLCLK_DIV7) \
  512. || ((DIV) == RCC_MCO_PLLCLK_DIV8) || ((DIV) == RCC_MCO_PLLCLK_DIV9) || ((DIV) == RCC_MCO_PLLCLK_DIV10) \
  513. || ((DIV) == RCC_MCO_PLLCLK_DIV11) || ((DIV) == RCC_MCO_PLLCLK_DIV12) || ((DIV) == RCC_MCO_PLLCLK_DIV13) \
  514. || ((DIV) == RCC_MCO_PLLCLK_DIV14) || ((DIV) == RCC_MCO_PLLCLK_DIV15))
  515. /** @addtogroup Clock_source_to_output_on_MCO_pin
  516. * @{
  517. */
  518. #define RCC_MCO_NOCLK ((uint8_t)0x00)
  519. #define RCC_MCO_SYSCLK ((uint8_t)0x04)
  520. #define RCC_MCO_HSI ((uint8_t)0x05)
  521. #define RCC_MCO_HSE ((uint8_t)0x06)
  522. #define RCC_MCO_PLLCLK ((uint8_t)0x07)
  523. #define IS_RCC_MCO(MCO) \
  524. (((MCO) == RCC_MCO_NOCLK) || ((MCO) == RCC_MCO_HSI) || ((MCO) == RCC_MCO_SYSCLK) || ((MCO) == RCC_MCO_HSE) \
  525. || ((MCO) == RCC_MCO_PLLCLK))
  526. /**
  527. * @}
  528. */
  529. /** @addtogroup RCC_Flag
  530. * @{
  531. */
  532. #define RCC_FLAG_HSIRD ((uint8_t)0x21)
  533. #define RCC_FLAG_HSERD ((uint8_t)0x31)
  534. #define RCC_FLAG_PLLRD ((uint8_t)0x39)
  535. #define RCC_FLAG_LSERD ((uint8_t)0x41)
  536. #define RCC_FLAG_LSIRD ((uint8_t)0x61)
  537. #define RCC_FLAG_BORRST ((uint8_t)0x73)
  538. #define RCC_FLAG_RETEMC ((uint8_t)0x74)
  539. #define RCC_FLAG_BKPEMC ((uint8_t)0x75)
  540. #define RCC_FLAG_RAMRST ((uint8_t)0x77)
  541. #define RCC_FLAG_MMURST ((uint8_t)0x79)
  542. #define RCC_FLAG_PINRST ((uint8_t)0x7A)
  543. #define RCC_FLAG_PORRST ((uint8_t)0x7B)
  544. #define RCC_FLAG_SFTRST ((uint8_t)0x7C)
  545. #define RCC_FLAG_IWDGRST ((uint8_t)0x7D)
  546. #define RCC_FLAG_WWDGRST ((uint8_t)0x7E)
  547. #define RCC_FLAG_LPWRRST ((uint8_t)0x7F)
  548. #define IS_RCC_FLAG(FLAG) \
  549. (((FLAG) == RCC_FLAG_HSIRD) || ((FLAG) == RCC_FLAG_HSERD) || ((FLAG) == RCC_FLAG_PLLRD) \
  550. || ((FLAG) == RCC_FLAG_LSERD) || ((FLAG) == RCC_FLAG_LSIRD) || ((FLAG) == RCC_FLAG_BORRST) \
  551. || ((FLAG) == RCC_FLAG_RETEMC) || ((FLAG) == RCC_FLAG_BKPEMC) || ((FLAG) == RCC_FLAG_RAMRST) \
  552. || ((FLAG) == RCC_FLAG_MMURST) || ((FLAG) == RCC_FLAG_PINRST) || ((FLAG) == RCC_FLAG_PORRST) \
  553. || ((FLAG) == RCC_FLAG_SFTRST) || ((FLAG) == RCC_FLAG_IWDGRST) || ((FLAG) == RCC_FLAG_WWDGRST) \
  554. || ((FLAG) == RCC_FLAG_LPWRRST))
  555. #define IS_RCC_CALIB_VALUE(VALUE) ((VALUE) <= 0x1F)
  556. /**
  557. * @}
  558. */
  559. /**
  560. * @}
  561. */
  562. /** @addtogroup RCC_Exported_Macros
  563. * @{
  564. */
  565. /**
  566. * @}
  567. */
  568. /** @addtogroup RCC_Exported_Functions
  569. * @{
  570. */
  571. void RCC_DeInit(void);
  572. void RCC_ConfigHse(uint32_t RCC_HSE);
  573. ErrorStatus RCC_WaitHseStable(void);
  574. void RCC_SetHsiCalibValue(uint8_t HSICalibrationValue);
  575. void RCC_EnableHsi(FunctionalState Cmd);
  576. void RCC_ConfigPll(uint32_t RCC_PLLSource, uint32_t RCC_PLLMul);
  577. void RCC_EnablePll(FunctionalState Cmd);
  578. void RCC_ConfigSysclk(uint32_t RCC_SYSCLKSource);
  579. uint8_t RCC_GetSysclkSrc(void);
  580. void RCC_ConfigHclk(uint32_t RCC_SYSCLK);
  581. void RCC_ConfigPclk1(uint32_t RCC_HCLK);
  582. void RCC_ConfigPclk2(uint32_t RCC_HCLK);
  583. void RCC_ConfigInt(uint8_t RccInt, FunctionalState Cmd);
  584. void RCC_ConfigUsbClk(uint32_t RCC_USBCLKSource);
  585. void RCC_ConfigTim18Clk(uint32_t RCC_TIM18CLKSource);
  586. void RCC_ConfigRngcClk(uint32_t RCC_RNGCCLKPrescaler);
  587. void RCC_ConfigAdc1mClk(uint32_t RCC_ADC1MCLKSource, uint32_t RCC_ADC1MPrescaler);
  588. void RCC_ConfigAdcPllClk(uint32_t RCC_ADCPLLCLKPrescaler, FunctionalState Cmd);
  589. void RCC_ConfigAdcHclk(uint32_t RCC_ADCHCLKPrescaler);
  590. void RCC_ConfigTrng1mClk(uint32_t RCC_TRNG1MCLKSource, uint32_t RCC_TRNG1MPrescaler);
  591. void RCC_EnableTrng1mClk(FunctionalState Cmd);
  592. void RCC_ConfigLse(uint8_t RCC_LSE);
  593. void RCC_EnableLsi(FunctionalState Cmd);
  594. void RCC_ConfigRtcClk(uint32_t RCC_RTCCLKSource);
  595. void RCC_EnableRtcClk(FunctionalState Cmd);
  596. void RCC_GetClocksFreqValue(RCC_ClocksType* RCC_Clocks);
  597. void RCC_EnableAHBPeriphClk(uint32_t RCC_AHBPeriph, FunctionalState Cmd);
  598. void RCC_EnableAPB2PeriphClk(uint32_t RCC_APB2Periph, FunctionalState Cmd);
  599. void RCC_EnableAPB1PeriphClk(uint32_t RCC_APB1Periph, FunctionalState Cmd);
  600. void RCC_EnableAHBPeriphReset(uint32_t RCC_AHBPeriph, FunctionalState Cmd);
  601. void RCC_EnableAPB2PeriphReset(uint32_t RCC_APB2Periph, FunctionalState Cmd);
  602. void RCC_EnableAPB1PeriphReset(uint32_t RCC_APB1Periph, FunctionalState Cmd);
  603. void RCC_EnableBORReset(FunctionalState Cmd);
  604. void RCC_EnableBackupReset(FunctionalState Cmd);
  605. void RCC_EnableClockSecuritySystem(FunctionalState Cmd);
  606. void RCC_ConfigMcoPllClk(uint32_t RCC_MCOPLLCLKPrescaler);
  607. void RCC_ConfigMco(uint8_t RCC_MCO);
  608. FlagStatus RCC_GetFlagStatus(uint8_t RCC_FLAG);
  609. void RCC_ClrFlag(void);
  610. INTStatus RCC_GetIntStatus(uint8_t RccInt);
  611. void RCC_ClrIntPendingBit(uint8_t RccInt);
  612. #ifdef __cplusplus
  613. }
  614. #endif
  615. #endif /* __N32G45X_RCC_H__ */
  616. /**
  617. * @}
  618. */
  619. /**
  620. * @}
  621. */
  622. /**
  623. * @}
  624. */