stm32g4xx_ll_bus.h 73 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680
  1. /**
  2. ******************************************************************************
  3. * @file stm32g4xx_ll_bus.h
  4. * @author MCD Application Team
  5. * @brief Header file of BUS LL module.
  6. @verbatim
  7. ##### RCC Limitations #####
  8. ==============================================================================
  9. [..]
  10. A delay between an RCC peripheral clock enable and the effective peripheral
  11. enabling should be taken into account in order to manage the peripheral read/write
  12. from/to registers.
  13. (+) This delay depends on the peripheral mapping.
  14. (++) AHB & APB peripherals, 1 dummy read is necessary
  15. [..]
  16. Workarounds:
  17. (#) For AHB & APB peripherals, a dummy read to the peripheral register has been
  18. inserted in each LL_{BUS}_GRP{x}_EnableClock() function.
  19. @endverbatim
  20. ******************************************************************************
  21. * @attention
  22. *
  23. * Copyright (c) 2019 STMicroelectronics.
  24. * All rights reserved.
  25. *
  26. * This software is licensed under terms that can be found in the LICENSE file in
  27. * the root directory of this software component.
  28. * If no LICENSE file comes with this software, it is provided AS-IS.
  29. ******************************************************************************
  30. */
  31. /* Define to prevent recursive inclusion -------------------------------------*/
  32. #ifndef STM32G4xx_LL_BUS_H
  33. #define STM32G4xx_LL_BUS_H
  34. #ifdef __cplusplus
  35. extern "C" {
  36. #endif
  37. /* Includes ------------------------------------------------------------------*/
  38. #include "stm32g4xx.h"
  39. /** @addtogroup STM32G4xx_LL_Driver
  40. * @{
  41. */
  42. #if defined(RCC)
  43. /** @defgroup BUS_LL BUS
  44. * @{
  45. */
  46. /* Private types -------------------------------------------------------------*/
  47. /* Private variables ---------------------------------------------------------*/
  48. /* Private constants ---------------------------------------------------------*/
  49. /* Private macros ------------------------------------------------------------*/
  50. /* Exported types ------------------------------------------------------------*/
  51. /* Exported constants --------------------------------------------------------*/
  52. /** @defgroup BUS_LL_Exported_Constants BUS Exported Constants
  53. * @{
  54. */
  55. /** @defgroup BUS_LL_EC_AHB1_GRP1_PERIPH AHB1 GRP1 PERIPH
  56. * @{
  57. */
  58. #define LL_AHB1_GRP1_PERIPH_ALL 0xFFFFFFFFU
  59. #define LL_AHB1_GRP1_PERIPH_DMA1 RCC_AHB1ENR_DMA1EN
  60. #define LL_AHB1_GRP1_PERIPH_DMA2 RCC_AHB1ENR_DMA2EN
  61. #define LL_AHB1_GRP1_PERIPH_DMAMUX1 RCC_AHB1ENR_DMAMUX1EN
  62. #define LL_AHB1_GRP1_PERIPH_CORDIC RCC_AHB1ENR_CORDICEN
  63. #define LL_AHB1_GRP1_PERIPH_FMAC RCC_AHB1ENR_FMACEN
  64. #define LL_AHB1_GRP1_PERIPH_FLASH RCC_AHB1ENR_FLASHEN
  65. #define LL_AHB1_GRP1_PERIPH_SRAM1 RCC_AHB1SMENR_SRAM1SMEN
  66. #define LL_AHB1_GRP1_PERIPH_CRC RCC_AHB1ENR_CRCEN
  67. /**
  68. * @}
  69. */
  70. /** @defgroup BUS_LL_EC_AHB2_GRP1_PERIPH AHB2 GRP1 PERIPH
  71. * @{
  72. */
  73. #define LL_AHB2_GRP1_PERIPH_ALL 0xFFFFFFFFU
  74. #define LL_AHB2_GRP1_PERIPH_GPIOA RCC_AHB2ENR_GPIOAEN
  75. #define LL_AHB2_GRP1_PERIPH_GPIOB RCC_AHB2ENR_GPIOBEN
  76. #define LL_AHB2_GRP1_PERIPH_GPIOC RCC_AHB2ENR_GPIOCEN
  77. #define LL_AHB2_GRP1_PERIPH_GPIOD RCC_AHB2ENR_GPIODEN
  78. #define LL_AHB2_GRP1_PERIPH_GPIOE RCC_AHB2ENR_GPIOEEN
  79. #define LL_AHB2_GRP1_PERIPH_GPIOF RCC_AHB2ENR_GPIOFEN
  80. #define LL_AHB2_GRP1_PERIPH_GPIOG RCC_AHB2ENR_GPIOGEN
  81. #define LL_AHB2_GRP1_PERIPH_CCM RCC_AHB2SMENR_CCMSRAMSMEN
  82. #define LL_AHB2_GRP1_PERIPH_SRAM2 RCC_AHB2SMENR_SRAM2SMEN
  83. #define LL_AHB2_GRP1_PERIPH_ADC12 RCC_AHB2ENR_ADC12EN
  84. #if defined(ADC345_COMMON)
  85. #define LL_AHB2_GRP1_PERIPH_ADC345 RCC_AHB2ENR_ADC345EN
  86. #endif /* ADC345_COMMON */
  87. #define LL_AHB2_GRP1_PERIPH_DAC1 RCC_AHB2ENR_DAC1EN
  88. #if defined(DAC2)
  89. #define LL_AHB2_GRP1_PERIPH_DAC2 RCC_AHB2ENR_DAC2EN
  90. #endif /* DAC2 */
  91. #define LL_AHB2_GRP1_PERIPH_DAC3 RCC_AHB2ENR_DAC3EN
  92. #if defined(DAC4)
  93. #define LL_AHB2_GRP1_PERIPH_DAC4 RCC_AHB2ENR_DAC4EN
  94. #endif /* DAC4 */
  95. #if defined(AES)
  96. #define LL_AHB2_GRP1_PERIPH_AES RCC_AHB2ENR_AESEN
  97. #endif /* AES */
  98. #define LL_AHB2_GRP1_PERIPH_RNG RCC_AHB2ENR_RNGEN
  99. /**
  100. * @}
  101. */
  102. /** @defgroup BUS_LL_EC_AHB3_GRP1_PERIPH AHB3 GRP1 PERIPH
  103. * @{
  104. */
  105. #define LL_AHB3_GRP1_PERIPH_ALL 0xFFFFFFFFU
  106. #if defined(FMC_Bank1_R)
  107. #define LL_AHB3_GRP1_PERIPH_FMC RCC_AHB3ENR_FMCEN
  108. #endif /* FMC_Bank1_R */
  109. #if defined(QUADSPI)
  110. #define LL_AHB3_GRP1_PERIPH_QSPI RCC_AHB3ENR_QSPIEN
  111. #endif /* QUADSPI */
  112. /**
  113. * @}
  114. */
  115. /** @defgroup BUS_LL_EC_APB1_GRP1_PERIPH APB1 GRP1 PERIPH
  116. * @{
  117. */
  118. #define LL_APB1_GRP1_PERIPH_ALL 0xFFFFFFFFU
  119. #define LL_APB1_GRP1_PERIPH_TIM2 RCC_APB1ENR1_TIM2EN
  120. #define LL_APB1_GRP1_PERIPH_TIM3 RCC_APB1ENR1_TIM3EN
  121. #define LL_APB1_GRP1_PERIPH_TIM4 RCC_APB1ENR1_TIM4EN
  122. #if defined(TIM5)
  123. #define LL_APB1_GRP1_PERIPH_TIM5 RCC_APB1ENR1_TIM5EN
  124. #endif /* TIM5 */
  125. #define LL_APB1_GRP1_PERIPH_TIM6 RCC_APB1ENR1_TIM6EN
  126. #define LL_APB1_GRP1_PERIPH_TIM7 RCC_APB1ENR1_TIM7EN
  127. #define LL_APB1_GRP1_PERIPH_CRS RCC_APB1ENR1_CRSEN
  128. #define LL_APB1_GRP1_PERIPH_RTCAPB RCC_APB1ENR1_RTCAPBEN
  129. #define LL_APB1_GRP1_PERIPH_WWDG RCC_APB1ENR1_WWDGEN
  130. #define LL_APB1_GRP1_PERIPH_SPI2 RCC_APB1ENR1_SPI2EN
  131. #define LL_APB1_GRP1_PERIPH_SPI3 RCC_APB1ENR1_SPI3EN
  132. #define LL_APB1_GRP1_PERIPH_USART2 RCC_APB1ENR1_USART2EN
  133. #define LL_APB1_GRP1_PERIPH_USART3 RCC_APB1ENR1_USART3EN
  134. #if defined(UART4)
  135. #define LL_APB1_GRP1_PERIPH_UART4 RCC_APB1ENR1_UART4EN
  136. #endif /* UART4 */
  137. #if defined(UART5)
  138. #define LL_APB1_GRP1_PERIPH_UART5 RCC_APB1ENR1_UART5EN
  139. #endif /* UART5 */
  140. #define LL_APB1_GRP1_PERIPH_I2C1 RCC_APB1ENR1_I2C1EN
  141. #define LL_APB1_GRP1_PERIPH_I2C2 RCC_APB1ENR1_I2C2EN
  142. #define LL_APB1_GRP1_PERIPH_USB RCC_APB1ENR1_USBEN
  143. #if defined(FDCAN1)
  144. #define LL_APB1_GRP1_PERIPH_FDCAN RCC_APB1ENR1_FDCANEN
  145. #endif /* FDCAN1 */
  146. #define LL_APB1_GRP1_PERIPH_PWR RCC_APB1ENR1_PWREN
  147. #define LL_APB1_GRP1_PERIPH_I2C3 RCC_APB1ENR1_I2C3EN
  148. #define LL_APB1_GRP1_PERIPH_LPTIM1 RCC_APB1ENR1_LPTIM1EN
  149. /**
  150. * @}
  151. */
  152. /** @defgroup BUS_LL_EC_APB1_GRP2_PERIPH APB1 GRP2 PERIPH
  153. * @{
  154. */
  155. #define LL_APB1_GRP2_PERIPH_ALL 0xFFFFFFFFU
  156. #define LL_APB1_GRP2_PERIPH_LPUART1 RCC_APB1ENR2_LPUART1EN
  157. #if defined(I2C4)
  158. #define LL_APB1_GRP2_PERIPH_I2C4 RCC_APB1ENR2_I2C4EN
  159. #endif /* I2C4 */
  160. #define LL_APB1_GRP2_PERIPH_UCPD1 RCC_APB1ENR2_UCPD1EN
  161. /**
  162. * @}
  163. */
  164. /** @defgroup BUS_LL_EC_APB2_GRP1_PERIPH APB2 GRP1 PERIPH
  165. * @{
  166. */
  167. #define LL_APB2_GRP1_PERIPH_ALL 0xFFFFFFFFU
  168. #define LL_APB2_GRP1_PERIPH_SYSCFG RCC_APB2ENR_SYSCFGEN
  169. #define LL_APB2_GRP1_PERIPH_TIM1 RCC_APB2ENR_TIM1EN
  170. #define LL_APB2_GRP1_PERIPH_SPI1 RCC_APB2ENR_SPI1EN
  171. #define LL_APB2_GRP1_PERIPH_TIM8 RCC_APB2ENR_TIM8EN
  172. #define LL_APB2_GRP1_PERIPH_USART1 RCC_APB2ENR_USART1EN
  173. #if defined(SPI4)
  174. #define LL_APB2_GRP1_PERIPH_SPI4 RCC_APB2ENR_SPI4EN
  175. #endif /* SPI4 */
  176. #define LL_APB2_GRP1_PERIPH_TIM15 RCC_APB2ENR_TIM15EN
  177. #define LL_APB2_GRP1_PERIPH_TIM16 RCC_APB2ENR_TIM16EN
  178. #define LL_APB2_GRP1_PERIPH_TIM17 RCC_APB2ENR_TIM17EN
  179. #if defined(TIM20)
  180. #define LL_APB2_GRP1_PERIPH_TIM20 RCC_APB2ENR_TIM20EN
  181. #endif /* TIM20 */
  182. #define LL_APB2_GRP1_PERIPH_SAI1 RCC_APB2ENR_SAI1EN
  183. #if defined(HRTIM1)
  184. #define LL_APB2_GRP1_PERIPH_HRTIM1 RCC_APB2ENR_HRTIM1EN
  185. #endif /* HRTIM1 */
  186. /**
  187. * @}
  188. */
  189. /**
  190. * @}
  191. */
  192. /* Exported macro ------------------------------------------------------------*/
  193. /* Exported functions --------------------------------------------------------*/
  194. /** @defgroup BUS_LL_Exported_Functions BUS Exported Functions
  195. * @{
  196. */
  197. /** @defgroup BUS_LL_EF_AHB1 AHB1
  198. * @{
  199. */
  200. /**
  201. * @brief Enable AHB1 peripherals clock.
  202. * @rmtoll AHB1ENR DMA1EN LL_AHB1_GRP1_EnableClock\n
  203. * AHB1ENR DMA2EN LL_AHB1_GRP1_EnableClock\n
  204. * AHB1ENR DMAMMUXEN LL_AHB1_GRP1_EnableClock\n
  205. * AHB1ENR CORDICEN LL_AHB1_GRP1_EnableClock\n
  206. * AHB1ENR FMACEN LL_AHB1_GRP1_EnableClock\n
  207. * AHB1ENR FLASHEN LL_AHB1_GRP1_EnableClock\n
  208. * AHB1ENR CRCEN LL_AHB1_GRP1_EnableClock
  209. * @param Periphs This parameter can be a combination of the following values:
  210. * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1
  211. * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2
  212. * @arg @ref LL_AHB1_GRP1_PERIPH_DMAMUX1
  213. * @arg @ref LL_AHB1_GRP1_PERIPH_CORDIC
  214. * @arg @ref LL_AHB1_GRP1_PERIPH_FMAC
  215. * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
  216. * @arg @ref LL_AHB1_GRP1_PERIPH_CRC
  217. * @retval None
  218. */
  219. __STATIC_INLINE void LL_AHB1_GRP1_EnableClock(uint32_t Periphs)
  220. {
  221. __IO uint32_t tmpreg;
  222. SET_BIT(RCC->AHB1ENR, Periphs);
  223. /* Delay after an RCC peripheral clock enabling */
  224. tmpreg = READ_BIT(RCC->AHB1ENR, Periphs);
  225. (void)tmpreg;
  226. }
  227. /**
  228. * @brief Check if AHB1 peripheral clock is enabled or not
  229. * @rmtoll AHB1ENR DMA1EN LL_AHB1_GRP1_IsEnabledClock\n
  230. * AHB1ENR DMA2EN LL_AHB1_GRP1_IsEnabledClock\n
  231. * AHB1ENR DMAMUXEN LL_AHB1_GRP1_IsEnabledClock\n
  232. * AHB1ENR CORDICEN LL_AHB1_GRP1_IsEnabledClock\n
  233. * AHB1ENR FMACEN LL_AHB1_GRP1_IsEnabledClock\n
  234. * AHB1ENR FLASHEN LL_AHB1_GRP1_IsEnabledClock\n
  235. * AHB1ENR CRCEN LL_AHB1_GRP1_IsEnabledClock
  236. * @param Periphs This parameter can be a combination of the following values:
  237. * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1
  238. * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2
  239. * @arg @ref LL_AHB1_GRP1_PERIPH_DMAMUX1
  240. * @arg @ref LL_AHB1_GRP1_PERIPH_CORDIC
  241. * @arg @ref LL_AHB1_GRP1_PERIPH_FMAC
  242. * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
  243. * @arg @ref LL_AHB1_GRP1_PERIPH_CRC
  244. * @retval State of Periphs (1 or 0).
  245. */
  246. __STATIC_INLINE uint32_t LL_AHB1_GRP1_IsEnabledClock(uint32_t Periphs)
  247. {
  248. return ((READ_BIT(RCC->AHB1ENR, Periphs) == Periphs) ? 1UL : 0UL);
  249. }
  250. /**
  251. * @brief Disable AHB1 peripherals clock.
  252. * @rmtoll AHB1ENR DMA1EN LL_AHB1_GRP1_DisableClock\n
  253. * AHB1ENR DMA2EN LL_AHB1_GRP1_DisableClock\n
  254. * AHB1ENR DMAMUXEN LL_AHB1_GRP1_DisableClock\n
  255. * AHB1ENR CORDICEN LL_AHB1_GRP1_DisableClock\n
  256. * AHB1ENR FMACEN LL_AHB1_GRP1_DisableClock\n
  257. * AHB1ENR FLASHEN LL_AHB1_GRP1_DisableClock\n
  258. * AHB1ENR CRCEN LL_AHB1_GRP1_DisableClock
  259. * @param Periphs This parameter can be a combination of the following values:
  260. * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1
  261. * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2
  262. * @arg @ref LL_AHB1_GRP1_PERIPH_DMAMUX1
  263. * @arg @ref LL_AHB1_GRP1_PERIPH_CORDIC
  264. * @arg @ref LL_AHB1_GRP1_PERIPH_FMAC
  265. * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
  266. * @arg @ref LL_AHB1_GRP1_PERIPH_CRC
  267. * @retval None
  268. */
  269. __STATIC_INLINE void LL_AHB1_GRP1_DisableClock(uint32_t Periphs)
  270. {
  271. CLEAR_BIT(RCC->AHB1ENR, Periphs);
  272. }
  273. /**
  274. * @brief Force AHB1 peripherals reset.
  275. * @rmtoll AHB1RSTR DMA1RST LL_AHB1_GRP1_ForceReset\n
  276. * AHB1RSTR DMA2RST LL_AHB1_GRP1_ForceReset\n
  277. * AHB1RSTR DMAMUXRST LL_AHB1_GRP1_ForceReset\n
  278. * AHB1RSTR CORDICRST LL_AHB1_GRP1_ForceReset\n
  279. * AHB1RSTR FMACRST LL_AHB1_GRP1_ForceReset\n
  280. * AHB1RSTR FLASHRST LL_AHB1_GRP1_ForceReset\n
  281. * AHB1RSTR CRCRST LL_AHB1_GRP1_ForceReset
  282. * @param Periphs This parameter can be a combination of the following values:
  283. * @arg @ref LL_AHB1_GRP1_PERIPH_ALL
  284. * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1
  285. * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2
  286. * @arg @ref LL_AHB1_GRP1_PERIPH_DMAMUX1
  287. * @arg @ref LL_AHB1_GRP1_PERIPH_CORDIC
  288. * @arg @ref LL_AHB1_GRP1_PERIPH_FMAC
  289. * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
  290. * @arg @ref LL_AHB1_GRP1_PERIPH_CRC
  291. * @retval None
  292. */
  293. __STATIC_INLINE void LL_AHB1_GRP1_ForceReset(uint32_t Periphs)
  294. {
  295. SET_BIT(RCC->AHB1RSTR, Periphs);
  296. }
  297. /**
  298. * @brief Release AHB1 peripherals reset.
  299. * @rmtoll AHB1RSTR DMA1RST LL_AHB1_GRP1_ReleaseReset\n
  300. * AHB1RSTR DMA2RST LL_AHB1_GRP1_ReleaseReset\n
  301. * AHB1RSTR DMAMUXRST LL_AHB1_GRP1_ReleaseReset\n
  302. * AHB1RSTR CORDICRST LL_AHB1_GRP1_ReleaseReset\n
  303. * AHB1RSTR FMACRST LL_AHB1_GRP1_ReleaseReset\n
  304. * AHB1RSTR FLASHRST LL_AHB1_GRP1_ReleaseReset\n
  305. * AHB1RSTR CRCRST LL_AHB1_GRP1_ReleaseReset
  306. * @param Periphs This parameter can be a combination of the following values:
  307. * @arg @ref LL_AHB1_GRP1_PERIPH_ALL
  308. * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1
  309. * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2
  310. * @arg @ref LL_AHB1_GRP1_PERIPH_DMAMUX1
  311. * @arg @ref LL_AHB1_GRP1_PERIPH_CORDIC
  312. * @arg @ref LL_AHB1_GRP1_PERIPH_FMAC
  313. * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
  314. * @arg @ref LL_AHB1_GRP1_PERIPH_CRC
  315. * @retval None
  316. */
  317. __STATIC_INLINE void LL_AHB1_GRP1_ReleaseReset(uint32_t Periphs)
  318. {
  319. CLEAR_BIT(RCC->AHB1RSTR, Periphs);
  320. }
  321. /**
  322. * @brief Enable AHB1 peripheral clocks in Sleep and Stop modes
  323. * @rmtoll AHB1SMENR DMA1SMEN LL_AHB1_GRP1_EnableClockStopSleep\n
  324. * AHB1SMENR DMA2SMEN LL_AHB1_GRP1_EnableClockStopSleep\n
  325. * AHB1SMENR DMAMUXSMEN LL_AHB1_GRP1_EnableClockStopSleep\n
  326. * AHB1SMENR CORDICSMEN LL_AHB1_GRP1_EnableClockStopSleep\n
  327. * AHB1SMENR FMACSMEN LL_AHB1_GRP1_EnableClockStopSleep\n
  328. * AHB1SMENR FLASHSMEN LL_AHB1_GRP1_EnableClockStopSleep\n
  329. * AHB1SMENR SRAM1SMEN LL_AHB1_GRP1_DisableClockStopSleep\n
  330. * AHB1SMENR CRCSMEN LL_AHB1_GRP1_EnableClockStopSleep
  331. * @param Periphs This parameter can be a combination of the following values:
  332. * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1
  333. * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2
  334. * @arg @ref LL_AHB1_GRP1_PERIPH_DMAMUX1
  335. * @arg @ref LL_AHB1_GRP1_PERIPH_CORDIC
  336. * @arg @ref LL_AHB1_GRP1_PERIPH_FMAC
  337. * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
  338. * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM1
  339. * @arg @ref LL_AHB1_GRP1_PERIPH_CRC
  340. * @retval None
  341. */
  342. __STATIC_INLINE void LL_AHB1_GRP1_EnableClockStopSleep(uint32_t Periphs)
  343. {
  344. __IO uint32_t tmpreg;
  345. SET_BIT(RCC->AHB1SMENR, Periphs);
  346. /* Delay after an RCC peripheral clock enabling */
  347. tmpreg = READ_BIT(RCC->AHB1SMENR, Periphs);
  348. (void)tmpreg;
  349. }
  350. /**
  351. * @brief Disable AHB1 peripheral clocks in Sleep and Stop modes
  352. * @rmtoll AHB1SMENR DMA1SMEN LL_AHB1_GRP1_DisableClockStopSleep\n
  353. * AHB1SMENR DMA2SMEN LL_AHB1_GRP1_DisableClockStopSleep\n
  354. * AHB1SMENR DMAMUXSMEN LL_AHB1_GRP1_DisableClockStopSleep\n
  355. * AHB1SMENR CORDICSMEN LL_AHB1_GRP1_DisableClockStopSleep\n
  356. * AHB1SMENR FMACSMEN LL_AHB1_GRP1_DisableClockStopSleep\n
  357. * AHB1SMENR FLASHSMEN LL_AHB1_GRP1_DisableClockStopSleep\n
  358. * AHB1SMENR SRAM1SMEN LL_AHB1_GRP1_DisableClockStopSleep\n
  359. * AHB1SMENR CRCSMEN LL_AHB1_GRP1_DisableClockStopSleep
  360. * @param Periphs This parameter can be a combination of the following values:
  361. * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1
  362. * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2
  363. * @arg @ref LL_AHB1_GRP1_PERIPH_DMAMUX1
  364. * @arg @ref LL_AHB1_GRP1_PERIPH_CORDIC
  365. * @arg @ref LL_AHB1_GRP1_PERIPH_FMAC
  366. * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
  367. * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM1
  368. * @arg @ref LL_AHB1_GRP1_PERIPH_CRC
  369. * @retval None
  370. */
  371. __STATIC_INLINE void LL_AHB1_GRP1_DisableClockStopSleep(uint32_t Periphs)
  372. {
  373. CLEAR_BIT(RCC->AHB1SMENR, Periphs);
  374. }
  375. /**
  376. * @}
  377. */
  378. /** @defgroup BUS_LL_EF_AHB2 AHB2
  379. * @{
  380. */
  381. /**
  382. * @brief Enable AHB2 peripherals clock.
  383. * @rmtoll AHB2ENR GPIOAEN LL_AHB2_GRP1_EnableClock\n
  384. * AHB2ENR GPIOBEN LL_AHB2_GRP1_EnableClock\n
  385. * AHB2ENR GPIOCEN LL_AHB2_GRP1_EnableClock\n
  386. * AHB2ENR GPIODEN LL_AHB2_GRP1_EnableClock\n
  387. * AHB2ENR GPIOEEN LL_AHB2_GRP1_EnableClock\n
  388. * AHB2ENR GPIOFEN LL_AHB2_GRP1_EnableClock\n
  389. * AHB2ENR GPIOGEN LL_AHB2_GRP1_EnableClock\n
  390. * AHB2ENR ADC12EN LL_AHB2_GRP1_EnableClock\n
  391. * AHB2ENR ADC345EN LL_AHB2_GRP1_EnableClock\n
  392. * AHB2ENR DAC1EN LL_AHB2_GRP1_EnableClock\n
  393. * AHB2ENR DAC2EN LL_AHB2_GRP1_EnableClock\n
  394. * AHB2ENR DAC3EN LL_AHB2_GRP1_EnableClock\n
  395. * AHB2ENR DAC4EN LL_AHB2_GRP1_EnableClock\n
  396. * AHB2ENR AESEN LL_AHB2_GRP1_EnableClock\n
  397. * AHB2ENR RNGEN LL_AHB2_GRP1_EnableClock
  398. * @param Periphs This parameter can be a combination of the following values:
  399. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOA
  400. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOB
  401. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOC
  402. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOD
  403. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOE
  404. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOF
  405. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOG
  406. * @arg @ref LL_AHB2_GRP1_PERIPH_ADC12
  407. * @arg @ref LL_AHB2_GRP1_PERIPH_ADC345 (*)
  408. * @arg @ref LL_AHB2_GRP1_PERIPH_DAC1
  409. * @arg @ref LL_AHB2_GRP1_PERIPH_DAC2 (*)
  410. * @arg @ref LL_AHB2_GRP1_PERIPH_DAC3
  411. * @arg @ref LL_AHB2_GRP1_PERIPH_DAC4 (*)
  412. * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*)
  413. * @arg @ref LL_AHB2_GRP1_PERIPH_RNG
  414. *
  415. * (*) value not defined in all devices.
  416. * @retval None
  417. */
  418. __STATIC_INLINE void LL_AHB2_GRP1_EnableClock(uint32_t Periphs)
  419. {
  420. __IO uint32_t tmpreg;
  421. SET_BIT(RCC->AHB2ENR, Periphs);
  422. /* Delay after an RCC peripheral clock enabling */
  423. tmpreg = READ_BIT(RCC->AHB2ENR, Periphs);
  424. (void)tmpreg;
  425. }
  426. /**
  427. * @brief Check if AHB2 peripheral clock is enabled or not
  428. * @rmtoll AHB2ENR GPIOAEN LL_AHB2_GRP1_IsEnabledClock\n
  429. * AHB2ENR GPIOBEN LL_AHB2_GRP1_IsEnabledClock\n
  430. * AHB2ENR GPIOCEN LL_AHB2_GRP1_IsEnabledClock\n
  431. * AHB2ENR GPIODEN LL_AHB2_GRP1_IsEnabledClock\n
  432. * AHB2ENR GPIOEEN LL_AHB2_GRP1_IsEnabledClock\n
  433. * AHB2ENR GPIOFEN LL_AHB2_GRP1_IsEnabledClock\n
  434. * AHB2ENR GPIOGEN LL_AHB2_GRP1_IsEnabledClock\n
  435. * AHB2ENR ADC12EN LL_AHB2_GRP1_IsEnabledClock\n
  436. * AHB2ENR ADC345EN LL_AHB2_GRP1_IsEnabledClock\n
  437. * AHB2ENR DAC1EN LL_AHB2_GRP1_IsEnabledClock\n
  438. * AHB2ENR DAC2EN LL_AHB2_GRP1_IsEnabledClock\n
  439. * AHB2ENR DAC3EN LL_AHB2_GRP1_IsEnabledClock\n
  440. * AHB2ENR DAC4EN LL_AHB2_GRP1_IsEnabledClock\n
  441. * AHB2ENR AESEN LL_AHB2_GRP1_IsEnabledClock\n
  442. * AHB2ENR RNGEN LL_AHB2_GRP1_IsEnabledClock
  443. * @param Periphs This parameter can be a combination of the following values:
  444. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOA
  445. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOB
  446. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOC
  447. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOD
  448. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOE
  449. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOF
  450. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOG
  451. * @arg @ref LL_AHB2_GRP1_PERIPH_ADC12
  452. * @arg @ref LL_AHB2_GRP1_PERIPH_ADC345 (*)
  453. * @arg @ref LL_AHB2_GRP1_PERIPH_DAC1
  454. * @arg @ref LL_AHB2_GRP1_PERIPH_DAC2 (*)
  455. * @arg @ref LL_AHB2_GRP1_PERIPH_DAC3
  456. * @arg @ref LL_AHB2_GRP1_PERIPH_DAC4 (*)
  457. * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*)
  458. * @arg @ref LL_AHB2_GRP1_PERIPH_RNG
  459. *
  460. * (*) value not defined in all devices.
  461. * @retval State of Periphs (1 or 0).
  462. */
  463. __STATIC_INLINE uint32_t LL_AHB2_GRP1_IsEnabledClock(uint32_t Periphs)
  464. {
  465. return ((READ_BIT(RCC->AHB2ENR, Periphs) == Periphs) ? 1UL : 0UL);
  466. }
  467. /**
  468. * @brief Disable AHB2 peripherals clock.
  469. * @rmtoll AHB2ENR GPIOAEN LL_AHB2_GRP1_DisableClock\n
  470. * AHB2ENR GPIOBEN LL_AHB2_GRP1_DisableClock\n
  471. * AHB2ENR GPIOCEN LL_AHB2_GRP1_DisableClock\n
  472. * AHB2ENR GPIODEN LL_AHB2_GRP1_DisableClock\n
  473. * AHB2ENR GPIOEEN LL_AHB2_GRP1_DisableClock\n
  474. * AHB2ENR GPIOFEN LL_AHB2_GRP1_DisableClock\n
  475. * AHB2ENR GPIOGEN LL_AHB2_GRP1_DisableClock\n
  476. * AHB2ENR ADC12EN LL_AHB2_GRP1_DisableClock\n
  477. * AHB2ENR ADC345EN LL_AHB2_GRP1_DisableClock\n
  478. * AHB2ENR DAC1EN LL_AHB2_GRP1_DisableClock\n
  479. * AHB2ENR DAC2EN LL_AHB2_GRP1_DisableClock\n
  480. * AHB2ENR DAC3EN LL_AHB2_GRP1_DisableClock\n
  481. * AHB2ENR DAC4EN LL_AHB2_GRP1_DisableClock\n
  482. * AHB2ENR AESEN LL_AHB2_GRP1_DisableClock\n
  483. * AHB2ENR RNGEN LL_AHB2_GRP1_DisableClock
  484. * @param Periphs This parameter can be a combination of the following values:
  485. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOA
  486. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOB
  487. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOC
  488. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOD
  489. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOE
  490. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOF
  491. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOG
  492. * @arg @ref LL_AHB2_GRP1_PERIPH_ADC12
  493. * @arg @ref LL_AHB2_GRP1_PERIPH_ADC345 (*)
  494. * @arg @ref LL_AHB2_GRP1_PERIPH_DAC1
  495. * @arg @ref LL_AHB2_GRP1_PERIPH_DAC2 (*)
  496. * @arg @ref LL_AHB2_GRP1_PERIPH_DAC3
  497. * @arg @ref LL_AHB2_GRP1_PERIPH_DAC4 (*)
  498. * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*)
  499. * @arg @ref LL_AHB2_GRP1_PERIPH_RNG
  500. *
  501. * (*) value not defined in all devices.
  502. * @retval None
  503. */
  504. __STATIC_INLINE void LL_AHB2_GRP1_DisableClock(uint32_t Periphs)
  505. {
  506. CLEAR_BIT(RCC->AHB2ENR, Periphs);
  507. }
  508. /**
  509. * @brief Force AHB2 peripherals reset.
  510. * @rmtoll AHB2RSTR GPIOARST LL_AHB2_GRP1_ForceReset\n
  511. * AHB2RSTR GPIOBRST LL_AHB2_GRP1_ForceReset\n
  512. * AHB2RSTR GPIOCRST LL_AHB2_GRP1_ForceReset\n
  513. * AHB2RSTR GPIODRST LL_AHB2_GRP1_ForceReset\n
  514. * AHB2RSTR GPIOERST LL_AHB2_GRP1_ForceReset\n
  515. * AHB2RSTR GPIOFRST LL_AHB2_GRP1_ForceReset\n
  516. * AHB2RSTR GPIOGRST LL_AHB2_GRP1_ForceReset\n
  517. * AHB2RSTR ADC12RST LL_AHB2_GRP1_ForceReset\n
  518. * AHB2RSTR ADC345RST LL_AHB2_GRP1_ForceReset\n
  519. * AHB2RSTR DAC1RST LL_AHB2_GRP1_ForceReset\n
  520. * AHB2RSTR DAC2RST LL_AHB2_GRP1_ForceReset\n
  521. * AHB2RSTR DAC3RST LL_AHB2_GRP1_ForceReset\n
  522. * AHB2RSTR DAC4RST LL_AHB2_GRP1_ForceReset\n
  523. * AHB2RSTR AESRST LL_AHB2_GRP1_ForceReset\n
  524. * AHB2RSTR RNGRST LL_AHB2_GRP1_ForceReset
  525. * @param Periphs This parameter can be a combination of the following values:
  526. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOA
  527. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOB
  528. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOC
  529. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOD
  530. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOE
  531. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOF
  532. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOG
  533. * @arg @ref LL_AHB2_GRP1_PERIPH_ADC12
  534. * @arg @ref LL_AHB2_GRP1_PERIPH_ADC345 (*)
  535. * @arg @ref LL_AHB2_GRP1_PERIPH_DAC1
  536. * @arg @ref LL_AHB2_GRP1_PERIPH_DAC2 (*)
  537. * @arg @ref LL_AHB2_GRP1_PERIPH_DAC3
  538. * @arg @ref LL_AHB2_GRP1_PERIPH_DAC4 (*)
  539. * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*)
  540. * @arg @ref LL_AHB2_GRP1_PERIPH_RNG
  541. *
  542. * (*) value not defined in all devices.
  543. * @retval None
  544. */
  545. __STATIC_INLINE void LL_AHB2_GRP1_ForceReset(uint32_t Periphs)
  546. {
  547. SET_BIT(RCC->AHB2RSTR, Periphs);
  548. }
  549. /**
  550. * @brief Release AHB2 peripherals reset.
  551. * @rmtoll AHB2RSTR GPIOARST LL_AHB2_GRP1_ReleaseReset\n
  552. * AHB2RSTR GPIOBRST LL_AHB2_GRP1_ReleaseReset\n
  553. * AHB2RSTR GPIOCRST LL_AHB2_GRP1_ReleaseReset\n
  554. * AHB2RSTR GPIODRST LL_AHB2_GRP1_ReleaseReset\n
  555. * AHB2RSTR GPIOERST LL_AHB2_GRP1_ReleaseReset\n
  556. * AHB2RSTR GPIOFRST LL_AHB2_GRP1_ReleaseReset\n
  557. * AHB2RSTR GPIOGRST LL_AHB2_GRP1_ReleaseReset\n
  558. * AHB2RSTR ADC12RST LL_AHB2_GRP1_ReleaseReset\n
  559. * AHB2RSTR ADC345RST LL_AHB2_GRP1_ReleaseReset\n
  560. * AHB2RSTR DAC1RST LL_AHB2_GRP1_ReleaseReset\n
  561. * AHB2RSTR DAC2RST LL_AHB2_GRP1_ReleaseReset\n
  562. * AHB2RSTR DAC3RST LL_AHB2_GRP1_ReleaseReset\n
  563. * AHB2RSTR DAC4RST LL_AHB2_GRP1_ReleaseReset\n
  564. * AHB2RSTR AESRST LL_AHB2_GRP1_ReleaseReset\n
  565. * AHB2RSTR RNGRST LL_AHB2_GRP1_ReleaseReset
  566. * @param Periphs This parameter can be a combination of the following values:
  567. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOA
  568. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOB
  569. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOC
  570. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOD
  571. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOE
  572. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOF
  573. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOG
  574. * @arg @ref LL_AHB2_GRP1_PERIPH_ADC12
  575. * @arg @ref LL_AHB2_GRP1_PERIPH_ADC345 (*)
  576. * @arg @ref LL_AHB2_GRP1_PERIPH_DAC1
  577. * @arg @ref LL_AHB2_GRP1_PERIPH_DAC2 (*)
  578. * @arg @ref LL_AHB2_GRP1_PERIPH_DAC3
  579. * @arg @ref LL_AHB2_GRP1_PERIPH_DAC4 (*)
  580. * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*)
  581. * @arg @ref LL_AHB2_GRP1_PERIPH_RNG
  582. *
  583. * (*) value not defined in all devices.
  584. * @retval None
  585. */
  586. __STATIC_INLINE void LL_AHB2_GRP1_ReleaseReset(uint32_t Periphs)
  587. {
  588. CLEAR_BIT(RCC->AHB2RSTR, Periphs);
  589. }
  590. /**
  591. * @brief Enable AHB2 peripheral clocks in Sleep and Stop modes
  592. * @rmtoll AHB2SMENR GPIOASMEN LL_AHB2_GRP1_EnableClockStopSleep\n
  593. * AHB2SMENR GPIOBSMEN LL_AHB2_GRP1_EnableClockStopSleep\n
  594. * AHB2SMENR GPIOCSMEN LL_AHB2_GRP1_EnableClockStopSleep\n
  595. * AHB2SMENR GPIODSMEN LL_AHB2_GRP1_EnableClockStopSleep\n
  596. * AHB2SMENR GPIOESMEN LL_AHB2_GRP1_EnableClockStopSleep\n
  597. * AHB2SMENR GPIOFSMEN LL_AHB2_GRP1_EnableClockStopSleep\n
  598. * AHB2SMENR GPIOGSMEN LL_AHB2_GRP1_EnableClockStopSleep\n
  599. * AHB2SMENR SRAM2SMEN LL_AHB2_GRP1_EnableClockStopSleep\n
  600. * AHB2SMENR CCMSMEN LL_AHB2_GRP1_EnableClockStopSleep\n
  601. * AHB2SMENR ADC12SMEN LL_AHB2_GRP1_EnableClockStopSleep\n
  602. * AHB2SMENR ADC345SMEN LL_AHB2_GRP1_EnableClockStopSleep\n
  603. * AHB2SMENR DAC1SMEN LL_AHB2_GRP1_EnableClockStopSleep\n
  604. * AHB2SMENR DAC2SMEN LL_AHB2_GRP1_EnableClockStopSleep\n
  605. * AHB2SMENR DAC3SMEN LL_AHB2_GRP1_EnableClockStopSleep\n
  606. * AHB2SMENR DAC4SMEN LL_AHB2_GRP1_EnableClockStopSleep\n
  607. * AHB2SMENR AESSMEN LL_AHB2_GRP1_EnableClockStopSleep\n
  608. * AHB2SMENR RNGSMEN LL_AHB2_GRP1_EnableClockStopSleep
  609. * @param Periphs This parameter can be a combination of the following values:
  610. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOA
  611. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOB
  612. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOC
  613. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOD
  614. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOE
  615. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOF
  616. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOG
  617. * @arg @ref LL_AHB2_GRP1_PERIPH_SRAM2
  618. * @arg @ref LL_AHB2_GRP1_PERIPH_CCM
  619. * @arg @ref LL_AHB2_GRP1_PERIPH_ADC12
  620. * @arg @ref LL_AHB2_GRP1_PERIPH_ADC345 (*)
  621. * @arg @ref LL_AHB2_GRP1_PERIPH_DAC1
  622. * @arg @ref LL_AHB2_GRP1_PERIPH_DAC2 (*)
  623. * @arg @ref LL_AHB2_GRP1_PERIPH_DAC3
  624. * @arg @ref LL_AHB2_GRP1_PERIPH_DAC4 (*)
  625. * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*)
  626. * @arg @ref LL_AHB2_GRP1_PERIPH_RNG
  627. *
  628. * (*) value not defined in all devices.
  629. * @retval None
  630. */
  631. __STATIC_INLINE void LL_AHB2_GRP1_EnableClockStopSleep(uint32_t Periphs)
  632. {
  633. __IO uint32_t tmpreg;
  634. SET_BIT(RCC->AHB2SMENR, Periphs);
  635. /* Delay after an RCC peripheral clock enabling */
  636. tmpreg = READ_BIT(RCC->AHB2SMENR, Periphs);
  637. (void)tmpreg;
  638. }
  639. /**
  640. * @brief Disable AHB2 peripheral clocks in Sleep and Stop modes
  641. * @rmtoll AHB2SMENR GPIOASMEN LL_AHB2_GRP1_DisableClockStopSleep\n
  642. * AHB2SMENR GPIOBSMEN LL_AHB2_GRP1_DisableClockStopSleep\n
  643. * AHB2SMENR GPIOCSMEN LL_AHB2_GRP1_DisableClockStopSleep\n
  644. * AHB2SMENR GPIODSMEN LL_AHB2_GRP1_DisableClockStopSleep\n
  645. * AHB2SMENR GPIOESMEN LL_AHB2_GRP1_DisableClockStopSleep\n
  646. * AHB2SMENR GPIOFSMEN LL_AHB2_GRP1_DisableClockStopSleep\n
  647. * AHB2SMENR GPIOGSMEN LL_AHB2_GRP1_DisableClockStopSleep\n
  648. * AHB2SMENR SRAM2SMEN LL_AHB2_GRP1_DisableClockStopSleep\n
  649. * AHB2SMENR CCMSMEN LL_AHB2_GRP1_DisableClockStopSleep\n
  650. * AHB2SMENR ADC12SMEN LL_AHB2_GRP1_DisableClockStopSleep\n
  651. * AHB2SMENR ADC345SMEN LL_AHB2_GRP1_DisableClockStopSleep\n
  652. * AHB2SMENR DAC1SMEN LL_AHB2_GRP1_DisableClockStopSleep\n
  653. * AHB2SMENR DAC2SMEN LL_AHB2_GRP1_DisableClockStopSleep\n
  654. * AHB2SMENR DAC3SMEN LL_AHB2_GRP1_DisableClockStopSleep\n
  655. * AHB2SMENR DAC4SMEN LL_AHB2_GRP1_DisableClockStopSleep\n
  656. * AHB2SMENR AESSMEN LL_AHB2_GRP1_DisableClockStopSleep\n
  657. * AHB2SMENR RNGSMEN LL_AHB2_GRP1_DisableClockStopSleep
  658. * @param Periphs This parameter can be a combination of the following values:
  659. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOA
  660. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOB
  661. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOC
  662. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOD
  663. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOE
  664. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOF
  665. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOG
  666. * @arg @ref LL_AHB2_GRP1_PERIPH_SRAM2
  667. * @arg @ref LL_AHB2_GRP1_PERIPH_CCM
  668. * @arg @ref LL_AHB2_GRP1_PERIPH_ADC12
  669. * @arg @ref LL_AHB2_GRP1_PERIPH_ADC345 (*)
  670. * @arg @ref LL_AHB2_GRP1_PERIPH_DAC1
  671. * @arg @ref LL_AHB2_GRP1_PERIPH_DAC2 (*)
  672. * @arg @ref LL_AHB2_GRP1_PERIPH_DAC3
  673. * @arg @ref LL_AHB2_GRP1_PERIPH_DAC4 (*)
  674. * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*)
  675. * @arg @ref LL_AHB2_GRP1_PERIPH_RNG
  676. *
  677. * (*) value not defined in all devices.
  678. * @retval None
  679. */
  680. __STATIC_INLINE void LL_AHB2_GRP1_DisableClockStopSleep(uint32_t Periphs)
  681. {
  682. CLEAR_BIT(RCC->AHB2SMENR, Periphs);
  683. }
  684. /**
  685. * @}
  686. */
  687. /** @defgroup BUS_LL_EF_AHB3 AHB3
  688. * @{
  689. */
  690. /**
  691. * @brief Enable AHB3 peripherals clock.
  692. * @rmtoll AHB3ENR FMCEN LL_AHB3_GRP1_EnableClock\n
  693. * AHB3ENR QSPIEN LL_AHB3_GRP1_EnableClock
  694. * @param Periphs This parameter can be a combination of the following values:
  695. * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*)
  696. * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI (*)
  697. *
  698. * (*) value not defined in all devices.
  699. * @retval None
  700. */
  701. __STATIC_INLINE void LL_AHB3_GRP1_EnableClock(uint32_t Periphs)
  702. {
  703. __IO uint32_t tmpreg;
  704. SET_BIT(RCC->AHB3ENR, Periphs);
  705. /* Delay after an RCC peripheral clock enabling */
  706. tmpreg = READ_BIT(RCC->AHB3ENR, Periphs);
  707. (void)tmpreg;
  708. }
  709. /**
  710. * @brief Check if AHB3 peripheral clock is enabled or not
  711. * @rmtoll AHB3ENR FMCEN LL_AHB3_GRP1_IsEnabledClock\n
  712. * AHB3ENR QSPIEN LL_AHB3_GRP1_IsEnabledClock
  713. * @param Periphs This parameter can be a combination of the following values:
  714. * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*)
  715. * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI (*)
  716. *
  717. * (*) value not defined in all devices.
  718. * @retval State of Periphs (1 or 0).
  719. */
  720. __STATIC_INLINE uint32_t LL_AHB3_GRP1_IsEnabledClock(uint32_t Periphs)
  721. {
  722. return ((READ_BIT(RCC->AHB3ENR, Periphs) == Periphs) ? 1UL : 0UL);
  723. }
  724. /**
  725. * @brief Disable AHB3 peripherals clock.
  726. * @rmtoll AHB3ENR FMCEN LL_AHB3_GRP1_DisableClock\n
  727. * AHB3ENR QSPIEN LL_AHB3_GRP1_DisableClock
  728. * @param Periphs This parameter can be a combination of the following values:
  729. * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*)
  730. * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI (*)
  731. *
  732. * (*) value not defined in all devices.
  733. * @retval None
  734. */
  735. __STATIC_INLINE void LL_AHB3_GRP1_DisableClock(uint32_t Periphs)
  736. {
  737. CLEAR_BIT(RCC->AHB3ENR, Periphs);
  738. }
  739. /**
  740. * @brief Force AHB3 peripherals reset.
  741. * @rmtoll AHB3RSTR FMCRST LL_AHB3_GRP1_ForceReset\n
  742. * AHB3RSTR QSPIRST LL_AHB3_GRP1_ForceReset
  743. * @param Periphs This parameter can be a combination of the following values:
  744. * @arg @ref LL_AHB3_GRP1_PERIPH_ALL
  745. * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*)
  746. * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI (*)
  747. *
  748. * (*) value not defined in all devices.
  749. * @retval None
  750. */
  751. __STATIC_INLINE void LL_AHB3_GRP1_ForceReset(uint32_t Periphs)
  752. {
  753. SET_BIT(RCC->AHB3RSTR, Periphs);
  754. }
  755. /**
  756. * @brief Release AHB3 peripherals reset.
  757. * @rmtoll AHB3RSTR FMCRST LL_AHB3_GRP1_ReleaseReset\n
  758. * AHB3RSTR QSPIRST LL_AHB3_GRP1_ReleaseReset
  759. * @param Periphs This parameter can be a combination of the following values:
  760. * @arg @ref LL_AHB3_GRP1_PERIPH_ALL
  761. * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*)
  762. * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI (*)
  763. *
  764. * (*) value not defined in all devices.
  765. * @retval None
  766. */
  767. __STATIC_INLINE void LL_AHB3_GRP1_ReleaseReset(uint32_t Periphs)
  768. {
  769. CLEAR_BIT(RCC->AHB3RSTR, Periphs);
  770. }
  771. /**
  772. * @brief Enable AHB3 peripheral clocks in Sleep and Stop modes
  773. * @rmtoll AHB3SMENR FMCSMEN LL_AHB3_GRP1_EnableClockStopSleep\n
  774. * AHB3SMENR QSPISMEN LL_AHB3_GRP1_EnableClockStopSleep
  775. * @param Periphs This parameter can be a combination of the following values:
  776. * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*)
  777. * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI (*)
  778. *
  779. * (*) value not defined in all devices.
  780. * @retval None
  781. */
  782. __STATIC_INLINE void LL_AHB3_GRP1_EnableClockStopSleep(uint32_t Periphs)
  783. {
  784. __IO uint32_t tmpreg;
  785. SET_BIT(RCC->AHB3SMENR, Periphs);
  786. /* Delay after an RCC peripheral clock enabling */
  787. tmpreg = READ_BIT(RCC->AHB3SMENR, Periphs);
  788. (void)tmpreg;
  789. }
  790. /**
  791. * @brief Disable AHB3 peripheral clocks in Sleep and Stop modes
  792. * @rmtoll AHB3SMENR FMCSMEN LL_AHB3_GRP1_DisableClockStopSleep\n
  793. * AHB3SMENR QSPISMEN LL_AHB3_GRP1_DisableClockStopSleep
  794. * @param Periphs This parameter can be a combination of the following values:
  795. * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*)
  796. * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI (*)
  797. *
  798. * (*) value not defined in all devices.
  799. * @retval None
  800. */
  801. __STATIC_INLINE void LL_AHB3_GRP1_DisableClockStopSleep(uint32_t Periphs)
  802. {
  803. CLEAR_BIT(RCC->AHB3SMENR, Periphs);
  804. }
  805. /**
  806. * @}
  807. */
  808. /** @defgroup BUS_LL_EF_APB1 APB1
  809. * @{
  810. */
  811. /**
  812. * @brief Enable APB1 peripherals clock.
  813. * @rmtoll APB1ENR1 TIM2EN LL_APB1_GRP1_EnableClock\n
  814. * APB1ENR1 TIM3EN LL_APB1_GRP1_EnableClock\n
  815. * APB1ENR1 TIM4EN LL_APB1_GRP1_EnableClock\n
  816. * APB1ENR1 TIM5EN LL_APB1_GRP1_EnableClock\n
  817. * APB1ENR1 TIM6EN LL_APB1_GRP1_EnableClock\n
  818. * APB1ENR1 TIM7EN LL_APB1_GRP1_EnableClock\n
  819. * APB1ENR1 CRSEN LL_APB1_GRP1_EnableClock\n
  820. * APB1ENR1 RTCAPBEN LL_APB1_GRP1_EnableClock\n
  821. * APB1ENR1 WWDGEN LL_APB1_GRP1_EnableClock\n
  822. * APB1ENR1 SPI2EN LL_APB1_GRP1_EnableClock\n
  823. * APB1ENR1 SPI3EN LL_APB1_GRP1_EnableClock\n
  824. * APB1ENR1 USART2EN LL_APB1_GRP1_EnableClock\n
  825. * APB1ENR1 USART3EN LL_APB1_GRP1_EnableClock\n
  826. * APB1ENR1 UART4EN LL_APB1_GRP1_EnableClock\n
  827. * APB1ENR1 UART5EN LL_APB1_GRP1_EnableClock\n
  828. * APB1ENR1 I2C1EN LL_APB1_GRP1_EnableClock\n
  829. * APB1ENR1 I2C2EN LL_APB1_GRP1_EnableClock\n
  830. * APB1ENR1 USBEN LL_APB1_GRP1_EnableClock\n
  831. * APB1ENR1 FDCANEN LL_APB1_GRP1_EnableClock\n
  832. * APB1ENR1 PWREN LL_APB1_GRP1_EnableClock\n
  833. * APB1ENR1 I2C3EN LL_APB1_GRP1_EnableClock\n
  834. * APB1ENR1 LPTIM1EN LL_APB1_GRP1_EnableClock
  835. * @param Periphs This parameter can be a combination of the following values:
  836. * @arg @ref LL_APB1_GRP1_PERIPH_TIM2
  837. * @arg @ref LL_APB1_GRP1_PERIPH_TIM3
  838. * @arg @ref LL_APB1_GRP1_PERIPH_TIM4
  839. * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*)
  840. * @arg @ref LL_APB1_GRP1_PERIPH_TIM6
  841. * @arg @ref LL_APB1_GRP1_PERIPH_TIM7
  842. * @arg @ref LL_APB1_GRP1_PERIPH_CRS
  843. * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB
  844. * @arg @ref LL_APB1_GRP1_PERIPH_WWDG
  845. * @arg @ref LL_APB1_GRP1_PERIPH_SPI2
  846. * @arg @ref LL_APB1_GRP1_PERIPH_SPI3
  847. * @arg @ref LL_APB1_GRP1_PERIPH_USART2
  848. * @arg @ref LL_APB1_GRP1_PERIPH_USART3
  849. * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*)
  850. * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*)
  851. * @arg @ref LL_APB1_GRP1_PERIPH_I2C1
  852. * @arg @ref LL_APB1_GRP1_PERIPH_I2C2
  853. * @arg @ref LL_APB1_GRP1_PERIPH_USB
  854. * @arg @ref LL_APB1_GRP1_PERIPH_FDCAN (*)
  855. * @arg @ref LL_APB1_GRP1_PERIPH_PWR
  856. * @arg @ref LL_APB1_GRP1_PERIPH_I2C3
  857. * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1
  858. *
  859. * (*) value not defined in all devices.
  860. * @retval None
  861. */
  862. __STATIC_INLINE void LL_APB1_GRP1_EnableClock(uint32_t Periphs)
  863. {
  864. __IO uint32_t tmpreg;
  865. SET_BIT(RCC->APB1ENR1, Periphs);
  866. /* Delay after an RCC peripheral clock enabling */
  867. tmpreg = READ_BIT(RCC->APB1ENR1, Periphs);
  868. (void)tmpreg;
  869. }
  870. /**
  871. * @brief Enable APB1 peripherals clock.
  872. * @rmtoll APB1ENR2 LPUART1EN LL_APB1_GRP2_EnableClock\n
  873. * APB1ENR2 I2C4EN LL_APB1_GRP2_EnableClock\n
  874. * APB1ENR2 UCPD1EN LL_APB1_GRP2_EnableClock
  875. * @param Periphs This parameter can be a combination of the following values:
  876. * @arg @ref LL_APB1_GRP2_PERIPH_LPUART1
  877. * @arg @ref LL_APB1_GRP2_PERIPH_I2C4 (*)
  878. * @arg @ref LL_APB1_GRP2_PERIPH_UCPD1
  879. *
  880. * (*) value not defined in all devices.
  881. * @retval None
  882. */
  883. __STATIC_INLINE void LL_APB1_GRP2_EnableClock(uint32_t Periphs)
  884. {
  885. __IO uint32_t tmpreg;
  886. SET_BIT(RCC->APB1ENR2, Periphs);
  887. /* Delay after an RCC peripheral clock enabling */
  888. tmpreg = READ_BIT(RCC->APB1ENR2, Periphs);
  889. (void)tmpreg;
  890. }
  891. /**
  892. * @brief Check if APB1 peripheral clock is enabled or not
  893. * @rmtoll APB1ENR1 TIM2EN LL_APB1_GRP1_IsEnabledClock\n
  894. * APB1ENR1 TIM3EN LL_APB1_GRP1_IsEnabledClock\n
  895. * APB1ENR1 TIM4EN LL_APB1_GRP1_IsEnabledClock\n
  896. * APB1ENR1 TIM5EN LL_APB1_GRP1_IsEnabledClock\n
  897. * APB1ENR1 TIM6EN LL_APB1_GRP1_IsEnabledClock\n
  898. * APB1ENR1 TIM7EN LL_APB1_GRP1_IsEnabledClock\n
  899. * APB1ENR1 CRSEN LL_APB1_GRP1_IsEnabledClock\n
  900. * APB1ENR1 RTCAPBEN LL_APB1_GRP1_IsEnabledClock\n
  901. * APB1ENR1 WWDGEN LL_APB1_GRP1_IsEnabledClock\n
  902. * APB1ENR1 SPI2EN LL_APB1_GRP1_IsEnabledClock\n
  903. * APB1ENR1 SPI3EN LL_APB1_GRP1_IsEnabledClock\n
  904. * APB1ENR1 USART2EN LL_APB1_GRP1_IsEnabledClock\n
  905. * APB1ENR1 USART3EN LL_APB1_GRP1_IsEnabledClock\n
  906. * APB1ENR1 UART4EN LL_APB1_GRP1_IsEnabledClock\n
  907. * APB1ENR1 UART5EN LL_APB1_GRP1_IsEnabledClock\n
  908. * APB1ENR1 I2C1EN LL_APB1_GRP1_IsEnabledClock\n
  909. * APB1ENR1 I2C2EN LL_APB1_GRP1_IsEnabledClock\n
  910. * APB1ENR1 USBEN LL_APB1_GRP1_IsEnabledClock\n
  911. * APB1ENR1 FDCANEN LL_APB1_GRP1_IsEnabledClock\n
  912. * APB1ENR1 PWREN LL_APB1_GRP1_IsEnabledClock\n
  913. * APB1ENR1 I2C3EN LL_APB1_GRP1_IsEnabledClock\n
  914. * APB1ENR1 LPTIM1EN LL_APB1_GRP1_IsEnabledClock
  915. * @param Periphs This parameter can be a combination of the following values:
  916. * @arg @ref LL_APB1_GRP1_PERIPH_TIM2
  917. * @arg @ref LL_APB1_GRP1_PERIPH_TIM3
  918. * @arg @ref LL_APB1_GRP1_PERIPH_TIM4
  919. * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*)
  920. * @arg @ref LL_APB1_GRP1_PERIPH_TIM6
  921. * @arg @ref LL_APB1_GRP1_PERIPH_TIM7
  922. * @arg @ref LL_APB1_GRP1_PERIPH_CRS
  923. * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB
  924. * @arg @ref LL_APB1_GRP1_PERIPH_WWDG
  925. * @arg @ref LL_APB1_GRP1_PERIPH_SPI2
  926. * @arg @ref LL_APB1_GRP1_PERIPH_SPI3
  927. * @arg @ref LL_APB1_GRP1_PERIPH_USART2
  928. * @arg @ref LL_APB1_GRP1_PERIPH_USART3
  929. * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*)
  930. * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*)
  931. * @arg @ref LL_APB1_GRP1_PERIPH_I2C1
  932. * @arg @ref LL_APB1_GRP1_PERIPH_I2C2
  933. * @arg @ref LL_APB1_GRP1_PERIPH_USB
  934. * @arg @ref LL_APB1_GRP1_PERIPH_FDCAN (*)
  935. * @arg @ref LL_APB1_GRP1_PERIPH_PWR
  936. * @arg @ref LL_APB1_GRP1_PERIPH_I2C3
  937. * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1
  938. *
  939. * (*) value not defined in all devices.
  940. * @retval State of Periphs (1 or 0).
  941. */
  942. __STATIC_INLINE uint32_t LL_APB1_GRP1_IsEnabledClock(uint32_t Periphs)
  943. {
  944. return ((READ_BIT(RCC->APB1ENR1, Periphs) == Periphs) ? 1UL : 0UL);
  945. }
  946. /**
  947. * @brief Check if APB1 peripheral clock is enabled or not
  948. * @rmtoll APB1ENR2 LPUART1EN LL_APB1_GRP2_IsEnabledClock\n
  949. * APB1ENR2 I2C4EN LL_APB1_GRP2_IsEnabledClock\n
  950. * APB1ENR2 UCPD1EN LL_APB1_GRP2_IsEnabledClock
  951. * @param Periphs This parameter can be a combination of the following values:
  952. * @arg @ref LL_APB1_GRP2_PERIPH_LPUART1
  953. * @arg @ref LL_APB1_GRP2_PERIPH_I2C4 (*)
  954. * @arg @ref LL_APB1_GRP2_PERIPH_UCPD1
  955. *
  956. * (*) value not defined in all devices.
  957. * @retval State of Periphs (1 or 0).
  958. */
  959. __STATIC_INLINE uint32_t LL_APB1_GRP2_IsEnabledClock(uint32_t Periphs)
  960. {
  961. return ((READ_BIT(RCC->APB1ENR2, Periphs) == Periphs) ? 1UL : 0UL);
  962. }
  963. /**
  964. * @brief Disable APB1 peripherals clock.
  965. * @rmtoll APB1ENR1 TIM2EN LL_APB1_GRP1_DisableClock\n
  966. * APB1ENR1 TIM3EN LL_APB1_GRP1_DisableClock\n
  967. * APB1ENR1 TIM4EN LL_APB1_GRP1_DisableClock\n
  968. * APB1ENR1 TIM5EN LL_APB1_GRP1_DisableClock\n
  969. * APB1ENR1 TIM6EN LL_APB1_GRP1_DisableClock\n
  970. * APB1ENR1 TIM7EN LL_APB1_GRP1_DisableClock\n
  971. * APB1ENR1 CRSEN LL_APB1_GRP1_DisableClock\n
  972. * APB1ENR1 RTCAPBEN LL_APB1_GRP1_DisableClock\n
  973. * APB1ENR1 WWDGEN LL_APB1_GRP1_DisableClock\n
  974. * APB1ENR1 SPI2EN LL_APB1_GRP1_DisableClock\n
  975. * APB1ENR1 SPI3EN LL_APB1_GRP1_DisableClock\n
  976. * APB1ENR1 USART2EN LL_APB1_GRP1_DisableClock\n
  977. * APB1ENR1 USART3EN LL_APB1_GRP1_DisableClock\n
  978. * APB1ENR1 UART4EN LL_APB1_GRP1_DisableClock\n
  979. * APB1ENR1 UART5EN LL_APB1_GRP1_DisableClock\n
  980. * APB1ENR1 I2C1EN LL_APB1_GRP1_DisableClock\n
  981. * APB1ENR1 I2C2EN LL_APB1_GRP1_DisableClock\n
  982. * APB1ENR1 USBEN LL_APB1_GRP1_DisableClock\n
  983. * APB1ENR1 FDCANEN LL_APB1_GRP1_DisableClock\n
  984. * APB1ENR1 PWREN LL_APB1_GRP1_DisableClock\n
  985. * APB1ENR1 I2C3EN LL_APB1_GRP1_DisableClock\n
  986. * APB1ENR1 LPTIM1EN LL_APB1_GRP1_DisableClock
  987. * @param Periphs This parameter can be a combination of the following values:
  988. * @arg @ref LL_APB1_GRP1_PERIPH_TIM2
  989. * @arg @ref LL_APB1_GRP1_PERIPH_TIM3
  990. * @arg @ref LL_APB1_GRP1_PERIPH_TIM4
  991. * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*)
  992. * @arg @ref LL_APB1_GRP1_PERIPH_TIM6
  993. * @arg @ref LL_APB1_GRP1_PERIPH_TIM7
  994. * @arg @ref LL_APB1_GRP1_PERIPH_CRS
  995. * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB
  996. * @arg @ref LL_APB1_GRP1_PERIPH_WWDG
  997. * @arg @ref LL_APB1_GRP1_PERIPH_SPI2
  998. * @arg @ref LL_APB1_GRP1_PERIPH_SPI3
  999. * @arg @ref LL_APB1_GRP1_PERIPH_USART2
  1000. * @arg @ref LL_APB1_GRP1_PERIPH_USART3
  1001. * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*)
  1002. * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*)
  1003. * @arg @ref LL_APB1_GRP1_PERIPH_I2C1
  1004. * @arg @ref LL_APB1_GRP1_PERIPH_I2C2
  1005. * @arg @ref LL_APB1_GRP1_PERIPH_USB
  1006. * @arg @ref LL_APB1_GRP1_PERIPH_FDCAN (*)
  1007. * @arg @ref LL_APB1_GRP1_PERIPH_PWR
  1008. * @arg @ref LL_APB1_GRP1_PERIPH_I2C3
  1009. * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1
  1010. *
  1011. * (*) value not defined in all devices.
  1012. * @retval None
  1013. */
  1014. __STATIC_INLINE void LL_APB1_GRP1_DisableClock(uint32_t Periphs)
  1015. {
  1016. CLEAR_BIT(RCC->APB1ENR1, Periphs);
  1017. }
  1018. /**
  1019. * @brief Disable APB1 peripherals clock.
  1020. * @rmtoll APB1ENR2 LPUART1EN LL_APB1_GRP2_DisableClock\n
  1021. * APB1ENR2 I2C4EN LL_APB1_GRP2_DisableClock\n
  1022. * APB1ENR2 UCPD1EN LL_APB1_GRP2_DisableClock
  1023. * @param Periphs This parameter can be a combination of the following values:
  1024. * @arg @ref LL_APB1_GRP2_PERIPH_LPUART1
  1025. * @arg @ref LL_APB1_GRP2_PERIPH_I2C4 (*)
  1026. * @arg @ref LL_APB1_GRP2_PERIPH_UCPD1
  1027. *
  1028. * (*) value not defined in all devices.
  1029. * @retval None
  1030. */
  1031. __STATIC_INLINE void LL_APB1_GRP2_DisableClock(uint32_t Periphs)
  1032. {
  1033. CLEAR_BIT(RCC->APB1ENR2, Periphs);
  1034. }
  1035. /**
  1036. * @brief Force APB1 peripherals reset.
  1037. * @rmtoll APB1RSTR1 TIM2RST LL_APB1_GRP1_ForceReset\n
  1038. * APB1RSTR1 TIM3RST LL_APB1_GRP1_ForceReset\n
  1039. * APB1RSTR1 TIM4RST LL_APB1_GRP1_ForceReset\n
  1040. * APB1RSTR1 TIM5RST LL_APB1_GRP1_ForceReset\n
  1041. * APB1RSTR1 TIM6RST LL_APB1_GRP1_ForceReset\n
  1042. * APB1RSTR1 TIM7RST LL_APB1_GRP1_ForceReset\n
  1043. * APB1RSTR1 CRSRST LL_APB1_GRP1_ForceReset\n
  1044. * APB1RSTR1 SPI2RST LL_APB1_GRP1_ForceReset\n
  1045. * APB1RSTR1 SPI3RST LL_APB1_GRP1_ForceReset\n
  1046. * APB1RSTR1 USART2RST LL_APB1_GRP1_ForceReset\n
  1047. * APB1RSTR1 USART3RST LL_APB1_GRP1_ForceReset\n
  1048. * APB1RSTR1 UART4RST LL_APB1_GRP1_ForceReset\n
  1049. * APB1RSTR1 UART5RST LL_APB1_GRP1_ForceReset\n
  1050. * APB1RSTR1 I2C1RST LL_APB1_GRP1_ForceReset\n
  1051. * APB1RSTR1 I2C2RST LL_APB1_GRP1_ForceReset\n
  1052. * APB1RSTR1 USBRST LL_APB1_GRP1_ForceReset\n
  1053. * APB1RSTR1 FDCANRST LL_APB1_GRP1_ForceReset\n
  1054. * APB1RSTR1 PWRRST LL_APB1_GRP1_ForceReset\n
  1055. * APB1RSTR1 I2C3RST LL_APB1_GRP1_ForceReset\n
  1056. * APB1RSTR1 LPTIM1RST LL_APB1_GRP1_ForceReset
  1057. * @param Periphs This parameter can be a combination of the following values:
  1058. * @arg @ref LL_APB1_GRP1_PERIPH_TIM2
  1059. * @arg @ref LL_APB1_GRP1_PERIPH_TIM3
  1060. * @arg @ref LL_APB1_GRP1_PERIPH_TIM4
  1061. * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*)
  1062. * @arg @ref LL_APB1_GRP1_PERIPH_TIM6
  1063. * @arg @ref LL_APB1_GRP1_PERIPH_TIM7
  1064. * @arg @ref LL_APB1_GRP1_PERIPH_CRS
  1065. * @arg @ref LL_APB1_GRP1_PERIPH_SPI2
  1066. * @arg @ref LL_APB1_GRP1_PERIPH_SPI3
  1067. * @arg @ref LL_APB1_GRP1_PERIPH_USART2
  1068. * @arg @ref LL_APB1_GRP1_PERIPH_USART3
  1069. * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*)
  1070. * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*)
  1071. * @arg @ref LL_APB1_GRP1_PERIPH_I2C1
  1072. * @arg @ref LL_APB1_GRP1_PERIPH_I2C2
  1073. * @arg @ref LL_APB1_GRP1_PERIPH_USB
  1074. * @arg @ref LL_APB1_GRP1_PERIPH_FDCAN (*)
  1075. * @arg @ref LL_APB1_GRP1_PERIPH_PWR
  1076. * @arg @ref LL_APB1_GRP1_PERIPH_I2C3
  1077. * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1
  1078. *
  1079. * (*) value not defined in all devices.
  1080. * @retval None
  1081. */
  1082. __STATIC_INLINE void LL_APB1_GRP1_ForceReset(uint32_t Periphs)
  1083. {
  1084. SET_BIT(RCC->APB1RSTR1, Periphs);
  1085. }
  1086. /**
  1087. * @brief Force APB1 peripherals reset.
  1088. * @rmtoll APB1RSTR2 LPUART1RST LL_APB1_GRP2_ForceReset\n
  1089. * APB1RSTR2 I2C4RST LL_APB1_GRP2_ForceReset\n
  1090. * APB1RSTR2 UCPD1RST LL_APB1_GRP2_ForceReset
  1091. * @param Periphs This parameter can be a combination of the following values:
  1092. * @arg @ref LL_APB1_GRP2_PERIPH_LPUART1
  1093. * @arg @ref LL_APB1_GRP2_PERIPH_I2C4 (*)
  1094. * @arg @ref LL_APB1_GRP2_PERIPH_UCPD1
  1095. *
  1096. * (*) value not defined in all devices.
  1097. * @retval None
  1098. */
  1099. __STATIC_INLINE void LL_APB1_GRP2_ForceReset(uint32_t Periphs)
  1100. {
  1101. SET_BIT(RCC->APB1RSTR2, Periphs);
  1102. }
  1103. /**
  1104. * @brief Release APB1 peripherals reset.
  1105. * @rmtoll APB1RSTR1 TIM2RST LL_APB1_GRP1_ReleaseReset\n
  1106. * APB1RSTR1 TIM3RST LL_APB1_GRP1_ReleaseReset\n
  1107. * APB1RSTR1 TIM4RST LL_APB1_GRP1_ReleaseReset\n
  1108. * APB1RSTR1 TIM5RST LL_APB1_GRP1_ReleaseReset\n
  1109. * APB1RSTR1 TIM6RST LL_APB1_GRP1_ReleaseReset\n
  1110. * APB1RSTR1 TIM7RST LL_APB1_GRP1_ReleaseReset\n
  1111. * APB1RSTR1 CRSRST LL_APB1_GRP1_ReleaseReset\n
  1112. * APB1RSTR1 SPI2RST LL_APB1_GRP1_ReleaseReset\n
  1113. * APB1RSTR1 SPI3RST LL_APB1_GRP1_ReleaseReset\n
  1114. * APB1RSTR1 USART2RST LL_APB1_GRP1_ReleaseReset\n
  1115. * APB1RSTR1 USART3RST LL_APB1_GRP1_ReleaseReset\n
  1116. * APB1RSTR1 UART4RST LL_APB1_GRP1_ReleaseReset\n
  1117. * APB1RSTR1 UART5RST LL_APB1_GRP1_ReleaseReset\n
  1118. * APB1RSTR1 I2C1RST LL_APB1_GRP1_ReleaseReset\n
  1119. * APB1RSTR1 I2C2RST LL_APB1_GRP1_ReleaseReset\n
  1120. * APB1RSTR1 USBRST LL_APB1_GRP1_ReleaseReset\n
  1121. * APB1RSTR1 FDCANRST LL_APB1_GRP1_ReleaseReset\n
  1122. * APB1RSTR1 PWRRST LL_APB1_GRP1_ReleaseReset\n
  1123. * APB1RSTR1 I2C3RST LL_APB1_GRP1_ReleaseReset\n
  1124. * APB1RSTR1 LPTIM1RST LL_APB1_GRP1_ReleaseReset
  1125. * @param Periphs This parameter can be a combination of the following values:
  1126. * @arg @ref LL_APB1_GRP1_PERIPH_TIM2
  1127. * @arg @ref LL_APB1_GRP1_PERIPH_TIM3
  1128. * @arg @ref LL_APB1_GRP1_PERIPH_TIM4
  1129. * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*)
  1130. * @arg @ref LL_APB1_GRP1_PERIPH_TIM6
  1131. * @arg @ref LL_APB1_GRP1_PERIPH_TIM7
  1132. * @arg @ref LL_APB1_GRP1_PERIPH_CRS
  1133. * @arg @ref LL_APB1_GRP1_PERIPH_SPI2
  1134. * @arg @ref LL_APB1_GRP1_PERIPH_SPI3
  1135. * @arg @ref LL_APB1_GRP1_PERIPH_USART2
  1136. * @arg @ref LL_APB1_GRP1_PERIPH_USART3
  1137. * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*)
  1138. * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*)
  1139. * @arg @ref LL_APB1_GRP1_PERIPH_I2C1
  1140. * @arg @ref LL_APB1_GRP1_PERIPH_I2C2
  1141. * @arg @ref LL_APB1_GRP1_PERIPH_USB
  1142. * @arg @ref LL_APB1_GRP1_PERIPH_FDCAN (*)
  1143. * @arg @ref LL_APB1_GRP1_PERIPH_PWR
  1144. * @arg @ref LL_APB1_GRP1_PERIPH_I2C3
  1145. * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1
  1146. *
  1147. * (*) value not defined in all devices.
  1148. * @retval None
  1149. */
  1150. __STATIC_INLINE void LL_APB1_GRP1_ReleaseReset(uint32_t Periphs)
  1151. {
  1152. CLEAR_BIT(RCC->APB1RSTR1, Periphs);
  1153. }
  1154. /**
  1155. * @brief Release APB1 peripherals reset.
  1156. * @rmtoll APB1RSTR2 LPUART1RST LL_APB1_GRP2_ReleaseReset\n
  1157. * APB1RSTR2 I2C4RST LL_APB1_GRP2_ReleaseReset\n
  1158. * APB1RSTR2 UCPD1RST LL_APB1_GRP2_ReleaseReset
  1159. * @param Periphs This parameter can be a combination of the following values:
  1160. * @arg @ref LL_APB1_GRP2_PERIPH_LPUART1
  1161. * @arg @ref LL_APB1_GRP2_PERIPH_I2C4 (*)
  1162. * @arg @ref LL_APB1_GRP2_PERIPH_UCPD1
  1163. *
  1164. * (*) value not defined in all devices.
  1165. * @retval None
  1166. */
  1167. __STATIC_INLINE void LL_APB1_GRP2_ReleaseReset(uint32_t Periphs)
  1168. {
  1169. CLEAR_BIT(RCC->APB1RSTR2, Periphs);
  1170. }
  1171. /**
  1172. * @brief Enable APB1 peripheral clocks in Sleep and Stop modes
  1173. * @rmtoll APB1SMENR1 TIM2SMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1174. * APB1SMENR1 TIM3SMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1175. * APB1SMENR1 TIM4SMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1176. * APB1SMENR1 TIM5SMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1177. * APB1SMENR1 TIM6SMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1178. * APB1SMENR1 TIM7SMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1179. * APB1SMENR1 CRSSMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1180. * APB1SMENR1 RTCAPBSMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1181. * APB1SMENR1 WWDGSMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1182. * APB1SMENR1 SPI2SMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1183. * APB1SMENR1 SPI3SMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1184. * APB1SMENR1 USART2SMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1185. * APB1SMENR1 USART3SMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1186. * APB1SMENR1 UART4SMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1187. * APB1SMENR1 UART5SMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1188. * APB1SMENR1 I2C1SMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1189. * APB1SMENR1 I2C2SMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1190. * APB1SMENR1 USBSMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1191. * APB1SMENR1 FDCANSMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1192. * APB1SMENR1 PWRSMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1193. * APB1SMENR1 I2C3SMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1194. * APB1SMENR1 LPTIM1SMEN LL_APB1_GRP1_EnableClockStopSleep
  1195. * @param Periphs This parameter can be a combination of the following values:
  1196. * @arg @ref LL_APB1_GRP1_PERIPH_TIM2
  1197. * @arg @ref LL_APB1_GRP1_PERIPH_TIM3
  1198. * @arg @ref LL_APB1_GRP1_PERIPH_TIM4
  1199. * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*)
  1200. * @arg @ref LL_APB1_GRP1_PERIPH_TIM6
  1201. * @arg @ref LL_APB1_GRP1_PERIPH_TIM7
  1202. * @arg @ref LL_APB1_GRP1_PERIPH_CRS
  1203. * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB
  1204. * @arg @ref LL_APB1_GRP1_PERIPH_WWDG
  1205. * @arg @ref LL_APB1_GRP1_PERIPH_SPI2
  1206. * @arg @ref LL_APB1_GRP1_PERIPH_SPI3
  1207. * @arg @ref LL_APB1_GRP1_PERIPH_USART2
  1208. * @arg @ref LL_APB1_GRP1_PERIPH_USART3
  1209. * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*)
  1210. * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*)
  1211. * @arg @ref LL_APB1_GRP1_PERIPH_I2C1
  1212. * @arg @ref LL_APB1_GRP1_PERIPH_I2C2
  1213. * @arg @ref LL_APB1_GRP1_PERIPH_USB
  1214. * @arg @ref LL_APB1_GRP1_PERIPH_FDCAN (*)
  1215. * @arg @ref LL_APB1_GRP1_PERIPH_PWR
  1216. * @arg @ref LL_APB1_GRP1_PERIPH_I2C3
  1217. * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1
  1218. *
  1219. * (*) value not defined in all devices.
  1220. * @retval None
  1221. */
  1222. __STATIC_INLINE void LL_APB1_GRP1_EnableClockStopSleep(uint32_t Periphs)
  1223. {
  1224. __IO uint32_t tmpreg;
  1225. SET_BIT(RCC->APB1SMENR1, Periphs);
  1226. /* Delay after an RCC peripheral clock enabling */
  1227. tmpreg = READ_BIT(RCC->APB1SMENR1, Periphs);
  1228. (void)tmpreg;
  1229. }
  1230. /**
  1231. * @brief Enable APB1 peripheral clocks in Sleep and Stop modes
  1232. * @rmtoll APB1SMENR2 LPUART1SMEN LL_APB1_GRP2_EnableClockStopSleep\n
  1233. * APB1SMENR2 I2C4SMEN LL_APB1_GRP2_EnableClockStopSleep\n
  1234. * APB1SMENR2 UCPD1SMEN LL_APB1_GRP2_EnableClockStopSleep
  1235. * @param Periphs This parameter can be a combination of the following values:
  1236. * @arg @ref LL_APB1_GRP2_PERIPH_LPUART1
  1237. * @arg @ref LL_APB1_GRP2_PERIPH_I2C4 (*)
  1238. * @arg @ref LL_APB1_GRP2_PERIPH_UCPD1 (*)
  1239. *
  1240. * (*) value not defined in all devices.
  1241. * @retval None
  1242. */
  1243. __STATIC_INLINE void LL_APB1_GRP2_EnableClockStopSleep(uint32_t Periphs)
  1244. {
  1245. __IO uint32_t tmpreg;
  1246. SET_BIT(RCC->APB1SMENR2, Periphs);
  1247. /* Delay after an RCC peripheral clock enabling */
  1248. tmpreg = READ_BIT(RCC->APB1SMENR2, Periphs);
  1249. (void)tmpreg;
  1250. }
  1251. /**
  1252. * @brief Disable APB1 peripheral clocks in Sleep and Stop modes
  1253. * @rmtoll APB1SMENR1 TIM2SMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1254. * APB1SMENR1 TIM3SMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1255. * APB1SMENR1 TIM4SMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1256. * APB1SMENR1 TIM5SMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1257. * APB1SMENR1 TIM6SMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1258. * APB1SMENR1 TIM7SMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1259. * APB1SMENR1 CRSSMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1260. * APB1SMENR1 RTCAPBSMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1261. * APB1SMENR1 WWDGSMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1262. * APB1SMENR1 SPI2SMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1263. * APB1SMENR1 SPI3SMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1264. * APB1SMENR1 USART2SMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1265. * APB1SMENR1 USART3SMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1266. * APB1SMENR1 UART4SMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1267. * APB1SMENR1 UART5SMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1268. * APB1SMENR1 I2C1SMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1269. * APB1SMENR1 I2C2SMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1270. * APB1SMENR1 USBSMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1271. * APB1SMENR1 FDCANSMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1272. * APB1SMENR1 PWRSMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1273. * APB1SMENR1 I2C3SMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1274. * APB1SMENR1 LPTIM1SMEN LL_APB1_GRP1_DisableClockStopSleep
  1275. * @param Periphs This parameter can be a combination of the following values:
  1276. * @arg @ref LL_APB1_GRP1_PERIPH_TIM2
  1277. * @arg @ref LL_APB1_GRP1_PERIPH_TIM3
  1278. * @arg @ref LL_APB1_GRP1_PERIPH_TIM4
  1279. * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*)
  1280. * @arg @ref LL_APB1_GRP1_PERIPH_TIM6
  1281. * @arg @ref LL_APB1_GRP1_PERIPH_TIM7
  1282. * @arg @ref LL_APB1_GRP1_PERIPH_CRS
  1283. * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB
  1284. * @arg @ref LL_APB1_GRP1_PERIPH_WWDG
  1285. * @arg @ref LL_APB1_GRP1_PERIPH_SPI2
  1286. * @arg @ref LL_APB1_GRP1_PERIPH_SPI3
  1287. * @arg @ref LL_APB1_GRP1_PERIPH_USART2
  1288. * @arg @ref LL_APB1_GRP1_PERIPH_USART3
  1289. * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*)
  1290. * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*)
  1291. * @arg @ref LL_APB1_GRP1_PERIPH_I2C1
  1292. * @arg @ref LL_APB1_GRP1_PERIPH_I2C2
  1293. * @arg @ref LL_APB1_GRP1_PERIPH_USB
  1294. * @arg @ref LL_APB1_GRP1_PERIPH_FDCAN (*)
  1295. * @arg @ref LL_APB1_GRP1_PERIPH_PWR
  1296. * @arg @ref LL_APB1_GRP1_PERIPH_I2C3
  1297. * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1
  1298. *
  1299. * (*) value not defined in all devices.
  1300. * @retval None
  1301. */
  1302. __STATIC_INLINE void LL_APB1_GRP1_DisableClockStopSleep(uint32_t Periphs)
  1303. {
  1304. CLEAR_BIT(RCC->APB1SMENR1, Periphs);
  1305. }
  1306. /**
  1307. * @brief Disable APB1 peripheral clocks in Sleep and Stop modes
  1308. * @rmtoll APB1SMENR2 LPUART1SMEN LL_APB1_GRP2_DisableClockStopSleep\n
  1309. * APB1SMENR2 I2C4SMEN LL_APB1_GRP2_DisableClockStopSleep\n
  1310. * APB1SMENR2 UCPD1SMEN LL_APB1_GRP2_DisableClockStopSleep
  1311. * @param Periphs This parameter can be a combination of the following values:
  1312. * @arg @ref LL_APB1_GRP2_PERIPH_LPUART1
  1313. * @arg @ref LL_APB1_GRP2_PERIPH_I2C4 (*)
  1314. * @arg @ref LL_APB1_GRP2_PERIPH_UCPD1 (*)
  1315. *
  1316. * (*) value not defined in all devices.
  1317. * @retval None
  1318. */
  1319. __STATIC_INLINE void LL_APB1_GRP2_DisableClockStopSleep(uint32_t Periphs)
  1320. {
  1321. CLEAR_BIT(RCC->APB1SMENR2, Periphs);
  1322. }
  1323. /**
  1324. * @}
  1325. */
  1326. /** @defgroup BUS_LL_EF_APB2 APB2
  1327. * @{
  1328. */
  1329. /**
  1330. * @brief Enable APB2 peripherals clock.
  1331. * @rmtoll APB2ENR SYSCFGEN LL_APB2_GRP1_EnableClock\n
  1332. * APB2ENR TIM1EN LL_APB2_GRP1_EnableClock\n
  1333. * APB2ENR SPI1EN LL_APB2_GRP1_EnableClock\n
  1334. * APB2ENR TIM8EN LL_APB2_GRP1_EnableClock\n
  1335. * APB2ENR USART1EN LL_APB2_GRP1_EnableClock\n
  1336. * APB2ENR SPI4EN LL_APB2_GRP1_EnableClock\n
  1337. * APB2ENR TIM15EN LL_APB2_GRP1_EnableClock\n
  1338. * APB2ENR TIM16EN LL_APB2_GRP1_EnableClock\n
  1339. * APB2ENR TIM17EN LL_APB2_GRP1_EnableClock\n
  1340. * APB2ENR TIM20EN LL_APB2_GRP1_EnableClock\n
  1341. * APB2ENR SAI1EN LL_APB2_GRP1_EnableClock\n
  1342. * APB2ENR HRTIM1EN LL_APB2_GRP1_EnableClock
  1343. * @param Periphs This parameter can be a combination of the following values:
  1344. * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG
  1345. * @arg @ref LL_APB2_GRP1_PERIPH_TIM1
  1346. * @arg @ref LL_APB2_GRP1_PERIPH_SPI1
  1347. * @arg @ref LL_APB2_GRP1_PERIPH_TIM8
  1348. * @arg @ref LL_APB2_GRP1_PERIPH_USART1
  1349. * @arg @ref LL_APB2_GRP1_PERIPH_SPI4 (*)
  1350. * @arg @ref LL_APB2_GRP1_PERIPH_TIM15
  1351. * @arg @ref LL_APB2_GRP1_PERIPH_TIM16
  1352. * @arg @ref LL_APB2_GRP1_PERIPH_TIM17
  1353. * @arg @ref LL_APB2_GRP1_PERIPH_TIM20 (*)
  1354. * @arg @ref LL_APB2_GRP1_PERIPH_SAI1
  1355. * @arg @ref LL_APB2_GRP1_PERIPH_HRTIM1 (*)
  1356. *
  1357. * (*) value not defined in all devices.
  1358. * @retval None
  1359. */
  1360. __STATIC_INLINE void LL_APB2_GRP1_EnableClock(uint32_t Periphs)
  1361. {
  1362. __IO uint32_t tmpreg;
  1363. SET_BIT(RCC->APB2ENR, Periphs);
  1364. /* Delay after an RCC peripheral clock enabling */
  1365. tmpreg = READ_BIT(RCC->APB2ENR, Periphs);
  1366. (void)tmpreg;
  1367. }
  1368. /**
  1369. * @brief Check if APB2 peripheral clock is enabled or not
  1370. * @rmtoll APB2ENR SYSCFGEN LL_APB2_GRP1_IsEnabledClock\n
  1371. * APB2ENR TIM1EN LL_APB2_GRP1_IsEnabledClock\n
  1372. * APB2ENR SPI1EN LL_APB2_GRP1_IsEnabledClock\n
  1373. * APB2ENR TIM8EN LL_APB2_GRP1_IsEnabledClock\n
  1374. * APB2ENR USART1EN LL_APB2_GRP1_IsEnabledClock\n
  1375. * APB2ENR SPI4EN LL_APB2_GRP1_IsEnabledClock\n
  1376. * APB2ENR TIM15EN LL_APB2_GRP1_IsEnabledClock\n
  1377. * APB2ENR TIM16EN LL_APB2_GRP1_IsEnabledClock\n
  1378. * APB2ENR TIM17EN LL_APB2_GRP1_IsEnabledClock\n
  1379. * APB2ENR TIM20EN LL_APB2_GRP1_IsEnabledClock\n
  1380. * APB2ENR SAI1EN LL_APB2_GRP1_IsEnabledClock\n
  1381. * APB2ENR HRTIM1EN LL_APB2_GRP1_IsEnabledClock
  1382. * @param Periphs This parameter can be a combination of the following values:
  1383. * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG
  1384. * @arg @ref LL_APB2_GRP1_PERIPH_TIM1
  1385. * @arg @ref LL_APB2_GRP1_PERIPH_SPI1
  1386. * @arg @ref LL_APB2_GRP1_PERIPH_TIM8
  1387. * @arg @ref LL_APB2_GRP1_PERIPH_USART1
  1388. * @arg @ref LL_APB2_GRP1_PERIPH_SPI4 (*)
  1389. * @arg @ref LL_APB2_GRP1_PERIPH_TIM15
  1390. * @arg @ref LL_APB2_GRP1_PERIPH_TIM16
  1391. * @arg @ref LL_APB2_GRP1_PERIPH_TIM17
  1392. * @arg @ref LL_APB2_GRP1_PERIPH_TIM20 (*)
  1393. * @arg @ref LL_APB2_GRP1_PERIPH_SAI1
  1394. * @arg @ref LL_APB2_GRP1_PERIPH_HRTIM1 (*)
  1395. *
  1396. * (*) value not defined in all devices.
  1397. * @retval State of Periphs (1 or 0).
  1398. */
  1399. __STATIC_INLINE uint32_t LL_APB2_GRP1_IsEnabledClock(uint32_t Periphs)
  1400. {
  1401. return ((READ_BIT(RCC->APB2ENR, Periphs) == Periphs) ? 1UL : 0UL);
  1402. }
  1403. /**
  1404. * @brief Disable APB2 peripherals clock.
  1405. * @rmtoll APB2ENR SYSCFGEN LL_APB2_GRP1_DisableClock\n
  1406. * APB2ENR TIM1EN LL_APB2_GRP1_DisableClock\n
  1407. * APB2ENR SPI1EN LL_APB2_GRP1_DisableClock\n
  1408. * APB2ENR TIM8EN LL_APB2_GRP1_DisableClock\n
  1409. * APB2ENR USART1EN LL_APB2_GRP1_DisableClock\n
  1410. * APB2ENR SPI4EN LL_APB2_GRP1_DisableClock\n
  1411. * APB2ENR TIM15EN LL_APB2_GRP1_DisableClock\n
  1412. * APB2ENR TIM16EN LL_APB2_GRP1_DisableClock\n
  1413. * APB2ENR TIM17EN LL_APB2_GRP1_DisableClock\n
  1414. * APB2ENR TIM20EN LL_APB2_GRP1_DisableClock\n
  1415. * APB2ENR SAI1EN LL_APB2_GRP1_DisableClock\n
  1416. * APB2ENR HRTIM1EN LL_APB2_GRP1_DisableClock
  1417. * @param Periphs This parameter can be a combination of the following values:
  1418. * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG
  1419. * @arg @ref LL_APB2_GRP1_PERIPH_TIM1
  1420. * @arg @ref LL_APB2_GRP1_PERIPH_SPI1
  1421. * @arg @ref LL_APB2_GRP1_PERIPH_TIM8
  1422. * @arg @ref LL_APB2_GRP1_PERIPH_USART1
  1423. * @arg @ref LL_APB2_GRP1_PERIPH_SPI4 (*)
  1424. * @arg @ref LL_APB2_GRP1_PERIPH_TIM15
  1425. * @arg @ref LL_APB2_GRP1_PERIPH_TIM16
  1426. * @arg @ref LL_APB2_GRP1_PERIPH_TIM17
  1427. * @arg @ref LL_APB2_GRP1_PERIPH_TIM20 (*)
  1428. * @arg @ref LL_APB2_GRP1_PERIPH_SAI1
  1429. * @arg @ref LL_APB2_GRP1_PERIPH_HRTIM1 (*)
  1430. *
  1431. * (*) value not defined in all devices.
  1432. * @retval None
  1433. */
  1434. __STATIC_INLINE void LL_APB2_GRP1_DisableClock(uint32_t Periphs)
  1435. {
  1436. CLEAR_BIT(RCC->APB2ENR, Periphs);
  1437. }
  1438. /**
  1439. * @brief Force APB2 peripherals reset.
  1440. * @rmtoll APB2RSTR SYSCFGRST LL_APB2_GRP1_ForceReset\n
  1441. * APB2RSTR TIM1RST LL_APB2_GRP1_ForceReset\n
  1442. * APB2RSTR SPI1RST LL_APB2_GRP1_ForceReset\n
  1443. * APB2RSTR TIM8RST LL_APB2_GRP1_ForceReset\n
  1444. * APB2RSTR USART1RST LL_APB2_GRP1_ForceReset\n
  1445. * APB2RSTR SPI4RST LL_APB2_GRP1_ForceReset\n
  1446. * APB2RSTR TIM15RST LL_APB2_GRP1_ForceReset\n
  1447. * APB2RSTR TIM16RST LL_APB2_GRP1_ForceReset\n
  1448. * APB2RSTR TIM17RST LL_APB2_GRP1_ForceReset\n
  1449. * APB2RSTR TIM20RST LL_APB2_GRP1_ForceReset\n
  1450. * APB2RSTR SAI1RST LL_APB2_GRP1_ForceReset\n
  1451. * APB2RSTR HRTIM1RST LL_APB2_GRP1_ForceReset
  1452. * @param Periphs This parameter can be a combination of the following values:
  1453. * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG
  1454. * @arg @ref LL_APB2_GRP1_PERIPH_TIM1
  1455. * @arg @ref LL_APB2_GRP1_PERIPH_SPI1
  1456. * @arg @ref LL_APB2_GRP1_PERIPH_TIM8
  1457. * @arg @ref LL_APB2_GRP1_PERIPH_USART1
  1458. * @arg @ref LL_APB2_GRP1_PERIPH_SPI4 (*)
  1459. * @arg @ref LL_APB2_GRP1_PERIPH_TIM15
  1460. * @arg @ref LL_APB2_GRP1_PERIPH_TIM16
  1461. * @arg @ref LL_APB2_GRP1_PERIPH_TIM17
  1462. * @arg @ref LL_APB2_GRP1_PERIPH_TIM20 (*)
  1463. * @arg @ref LL_APB2_GRP1_PERIPH_SAI1
  1464. * @arg @ref LL_APB2_GRP1_PERIPH_HRTIM1 (*)
  1465. *
  1466. * (*) value not defined in all devices.
  1467. * @retval None
  1468. */
  1469. __STATIC_INLINE void LL_APB2_GRP1_ForceReset(uint32_t Periphs)
  1470. {
  1471. SET_BIT(RCC->APB2RSTR, Periphs);
  1472. }
  1473. /**
  1474. * @brief Release APB2 peripherals reset.
  1475. * @rmtoll APB2RSTR SYSCFGRST LL_APB2_GRP1_ForceReset\n
  1476. * APB2RSTR TIM1RST LL_APB2_GRP1_ForceReset\n
  1477. * APB2RSTR SPI1RST LL_APB2_GRP1_ForceReset\n
  1478. * APB2RSTR TIM8RST LL_APB2_GRP1_ForceReset\n
  1479. * APB2RSTR USART1RST LL_APB2_GRP1_ForceReset\n
  1480. * APB2RSTR SPI4RST LL_APB2_GRP1_ForceReset\n
  1481. * APB2RSTR TIM15RST LL_APB2_GRP1_ForceReset\n
  1482. * APB2RSTR TIM16RST LL_APB2_GRP1_ForceReset\n
  1483. * APB2RSTR TIM17RST LL_APB2_GRP1_ForceReset\n
  1484. * APB2RSTR TIM20RST LL_APB2_GRP1_ForceReset\n
  1485. * APB2RSTR SAI1RST LL_APB2_GRP1_ForceReset\n
  1486. * APB2RSTR HRTIM1RST LL_APB2_GRP1_ForceReset
  1487. * @param Periphs This parameter can be a combination of the following values:
  1488. * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG
  1489. * @arg @ref LL_APB2_GRP1_PERIPH_TIM1
  1490. * @arg @ref LL_APB2_GRP1_PERIPH_SPI1
  1491. * @arg @ref LL_APB2_GRP1_PERIPH_TIM8
  1492. * @arg @ref LL_APB2_GRP1_PERIPH_USART1
  1493. * @arg @ref LL_APB2_GRP1_PERIPH_SPI4 (*)
  1494. * @arg @ref LL_APB2_GRP1_PERIPH_TIM15
  1495. * @arg @ref LL_APB2_GRP1_PERIPH_TIM16
  1496. * @arg @ref LL_APB2_GRP1_PERIPH_TIM17
  1497. * @arg @ref LL_APB2_GRP1_PERIPH_TIM20 (*)
  1498. * @arg @ref LL_APB2_GRP1_PERIPH_SAI1
  1499. * @arg @ref LL_APB2_GRP1_PERIPH_HRTIM1 (*)
  1500. *
  1501. * (*) value not defined in all devices.
  1502. * @retval None
  1503. */
  1504. __STATIC_INLINE void LL_APB2_GRP1_ReleaseReset(uint32_t Periphs)
  1505. {
  1506. CLEAR_BIT(RCC->APB2RSTR, Periphs);
  1507. }
  1508. /**
  1509. * @brief Enable APB2 peripheral clocks in Sleep and Stop modes
  1510. * @rmtoll APB2SMENR SYSCFGSMEN LL_APB2_GRP1_EnableClockStopSleep\n
  1511. * APB2SMENR TIM1SMEN LL_APB2_GRP1_EnableClockStopSleep\n
  1512. * APB2SMENR SPI1SMEN LL_APB2_GRP1_EnableClockStopSleep\n
  1513. * APB2SMENR TIM8SMEN LL_APB2_GRP1_EnableClockStopSleep\n
  1514. * APB2SMENR USART1SMEN LL_APB2_GRP1_EnableClockStopSleep\n
  1515. * APB2SMENR SPI4SMEN LL_APB2_GRP1_EnableClockStopSleep\n
  1516. * APB2SMENR TIM15SMEN LL_APB2_GRP1_EnableClockStopSleep\n
  1517. * APB2SMENR TIM16SMEN LL_APB2_GRP1_EnableClockStopSleep\n
  1518. * APB2SMENR TIM17SMEN LL_APB2_GRP1_EnableClockStopSleep\n
  1519. * APB2SMENR TIM20SMEN LL_APB2_GRP1_EnableClockStopSleep\n
  1520. * APB2SMENR SAI1SMEN LL_APB2_GRP1_EnableClockStopSleep\n
  1521. * APB2SMENR HRTIM1SMEN LL_APB2_GRP1_EnableClockStopSleep
  1522. * @param Periphs This parameter can be a combination of the following values:
  1523. * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG
  1524. * @arg @ref LL_APB2_GRP1_PERIPH_TIM1
  1525. * @arg @ref LL_APB2_GRP1_PERIPH_SPI1
  1526. * @arg @ref LL_APB2_GRP1_PERIPH_TIM8
  1527. * @arg @ref LL_APB2_GRP1_PERIPH_USART1
  1528. * @arg @ref LL_APB2_GRP1_PERIPH_SPI4 (*)
  1529. * @arg @ref LL_APB2_GRP1_PERIPH_TIM15
  1530. * @arg @ref LL_APB2_GRP1_PERIPH_TIM16
  1531. * @arg @ref LL_APB2_GRP1_PERIPH_TIM17
  1532. * @arg @ref LL_APB2_GRP1_PERIPH_TIM20 (*)
  1533. * @arg @ref LL_APB2_GRP1_PERIPH_SAI1
  1534. * @arg @ref LL_APB2_GRP1_PERIPH_HRTIM1 (*)
  1535. *
  1536. * (*) value not defined in all devices.
  1537. * @retval None
  1538. */
  1539. __STATIC_INLINE void LL_APB2_GRP1_EnableClockStopSleep(uint32_t Periphs)
  1540. {
  1541. __IO uint32_t tmpreg;
  1542. SET_BIT(RCC->APB2SMENR, Periphs);
  1543. /* Delay after an RCC peripheral clock enabling */
  1544. tmpreg = READ_BIT(RCC->APB2SMENR, Periphs);
  1545. (void)tmpreg;
  1546. }
  1547. /**
  1548. * @brief Disable APB2 peripheral clocks in Sleep and Stop modes
  1549. * @rmtoll APB2SMENR SYSCFGSMEN LL_APB2_GRP1_DisableClockStopSleep\n
  1550. * APB2SMENR TIM1SMEN LL_APB2_GRP1_DisableClockStopSleep\n
  1551. * APB2SMENR SPI1SMEN LL_APB2_GRP1_DisableClockStopSleep\n
  1552. * APB2SMENR TIM8SMEN LL_APB2_GRP1_DisableClockStopSleep\n
  1553. * APB2SMENR USART1SMEN LL_APB2_GRP1_DisableClockStopSleep\n
  1554. * APB2SMENR SPI4SMEN LL_APB2_GRP1_DisableClockStopSleep\n
  1555. * APB2SMENR TIM15SMEN LL_APB2_GRP1_DisableClockStopSleep\n
  1556. * APB2SMENR TIM16SMEN LL_APB2_GRP1_DisableClockStopSleep\n
  1557. * APB2SMENR TIM17SMEN LL_APB2_GRP1_DisableClockStopSleep\n
  1558. * APB2SMENR TIM20SMEN LL_APB2_GRP1_DisableClockStopSleep\n
  1559. * APB2SMENR SAI1SMEN LL_APB2_GRP1_DisableClockStopSleep\n
  1560. * APB2SMENR HRTIM1SMEN LL_APB2_GRP1_DisableClockStopSleep
  1561. * @param Periphs This parameter can be a combination of the following values:
  1562. * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG
  1563. * @arg @ref LL_APB2_GRP1_PERIPH_TIM1
  1564. * @arg @ref LL_APB2_GRP1_PERIPH_SPI1
  1565. * @arg @ref LL_APB2_GRP1_PERIPH_TIM8
  1566. * @arg @ref LL_APB2_GRP1_PERIPH_USART1
  1567. * @arg @ref LL_APB2_GRP1_PERIPH_SPI4 (*)
  1568. * @arg @ref LL_APB2_GRP1_PERIPH_TIM15
  1569. * @arg @ref LL_APB2_GRP1_PERIPH_TIM16
  1570. * @arg @ref LL_APB2_GRP1_PERIPH_TIM17
  1571. * @arg @ref LL_APB2_GRP1_PERIPH_TIM20 (*)
  1572. * @arg @ref LL_APB2_GRP1_PERIPH_SAI1
  1573. * @arg @ref LL_APB2_GRP1_PERIPH_HRTIM1 (*)
  1574. *
  1575. * (*) value not defined in all devices.
  1576. * @retval None
  1577. */
  1578. __STATIC_INLINE void LL_APB2_GRP1_DisableClockStopSleep(uint32_t Periphs)
  1579. {
  1580. CLEAR_BIT(RCC->APB2SMENR, Periphs);
  1581. }
  1582. /**
  1583. * @}
  1584. */
  1585. /**
  1586. * @}
  1587. */
  1588. /**
  1589. * @}
  1590. */
  1591. #endif /* defined(RCC) */
  1592. /**
  1593. * @}
  1594. */
  1595. #ifdef __cplusplus
  1596. }
  1597. #endif
  1598. #endif /* STM32G4xx_LL_BUS_H */