stm32l4xx_ll_bus.h 86 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954
  1. /**
  2. ******************************************************************************
  3. * @file stm32l4xx_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) 2017 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 STM32L4xx_LL_BUS_H
  33. #define STM32L4xx_LL_BUS_H
  34. #ifdef __cplusplus
  35. extern "C" {
  36. #endif
  37. /* Includes ------------------------------------------------------------------*/
  38. #include "stm32l4xx.h"
  39. /** @addtogroup STM32L4xx_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. #if defined(DMAMUX1)
  62. #define LL_AHB1_GRP1_PERIPH_DMAMUX1 RCC_AHB1ENR_DMAMUX1EN
  63. #endif /* DMAMUX1 */
  64. #define LL_AHB1_GRP1_PERIPH_FLASH RCC_AHB1ENR_FLASHEN
  65. #define LL_AHB1_GRP1_PERIPH_CRC RCC_AHB1ENR_CRCEN
  66. #define LL_AHB1_GRP1_PERIPH_TSC RCC_AHB1ENR_TSCEN
  67. #if defined(DMA2D)
  68. #define LL_AHB1_GRP1_PERIPH_DMA2D RCC_AHB1ENR_DMA2DEN
  69. #endif /* DMA2D */
  70. #if defined(GFXMMU)
  71. #define LL_AHB1_GRP1_PERIPH_GFXMMU RCC_AHB1ENR_GFXMMUEN
  72. #endif /* GFXMMU */
  73. #define LL_AHB1_GRP1_PERIPH_SRAM1 RCC_AHB1SMENR_SRAM1SMEN
  74. /**
  75. * @}
  76. */
  77. /** @defgroup BUS_LL_EC_AHB2_GRP1_PERIPH AHB2 GRP1 PERIPH
  78. * @{
  79. */
  80. #define LL_AHB2_GRP1_PERIPH_ALL 0xFFFFFFFFU
  81. #define LL_AHB2_GRP1_PERIPH_GPIOA RCC_AHB2ENR_GPIOAEN
  82. #define LL_AHB2_GRP1_PERIPH_GPIOB RCC_AHB2ENR_GPIOBEN
  83. #define LL_AHB2_GRP1_PERIPH_GPIOC RCC_AHB2ENR_GPIOCEN
  84. #if defined(GPIOD)
  85. #define LL_AHB2_GRP1_PERIPH_GPIOD RCC_AHB2ENR_GPIODEN
  86. #endif /*GPIOD*/
  87. #if defined(GPIOE)
  88. #define LL_AHB2_GRP1_PERIPH_GPIOE RCC_AHB2ENR_GPIOEEN
  89. #endif /*GPIOE*/
  90. #if defined(GPIOF)
  91. #define LL_AHB2_GRP1_PERIPH_GPIOF RCC_AHB2ENR_GPIOFEN
  92. #endif /* GPIOF */
  93. #if defined(GPIOG)
  94. #define LL_AHB2_GRP1_PERIPH_GPIOG RCC_AHB2ENR_GPIOGEN
  95. #endif /* GPIOG */
  96. #define LL_AHB2_GRP1_PERIPH_GPIOH RCC_AHB2ENR_GPIOHEN
  97. #if defined(GPIOI)
  98. #define LL_AHB2_GRP1_PERIPH_GPIOI RCC_AHB2ENR_GPIOIEN
  99. #endif /* GPIOI */
  100. #if defined(USB_OTG_FS)
  101. #define LL_AHB2_GRP1_PERIPH_OTGFS RCC_AHB2ENR_OTGFSEN
  102. #endif /* USB_OTG_FS */
  103. #define LL_AHB2_GRP1_PERIPH_ADC RCC_AHB2ENR_ADCEN
  104. #if defined(DCMI)
  105. #define LL_AHB2_GRP1_PERIPH_DCMI RCC_AHB2ENR_DCMIEN
  106. #endif /* DCMI */
  107. #if defined(AES)
  108. #define LL_AHB2_GRP1_PERIPH_AES RCC_AHB2ENR_AESEN
  109. #endif /* AES */
  110. #if defined(HASH)
  111. #define LL_AHB2_GRP1_PERIPH_HASH RCC_AHB2ENR_HASHEN
  112. #endif /* HASH */
  113. #define LL_AHB2_GRP1_PERIPH_RNG RCC_AHB2ENR_RNGEN
  114. #if defined(OCTOSPIM)
  115. #define LL_AHB2_GRP1_PERIPH_OSPIM RCC_AHB2ENR_OSPIMEN
  116. #endif /* OCTOSPIM */
  117. #if defined(PKA)
  118. #define LL_AHB2_GRP1_PERIPH_PKA RCC_AHB2ENR_PKAEN
  119. #endif /* PKA */
  120. #if defined(SDMMC1) && defined(RCC_AHB2ENR_SDMMC1EN)
  121. #define LL_AHB2_GRP1_PERIPH_SDMMC1 RCC_AHB2ENR_SDMMC1EN
  122. #endif /* SDMMC1 && RCC_AHB2ENR_SDMMC1EN */
  123. #define LL_AHB2_GRP1_PERIPH_SRAM2 RCC_AHB2SMENR_SRAM2SMEN
  124. #if defined(SRAM3_BASE)
  125. #define LL_AHB2_GRP1_PERIPH_SRAM3 RCC_AHB2SMENR_SRAM3SMEN
  126. #endif /* SRAM3_BASE */
  127. /**
  128. * @}
  129. */
  130. /** @defgroup BUS_LL_EC_AHB3_GRP1_PERIPH AHB3 GRP1 PERIPH
  131. * @{
  132. */
  133. #define LL_AHB3_GRP1_PERIPH_ALL 0xFFFFFFFFU
  134. #if defined(FMC_Bank1_R)
  135. #define LL_AHB3_GRP1_PERIPH_FMC RCC_AHB3ENR_FMCEN
  136. #endif /* FMC_Bank1_R */
  137. #if defined(QUADSPI)
  138. #define LL_AHB3_GRP1_PERIPH_QSPI RCC_AHB3ENR_QSPIEN
  139. #endif /* QUADSPI */
  140. #if defined(OCTOSPI1)
  141. #define LL_AHB3_GRP1_PERIPH_OSPI1 RCC_AHB3ENR_OSPI1EN
  142. #endif /* OCTOSPI1 */
  143. #if defined(OCTOSPI2)
  144. #define LL_AHB3_GRP1_PERIPH_OSPI2 RCC_AHB3ENR_OSPI2EN
  145. #endif /* OCTOSPI2 */
  146. /**
  147. * @}
  148. */
  149. /** @defgroup BUS_LL_EC_APB1_GRP1_PERIPH APB1 GRP1 PERIPH
  150. * @{
  151. */
  152. #define LL_APB1_GRP1_PERIPH_ALL 0xFFFFFFFFU
  153. #define LL_APB1_GRP1_PERIPH_TIM2 RCC_APB1ENR1_TIM2EN
  154. #if defined(TIM3)
  155. #define LL_APB1_GRP1_PERIPH_TIM3 RCC_APB1ENR1_TIM3EN
  156. #endif /* TIM3 */
  157. #if defined(TIM4)
  158. #define LL_APB1_GRP1_PERIPH_TIM4 RCC_APB1ENR1_TIM4EN
  159. #endif /* TIM4 */
  160. #if defined(TIM5)
  161. #define LL_APB1_GRP1_PERIPH_TIM5 RCC_APB1ENR1_TIM5EN
  162. #endif /* TIM5 */
  163. #define LL_APB1_GRP1_PERIPH_TIM6 RCC_APB1ENR1_TIM6EN
  164. #define LL_APB1_GRP1_PERIPH_TIM7 RCC_APB1ENR1_TIM7EN
  165. #if defined(LCD)
  166. #define LL_APB1_GRP1_PERIPH_LCD RCC_APB1ENR1_LCDEN
  167. #endif /* LCD */
  168. #if defined(RCC_APB1ENR1_RTCAPBEN)
  169. #define LL_APB1_GRP1_PERIPH_RTCAPB RCC_APB1ENR1_RTCAPBEN
  170. #endif /* RCC_APB1ENR1_RTCAPBEN */
  171. #define LL_APB1_GRP1_PERIPH_WWDG RCC_APB1ENR1_WWDGEN
  172. #if defined(SPI2)
  173. #define LL_APB1_GRP1_PERIPH_SPI2 RCC_APB1ENR1_SPI2EN
  174. #endif /* SPI2 */
  175. #define LL_APB1_GRP1_PERIPH_SPI3 RCC_APB1ENR1_SPI3EN
  176. #define LL_APB1_GRP1_PERIPH_USART2 RCC_APB1ENR1_USART2EN
  177. #if defined(USART3)
  178. #define LL_APB1_GRP1_PERIPH_USART3 RCC_APB1ENR1_USART3EN
  179. #endif /* USART3 */
  180. #if defined(UART4)
  181. #define LL_APB1_GRP1_PERIPH_UART4 RCC_APB1ENR1_UART4EN
  182. #endif /* UART4 */
  183. #if defined(UART5)
  184. #define LL_APB1_GRP1_PERIPH_UART5 RCC_APB1ENR1_UART5EN
  185. #endif /* UART5 */
  186. #define LL_APB1_GRP1_PERIPH_I2C1 RCC_APB1ENR1_I2C1EN
  187. #if defined(I2C2)
  188. #define LL_APB1_GRP1_PERIPH_I2C2 RCC_APB1ENR1_I2C2EN
  189. #endif /* I2C2 */
  190. #define LL_APB1_GRP1_PERIPH_I2C3 RCC_APB1ENR1_I2C3EN
  191. #if defined(CRS)
  192. #define LL_APB1_GRP1_PERIPH_CRS RCC_APB1ENR1_CRSEN
  193. #endif /* CRS */
  194. #define LL_APB1_GRP1_PERIPH_CAN1 RCC_APB1ENR1_CAN1EN
  195. #if defined(CAN2)
  196. #define LL_APB1_GRP1_PERIPH_CAN2 RCC_APB1ENR1_CAN2EN
  197. #endif /* CAN2 */
  198. #if defined(USB)
  199. #define LL_APB1_GRP1_PERIPH_USB RCC_APB1ENR1_USBFSEN
  200. #endif /* USB */
  201. #define LL_APB1_GRP1_PERIPH_PWR RCC_APB1ENR1_PWREN
  202. #define LL_APB1_GRP1_PERIPH_DAC1 RCC_APB1ENR1_DAC1EN
  203. #define LL_APB1_GRP1_PERIPH_OPAMP RCC_APB1ENR1_OPAMPEN
  204. #define LL_APB1_GRP1_PERIPH_LPTIM1 RCC_APB1ENR1_LPTIM1EN
  205. /**
  206. * @}
  207. */
  208. /** @defgroup BUS_LL_EC_APB1_GRP2_PERIPH APB1 GRP2 PERIPH
  209. * @{
  210. */
  211. #define LL_APB1_GRP2_PERIPH_ALL 0xFFFFFFFFU
  212. #define LL_APB1_GRP2_PERIPH_LPUART1 RCC_APB1ENR2_LPUART1EN
  213. #if defined(I2C4)
  214. #define LL_APB1_GRP2_PERIPH_I2C4 RCC_APB1ENR2_I2C4EN
  215. #endif /* I2C4 */
  216. #if defined(SWPMI1)
  217. #define LL_APB1_GRP2_PERIPH_SWPMI1 RCC_APB1ENR2_SWPMI1EN
  218. #endif /* SWPMI1 */
  219. #define LL_APB1_GRP2_PERIPH_LPTIM2 RCC_APB1ENR2_LPTIM2EN
  220. /**
  221. * @}
  222. */
  223. /** @defgroup BUS_LL_EC_APB2_GRP1_PERIPH APB2 GRP1 PERIPH
  224. * @{
  225. */
  226. #define LL_APB2_GRP1_PERIPH_ALL 0xFFFFFFFFU
  227. #define LL_APB2_GRP1_PERIPH_SYSCFG RCC_APB2ENR_SYSCFGEN
  228. #define LL_APB2_GRP1_PERIPH_FW RCC_APB2ENR_FWEN
  229. #if defined(SDMMC1) && defined(RCC_APB2ENR_SDMMC1EN)
  230. #define LL_APB2_GRP1_PERIPH_SDMMC1 RCC_APB2ENR_SDMMC1EN
  231. #endif /* SDMMC1 && RCC_APB2ENR_SDMMC1EN */
  232. #define LL_APB2_GRP1_PERIPH_TIM1 RCC_APB2ENR_TIM1EN
  233. #define LL_APB2_GRP1_PERIPH_SPI1 RCC_APB2ENR_SPI1EN
  234. #if defined(TIM8)
  235. #define LL_APB2_GRP1_PERIPH_TIM8 RCC_APB2ENR_TIM8EN
  236. #endif /* TIM8 */
  237. #define LL_APB2_GRP1_PERIPH_USART1 RCC_APB2ENR_USART1EN
  238. #define LL_APB2_GRP1_PERIPH_TIM15 RCC_APB2ENR_TIM15EN
  239. #define LL_APB2_GRP1_PERIPH_TIM16 RCC_APB2ENR_TIM16EN
  240. #if defined(TIM17)
  241. #define LL_APB2_GRP1_PERIPH_TIM17 RCC_APB2ENR_TIM17EN
  242. #endif /* TIM17 */
  243. #define LL_APB2_GRP1_PERIPH_SAI1 RCC_APB2ENR_SAI1EN
  244. #if defined(SAI2)
  245. #define LL_APB2_GRP1_PERIPH_SAI2 RCC_APB2ENR_SAI2EN
  246. #endif /* SAI2 */
  247. #if defined(DFSDM1_Channel0)
  248. #define LL_APB2_GRP1_PERIPH_DFSDM1 RCC_APB2ENR_DFSDM1EN
  249. #endif /* DFSDM1_Channel0 */
  250. #if defined(LTDC)
  251. #define LL_APB2_GRP1_PERIPH_LTDC RCC_APB2ENR_LTDCEN
  252. #endif /* LTDC */
  253. #if defined(DSI)
  254. #define LL_APB2_GRP1_PERIPH_DSI RCC_APB2ENR_DSIEN
  255. #endif /* DSI */
  256. /**
  257. * @}
  258. */
  259. /** Legacy definitions for compatibility purpose
  260. @cond 0
  261. */
  262. #if defined(DFSDM1_Channel0)
  263. #define LL_APB2_GRP1_PERIPH_DFSDM LL_APB2_GRP1_PERIPH_DFSDM1
  264. #endif /* DFSDM1_Channel0 */
  265. /**
  266. @endcond
  267. */
  268. /**
  269. * @}
  270. */
  271. /* Exported macro ------------------------------------------------------------*/
  272. /* Exported functions --------------------------------------------------------*/
  273. /** @defgroup BUS_LL_Exported_Functions BUS Exported Functions
  274. * @{
  275. */
  276. /** @defgroup BUS_LL_EF_AHB1 AHB1
  277. * @{
  278. */
  279. /**
  280. * @brief Enable AHB1 peripherals clock.
  281. * @rmtoll AHB1ENR DMA1EN LL_AHB1_GRP1_EnableClock\n
  282. * AHB1ENR DMA2EN LL_AHB1_GRP1_EnableClock\n
  283. * AHB1ENR DMAMUX1EN LL_AHB1_GRP1_EnableClock\n
  284. * AHB1ENR FLASHEN LL_AHB1_GRP1_EnableClock\n
  285. * AHB1ENR CRCEN LL_AHB1_GRP1_EnableClock\n
  286. * AHB1ENR TSCEN LL_AHB1_GRP1_EnableClock\n
  287. * AHB1ENR DMA2DEN LL_AHB1_GRP1_EnableClock\n
  288. * AHB1ENR GFXMMUEN LL_AHB1_GRP1_EnableClock
  289. * @param Periphs This parameter can be a combination of the following values:
  290. * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1
  291. * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2
  292. * @arg @ref LL_AHB1_GRP1_PERIPH_DMAMUX1 (*)
  293. * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
  294. * @arg @ref LL_AHB1_GRP1_PERIPH_CRC
  295. * @arg @ref LL_AHB1_GRP1_PERIPH_TSC
  296. * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*)
  297. * @arg @ref LL_AHB1_GRP1_PERIPH_GFXMMU (*)
  298. *
  299. * (*) value not defined in all devices.
  300. * @retval None
  301. */
  302. __STATIC_INLINE void LL_AHB1_GRP1_EnableClock(uint32_t Periphs)
  303. {
  304. __IO uint32_t tmpreg;
  305. SET_BIT(RCC->AHB1ENR, Periphs);
  306. /* Delay after an RCC peripheral clock enabling */
  307. tmpreg = READ_BIT(RCC->AHB1ENR, Periphs);
  308. (void)tmpreg;
  309. }
  310. /**
  311. * @brief Check if AHB1 peripheral clock is enabled or not
  312. * @rmtoll AHB1ENR DMA1EN LL_AHB1_GRP1_IsEnabledClock\n
  313. * AHB1ENR DMA2EN LL_AHB1_GRP1_IsEnabledClock\n
  314. * AHB1ENR DMAMUX1EN LL_AHB1_GRP1_IsEnabledClock\n
  315. * AHB1ENR FLASHEN LL_AHB1_GRP1_IsEnabledClock\n
  316. * AHB1ENR CRCEN LL_AHB1_GRP1_IsEnabledClock\n
  317. * AHB1ENR TSCEN LL_AHB1_GRP1_IsEnabledClock\n
  318. * AHB1ENR DMA2DEN LL_AHB1_GRP1_IsEnabledClock\n
  319. * AHB1ENR GFXMMUEN LL_AHB1_GRP1_IsEnabledClock
  320. * @param Periphs This parameter can be a combination of the following values:
  321. * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1
  322. * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2
  323. * @arg @ref LL_AHB1_GRP1_PERIPH_DMAMUX1 (*)
  324. * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
  325. * @arg @ref LL_AHB1_GRP1_PERIPH_CRC
  326. * @arg @ref LL_AHB1_GRP1_PERIPH_TSC
  327. * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*)
  328. * @arg @ref LL_AHB1_GRP1_PERIPH_GFXMMU (*)
  329. *
  330. * (*) value not defined in all devices.
  331. * @retval State of Periphs (1 or 0).
  332. */
  333. __STATIC_INLINE uint32_t LL_AHB1_GRP1_IsEnabledClock(uint32_t Periphs)
  334. {
  335. return ((READ_BIT(RCC->AHB1ENR, Periphs) == Periphs) ? 1UL : 0UL);
  336. }
  337. /**
  338. * @brief Disable AHB1 peripherals clock.
  339. * @rmtoll AHB1ENR DMA1EN LL_AHB1_GRP1_DisableClock\n
  340. * AHB1ENR DMA2EN LL_AHB1_GRP1_DisableClock\n
  341. * AHB1ENR DMAMUX1EN LL_AHB1_GRP1_DisableClock\n
  342. * AHB1ENR FLASHEN LL_AHB1_GRP1_DisableClock\n
  343. * AHB1ENR CRCEN LL_AHB1_GRP1_DisableClock\n
  344. * AHB1ENR TSCEN LL_AHB1_GRP1_DisableClock\n
  345. * AHB1ENR DMA2DEN LL_AHB1_GRP1_DisableClock\n
  346. * AHB1ENR GFXMMUEN LL_AHB1_GRP1_DisableClock
  347. * @param Periphs This parameter can be a combination of the following values:
  348. * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1
  349. * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2
  350. * @arg @ref LL_AHB1_GRP1_PERIPH_DMAMUX1 (*)
  351. * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
  352. * @arg @ref LL_AHB1_GRP1_PERIPH_CRC
  353. * @arg @ref LL_AHB1_GRP1_PERIPH_TSC
  354. * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*)
  355. * @arg @ref LL_AHB1_GRP1_PERIPH_GFXMMU (*)
  356. *
  357. * (*) value not defined in all devices.
  358. * @retval None
  359. */
  360. __STATIC_INLINE void LL_AHB1_GRP1_DisableClock(uint32_t Periphs)
  361. {
  362. CLEAR_BIT(RCC->AHB1ENR, Periphs);
  363. }
  364. /**
  365. * @brief Force AHB1 peripherals reset.
  366. * @rmtoll AHB1RSTR DMA1RST LL_AHB1_GRP1_ForceReset\n
  367. * AHB1RSTR DMA2RST LL_AHB1_GRP1_ForceReset\n
  368. * AHB1RSTR DMAMUX1RST LL_AHB1_GRP1_ForceReset\n
  369. * AHB1RSTR FLASHRST LL_AHB1_GRP1_ForceReset\n
  370. * AHB1RSTR CRCRST LL_AHB1_GRP1_ForceReset\n
  371. * AHB1RSTR TSCRST LL_AHB1_GRP1_ForceReset\n
  372. * AHB1RSTR DMA2DRST LL_AHB1_GRP1_ForceReset\n
  373. * AHB1RSTR GFXMMURST LL_AHB1_GRP1_ForceReset
  374. * @param Periphs This parameter can be a combination of the following values:
  375. * @arg @ref LL_AHB1_GRP1_PERIPH_ALL
  376. * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1
  377. * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2
  378. * @arg @ref LL_AHB1_GRP1_PERIPH_DMAMUX1 (*)
  379. * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
  380. * @arg @ref LL_AHB1_GRP1_PERIPH_CRC
  381. * @arg @ref LL_AHB1_GRP1_PERIPH_TSC
  382. * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*)
  383. * @arg @ref LL_AHB1_GRP1_PERIPH_GFXMMU (*)
  384. *
  385. * (*) value not defined in all devices.
  386. * @retval None
  387. */
  388. __STATIC_INLINE void LL_AHB1_GRP1_ForceReset(uint32_t Periphs)
  389. {
  390. SET_BIT(RCC->AHB1RSTR, Periphs);
  391. }
  392. /**
  393. * @brief Release AHB1 peripherals reset.
  394. * @rmtoll AHB1RSTR DMA1RST LL_AHB1_GRP1_ReleaseReset\n
  395. * AHB1RSTR DMA2RST LL_AHB1_GRP1_ReleaseReset\n
  396. * AHB1RSTR DMAMUX1RST LL_AHB1_GRP1_ReleaseReset\n
  397. * AHB1RSTR FLASHRST LL_AHB1_GRP1_ReleaseReset\n
  398. * AHB1RSTR CRCRST LL_AHB1_GRP1_ReleaseReset\n
  399. * AHB1RSTR TSCRST LL_AHB1_GRP1_ReleaseReset\n
  400. * AHB1RSTR DMA2DRST LL_AHB1_GRP1_ReleaseReset\n
  401. * AHB1RSTR GFXMMURST LL_AHB1_GRP1_ReleaseReset
  402. * @param Periphs This parameter can be a combination of the following values:
  403. * @arg @ref LL_AHB1_GRP1_PERIPH_ALL
  404. * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1
  405. * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2
  406. * @arg @ref LL_AHB1_GRP1_PERIPH_DMAMUX1 (*)
  407. * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
  408. * @arg @ref LL_AHB1_GRP1_PERIPH_CRC
  409. * @arg @ref LL_AHB1_GRP1_PERIPH_TSC
  410. * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*)
  411. * @arg @ref LL_AHB1_GRP1_PERIPH_GFXMMU (*)
  412. *
  413. * (*) value not defined in all devices.
  414. * @retval None
  415. */
  416. __STATIC_INLINE void LL_AHB1_GRP1_ReleaseReset(uint32_t Periphs)
  417. {
  418. CLEAR_BIT(RCC->AHB1RSTR, Periphs);
  419. }
  420. /**
  421. * @brief Enable AHB1 peripheral clocks in Sleep and Stop modes
  422. * @rmtoll AHB1SMENR DMA1SMEN LL_AHB1_GRP1_EnableClockStopSleep\n
  423. * AHB1SMENR DMA2SMEN LL_AHB1_GRP1_EnableClockStopSleep\n
  424. * AHB1SMENR DMAMUX1SMEN LL_AHB1_GRP1_EnableClockStopSleep\n
  425. * AHB1SMENR FLASHSMEN LL_AHB1_GRP1_EnableClockStopSleep\n
  426. * AHB1SMENR SRAM1SMEN LL_AHB1_GRP1_EnableClockStopSleep\n
  427. * AHB1SMENR CRCSMEN LL_AHB1_GRP1_EnableClockStopSleep\n
  428. * AHB1SMENR TSCSMEN LL_AHB1_GRP1_EnableClockStopSleep\n
  429. * AHB1SMENR DMA2DSMEN LL_AHB1_GRP1_EnableClockStopSleep\n
  430. * AHB1SMENR GFXMMUSMEN LL_AHB1_GRP1_EnableClockStopSleep
  431. * @param Periphs This parameter can be a combination of the following values:
  432. * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1
  433. * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2
  434. * @arg @ref LL_AHB1_GRP1_PERIPH_DMAMUX1 (*)
  435. * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
  436. * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM1
  437. * @arg @ref LL_AHB1_GRP1_PERIPH_CRC
  438. * @arg @ref LL_AHB1_GRP1_PERIPH_TSC
  439. * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*)
  440. * @arg @ref LL_AHB1_GRP1_PERIPH_GFXMMU (*)
  441. *
  442. * (*) value not defined in all devices.
  443. * @retval None
  444. */
  445. __STATIC_INLINE void LL_AHB1_GRP1_EnableClockStopSleep(uint32_t Periphs)
  446. {
  447. __IO uint32_t tmpreg;
  448. SET_BIT(RCC->AHB1SMENR, Periphs);
  449. /* Delay after an RCC peripheral clock enabling */
  450. tmpreg = READ_BIT(RCC->AHB1SMENR, Periphs);
  451. (void)tmpreg;
  452. }
  453. /**
  454. * @brief Disable AHB1 peripheral clocks in Sleep and Stop modes
  455. * @rmtoll AHB1SMENR DMA1SMEN LL_AHB1_GRP1_DisableClockStopSleep\n
  456. * AHB1SMENR DMA2SMEN LL_AHB1_GRP1_DisableClockStopSleep\n
  457. * AHB1SMENR DMAMUX1SMEN LL_AHB1_GRP1_DisableClockStopSleep\n
  458. * AHB1SMENR FLASHSMEN LL_AHB1_GRP1_DisableClockStopSleep\n
  459. * AHB1SMENR SRAM1SMEN LL_AHB1_GRP1_DisableClockStopSleep\n
  460. * AHB1SMENR CRCSMEN LL_AHB1_GRP1_DisableClockStopSleep\n
  461. * AHB1SMENR TSCSMEN LL_AHB1_GRP1_DisableClockStopSleep\n
  462. * AHB1SMENR DMA2DSMEN LL_AHB1_GRP1_DisableClockStopSleep\n
  463. * AHB1SMENR GFXMMUSMEN LL_AHB1_GRP1_DisableClockStopSleep
  464. * @param Periphs This parameter can be a combination of the following values:
  465. * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1
  466. * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2
  467. * @arg @ref LL_AHB1_GRP1_PERIPH_DMAMUX1 (*)
  468. * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
  469. * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM1
  470. * @arg @ref LL_AHB1_GRP1_PERIPH_CRC
  471. * @arg @ref LL_AHB1_GRP1_PERIPH_TSC
  472. * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*)
  473. * @arg @ref LL_AHB1_GRP1_PERIPH_GFXMMU (*)
  474. *
  475. * (*) value not defined in all devices.
  476. * @retval None
  477. */
  478. __STATIC_INLINE void LL_AHB1_GRP1_DisableClockStopSleep(uint32_t Periphs)
  479. {
  480. CLEAR_BIT(RCC->AHB1SMENR, Periphs);
  481. }
  482. /**
  483. * @}
  484. */
  485. /** @defgroup BUS_LL_EF_AHB2 AHB2
  486. * @{
  487. */
  488. /**
  489. * @brief Enable AHB2 peripherals clock.
  490. * @rmtoll AHB2ENR GPIOAEN LL_AHB2_GRP1_EnableClock\n
  491. * AHB2ENR GPIOBEN LL_AHB2_GRP1_EnableClock\n
  492. * AHB2ENR GPIOCEN LL_AHB2_GRP1_EnableClock\n
  493. * AHB2ENR GPIODEN LL_AHB2_GRP1_EnableClock\n
  494. * AHB2ENR GPIOEEN LL_AHB2_GRP1_EnableClock\n
  495. * AHB2ENR GPIOFEN LL_AHB2_GRP1_EnableClock\n
  496. * AHB2ENR GPIOGEN LL_AHB2_GRP1_EnableClock\n
  497. * AHB2ENR GPIOHEN LL_AHB2_GRP1_EnableClock\n
  498. * AHB2ENR GPIOIEN LL_AHB2_GRP1_EnableClock\n
  499. * AHB2ENR OTGFSEN LL_AHB2_GRP1_EnableClock\n
  500. * AHB2ENR ADCEN LL_AHB2_GRP1_EnableClock\n
  501. * AHB2ENR DCMIEN LL_AHB2_GRP1_EnableClock\n
  502. * AHB2ENR AESEN LL_AHB2_GRP1_EnableClock\n
  503. * AHB2ENR HASHEN LL_AHB2_GRP1_EnableClock\n
  504. * AHB2ENR RNGEN LL_AHB2_GRP1_EnableClock\n
  505. * AHB2ENR OSPIMEN LL_AHB2_GRP1_EnableClock\n
  506. * AHB2ENR SDMMC1EN LL_AHB2_GRP1_EnableClock
  507. * @param Periphs This parameter can be a combination of the following values:
  508. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOA
  509. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOB
  510. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOC
  511. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOD (*)
  512. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOE (*)
  513. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOF (*)
  514. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOG (*)
  515. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOH
  516. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOI (*)
  517. * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS (*)
  518. * @arg @ref LL_AHB2_GRP1_PERIPH_ADC
  519. * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*)
  520. * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*)
  521. * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*)
  522. * @arg @ref LL_AHB2_GRP1_PERIPH_RNG
  523. * @arg @ref LL_AHB2_GRP1_PERIPH_OSPIM (*)
  524. * @arg @ref LL_AHB2_GRP1_PERIPH_SDMMC1 (*)
  525. *
  526. * (*) value not defined in all devices.
  527. * @retval None
  528. */
  529. __STATIC_INLINE void LL_AHB2_GRP1_EnableClock(uint32_t Periphs)
  530. {
  531. __IO uint32_t tmpreg;
  532. SET_BIT(RCC->AHB2ENR, Periphs);
  533. /* Delay after an RCC peripheral clock enabling */
  534. tmpreg = READ_BIT(RCC->AHB2ENR, Periphs);
  535. (void)tmpreg;
  536. }
  537. /**
  538. * @brief Check if AHB2 peripheral clock is enabled or not
  539. * @rmtoll AHB2ENR GPIOAEN LL_AHB2_GRP1_IsEnabledClock\n
  540. * AHB2ENR GPIOBEN LL_AHB2_GRP1_IsEnabledClock\n
  541. * AHB2ENR GPIOCEN LL_AHB2_GRP1_IsEnabledClock\n
  542. * AHB2ENR GPIODEN LL_AHB2_GRP1_IsEnabledClock\n
  543. * AHB2ENR GPIOEEN LL_AHB2_GRP1_IsEnabledClock\n
  544. * AHB2ENR GPIOFEN LL_AHB2_GRP1_IsEnabledClock\n
  545. * AHB2ENR GPIOGEN LL_AHB2_GRP1_IsEnabledClock\n
  546. * AHB2ENR GPIOHEN LL_AHB2_GRP1_IsEnabledClock\n
  547. * AHB2ENR GPIOIEN LL_AHB2_GRP1_IsEnabledClock\n
  548. * AHB2ENR OTGFSEN LL_AHB2_GRP1_IsEnabledClock\n
  549. * AHB2ENR ADCEN LL_AHB2_GRP1_IsEnabledClock\n
  550. * AHB2ENR DCMIEN LL_AHB2_GRP1_IsEnabledClock\n
  551. * AHB2ENR AESEN LL_AHB2_GRP1_IsEnabledClock\n
  552. * AHB2ENR HASHEN LL_AHB2_GRP1_IsEnabledClock\n
  553. * AHB2ENR RNGEN LL_AHB2_GRP1_IsEnabledClock\n
  554. * AHB2ENR OSPIMEN LL_AHB2_GRP1_IsEnabledClock\n
  555. * AHB2ENR SDMMC1EN LL_AHB2_GRP1_IsEnabledClock
  556. * @param Periphs This parameter can be a combination of the following values:
  557. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOA
  558. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOB
  559. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOC
  560. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOD (*)
  561. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOE (*)
  562. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOF (*)
  563. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOG (*)
  564. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOH
  565. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOI (*)
  566. * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS (*)
  567. * @arg @ref LL_AHB2_GRP1_PERIPH_ADC
  568. * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*)
  569. * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*)
  570. * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*)
  571. * @arg @ref LL_AHB2_GRP1_PERIPH_RNG
  572. * @arg @ref LL_AHB2_GRP1_PERIPH_OSPIM (*)
  573. * @arg @ref LL_AHB2_GRP1_PERIPH_SDMMC1 (*)
  574. *
  575. * (*) value not defined in all devices.
  576. * @retval State of Periphs (1 or 0).
  577. */
  578. __STATIC_INLINE uint32_t LL_AHB2_GRP1_IsEnabledClock(uint32_t Periphs)
  579. {
  580. return ((READ_BIT(RCC->AHB2ENR, Periphs) == Periphs) ? 1UL : 0UL);
  581. }
  582. /**
  583. * @brief Disable AHB2 peripherals clock.
  584. * @rmtoll AHB2ENR GPIOAEN LL_AHB2_GRP1_DisableClock\n
  585. * AHB2ENR GPIOBEN LL_AHB2_GRP1_DisableClock\n
  586. * AHB2ENR GPIOCEN LL_AHB2_GRP1_DisableClock\n
  587. * AHB2ENR GPIODEN LL_AHB2_GRP1_DisableClock\n
  588. * AHB2ENR GPIOEEN LL_AHB2_GRP1_DisableClock\n
  589. * AHB2ENR GPIOFEN LL_AHB2_GRP1_DisableClock\n
  590. * AHB2ENR GPIOGEN LL_AHB2_GRP1_DisableClock\n
  591. * AHB2ENR GPIOHEN LL_AHB2_GRP1_DisableClock\n
  592. * AHB2ENR GPIOIEN LL_AHB2_GRP1_DisableClock\n
  593. * AHB2ENR OTGFSEN LL_AHB2_GRP1_DisableClock\n
  594. * AHB2ENR ADCEN LL_AHB2_GRP1_DisableClock\n
  595. * AHB2ENR DCMIEN LL_AHB2_GRP1_DisableClock\n
  596. * AHB2ENR AESEN LL_AHB2_GRP1_DisableClock\n
  597. * AHB2ENR HASHEN LL_AHB2_GRP1_DisableClock\n
  598. * AHB2ENR RNGEN LL_AHB2_GRP1_DisableClock\n
  599. * AHB2ENR OSPIMEN LL_AHB2_GRP1_DisableClock\n
  600. * AHB2ENR SDMMC1EN LL_AHB2_GRP1_DisableClock
  601. * @param Periphs This parameter can be a combination of the following values:
  602. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOA
  603. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOB
  604. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOC
  605. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOD (*)
  606. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOE (*)
  607. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOF (*)
  608. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOG (*)
  609. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOH
  610. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOI (*)
  611. * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS (*)
  612. * @arg @ref LL_AHB2_GRP1_PERIPH_ADC
  613. * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*)
  614. * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*)
  615. * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*)
  616. * @arg @ref LL_AHB2_GRP1_PERIPH_RNG
  617. * @arg @ref LL_AHB2_GRP1_PERIPH_OSPIM (*)
  618. * @arg @ref LL_AHB2_GRP1_PERIPH_SDMMC1 (*)
  619. *
  620. * (*) value not defined in all devices.
  621. * @retval None
  622. */
  623. __STATIC_INLINE void LL_AHB2_GRP1_DisableClock(uint32_t Periphs)
  624. {
  625. CLEAR_BIT(RCC->AHB2ENR, Periphs);
  626. }
  627. /**
  628. * @brief Force AHB2 peripherals reset.
  629. * @rmtoll AHB2RSTR GPIOARST LL_AHB2_GRP1_ForceReset\n
  630. * AHB2RSTR GPIOBRST LL_AHB2_GRP1_ForceReset\n
  631. * AHB2RSTR GPIOCRST LL_AHB2_GRP1_ForceReset\n
  632. * AHB2RSTR GPIODRST LL_AHB2_GRP1_ForceReset\n
  633. * AHB2RSTR GPIOERST LL_AHB2_GRP1_ForceReset\n
  634. * AHB2RSTR GPIOFRST LL_AHB2_GRP1_ForceReset\n
  635. * AHB2RSTR GPIOGRST LL_AHB2_GRP1_ForceReset\n
  636. * AHB2RSTR GPIOHRST LL_AHB2_GRP1_ForceReset\n
  637. * AHB2RSTR GPIOIRST LL_AHB2_GRP1_ForceReset\n
  638. * AHB2RSTR OTGFSRST LL_AHB2_GRP1_ForceReset\n
  639. * AHB2RSTR ADCRST LL_AHB2_GRP1_ForceReset\n
  640. * AHB2RSTR DCMIRST LL_AHB2_GRP1_ForceReset\n
  641. * AHB2RSTR AESRST LL_AHB2_GRP1_ForceReset\n
  642. * AHB2RSTR HASHRST LL_AHB2_GRP1_ForceReset\n
  643. * AHB2RSTR RNGRST LL_AHB2_GRP1_ForceReset\n
  644. * AHB2RSTR OSPIMRST LL_AHB2_GRP1_ForceReset\n
  645. * AHB2RSTR SDMMC1RST LL_AHB2_GRP1_ForceReset
  646. * @param Periphs This parameter can be a combination of the following values:
  647. * @arg @ref LL_AHB2_GRP1_PERIPH_ALL
  648. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOA
  649. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOB
  650. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOC
  651. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOD (*)
  652. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOE (*)
  653. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOF (*)
  654. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOG (*)
  655. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOH
  656. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOI (*)
  657. * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS (*)
  658. * @arg @ref LL_AHB2_GRP1_PERIPH_ADC
  659. * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*)
  660. * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*)
  661. * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*)
  662. * @arg @ref LL_AHB2_GRP1_PERIPH_RNG
  663. * @arg @ref LL_AHB2_GRP1_PERIPH_OSPIM (*)
  664. * @arg @ref LL_AHB2_GRP1_PERIPH_SDMMC1 (*)
  665. *
  666. * (*) value not defined in all devices.
  667. * @retval None
  668. */
  669. __STATIC_INLINE void LL_AHB2_GRP1_ForceReset(uint32_t Periphs)
  670. {
  671. SET_BIT(RCC->AHB2RSTR, Periphs);
  672. }
  673. /**
  674. * @brief Release AHB2 peripherals reset.
  675. * @rmtoll AHB2RSTR GPIOARST LL_AHB2_GRP1_ReleaseReset\n
  676. * AHB2RSTR GPIOBRST LL_AHB2_GRP1_ReleaseReset\n
  677. * AHB2RSTR GPIOCRST LL_AHB2_GRP1_ReleaseReset\n
  678. * AHB2RSTR GPIODRST LL_AHB2_GRP1_ReleaseReset\n
  679. * AHB2RSTR GPIOERST LL_AHB2_GRP1_ReleaseReset\n
  680. * AHB2RSTR GPIOFRST LL_AHB2_GRP1_ReleaseReset\n
  681. * AHB2RSTR GPIOGRST LL_AHB2_GRP1_ReleaseReset\n
  682. * AHB2RSTR GPIOHRST LL_AHB2_GRP1_ReleaseReset\n
  683. * AHB2RSTR GPIOIRST LL_AHB2_GRP1_ReleaseReset\n
  684. * AHB2RSTR OTGFSRST LL_AHB2_GRP1_ReleaseReset\n
  685. * AHB2RSTR ADCRST LL_AHB2_GRP1_ReleaseReset\n
  686. * AHB2RSTR DCMIRST LL_AHB2_GRP1_ReleaseReset\n
  687. * AHB2RSTR AESRST LL_AHB2_GRP1_ReleaseReset\n
  688. * AHB2RSTR HASHRST LL_AHB2_GRP1_ReleaseReset\n
  689. * AHB2RSTR RNGRST LL_AHB2_GRP1_ReleaseReset\n
  690. * AHB2RSTR OSPIMRST LL_AHB2_GRP1_ReleaseReset\n
  691. * AHB2RSTR SDMMC1RST LL_AHB2_GRP1_ReleaseReset
  692. * @param Periphs This parameter can be a combination of the following values:
  693. * @arg @ref LL_AHB2_GRP1_PERIPH_ALL
  694. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOA
  695. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOB
  696. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOC
  697. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOD (*)
  698. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOE (*)
  699. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOF (*)
  700. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOG (*)
  701. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOH
  702. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOI (*)
  703. * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS (*)
  704. * @arg @ref LL_AHB2_GRP1_PERIPH_ADC
  705. * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*)
  706. * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*)
  707. * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*)
  708. * @arg @ref LL_AHB2_GRP1_PERIPH_RNG
  709. * @arg @ref LL_AHB2_GRP1_PERIPH_OSPIM (*)
  710. * @arg @ref LL_AHB2_GRP1_PERIPH_SDMMC1 (*)
  711. *
  712. * (*) value not defined in all devices.
  713. * @retval None
  714. */
  715. __STATIC_INLINE void LL_AHB2_GRP1_ReleaseReset(uint32_t Periphs)
  716. {
  717. CLEAR_BIT(RCC->AHB2RSTR, Periphs);
  718. }
  719. /**
  720. * @brief Enable AHB2 peripheral clocks in Sleep and Stop modes
  721. * @rmtoll AHB2SMENR GPIOASMEN LL_AHB2_GRP1_EnableClockStopSleep\n
  722. * AHB2SMENR GPIOBSMEN LL_AHB2_GRP1_EnableClockStopSleep\n
  723. * AHB2SMENR GPIOCSMEN LL_AHB2_GRP1_EnableClockStopSleep\n
  724. * AHB2SMENR GPIODSMEN LL_AHB2_GRP1_EnableClockStopSleep\n
  725. * AHB2SMENR GPIOESMEN LL_AHB2_GRP1_EnableClockStopSleep\n
  726. * AHB2SMENR GPIOFSMEN LL_AHB2_GRP1_EnableClockStopSleep\n
  727. * AHB2SMENR GPIOGSMEN LL_AHB2_GRP1_EnableClockStopSleep\n
  728. * AHB2SMENR GPIOHSMEN LL_AHB2_GRP1_EnableClockStopSleep\n
  729. * AHB2SMENR GPIOISMEN LL_AHB2_GRP1_EnableClockStopSleep\n
  730. * AHB2SMENR SRAM2SMEN LL_AHB2_GRP1_EnableClockStopSleep\n
  731. * AHB2SMENR SRAM3SMEN LL_AHB2_GRP1_EnableClockStopSleep\n
  732. * AHB2SMENR OTGFSSMEN LL_AHB2_GRP1_EnableClockStopSleep\n
  733. * AHB2SMENR ADCSMEN LL_AHB2_GRP1_EnableClockStopSleep\n
  734. * AHB2SMENR DCMISMEN LL_AHB2_GRP1_EnableClockStopSleep\n
  735. * AHB2SMENR AESSMEN LL_AHB2_GRP1_EnableClockStopSleep\n
  736. * AHB2SMENR HASHSMEN LL_AHB2_GRP1_EnableClockStopSleep\n
  737. * AHB2SMENR RNGSMEN LL_AHB2_GRP1_EnableClockStopSleep\n
  738. * AHB2SMENR OSPIMSMEN LL_AHB2_GRP1_EnableClockStopSleep\n
  739. * AHB2SMENR SDMMC1SMEN LL_AHB2_GRP1_EnableClockStopSleep
  740. * @param Periphs This parameter can be a combination of the following values:
  741. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOA
  742. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOB
  743. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOC
  744. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOD (*)
  745. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOE (*)
  746. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOF (*)
  747. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOG (*)
  748. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOH
  749. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOI (*)
  750. * @arg @ref LL_AHB2_GRP1_PERIPH_SRAM2
  751. * @arg @ref LL_AHB2_GRP1_PERIPH_SRAM3 (*)
  752. * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS (*)
  753. * @arg @ref LL_AHB2_GRP1_PERIPH_ADC
  754. * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*)
  755. * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*)
  756. * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*)
  757. * @arg @ref LL_AHB2_GRP1_PERIPH_RNG
  758. * @arg @ref LL_AHB2_GRP1_PERIPH_OSPIM (*)
  759. * @arg @ref LL_AHB2_GRP1_PERIPH_SDMMC1 (*)
  760. *
  761. * (*) value not defined in all devices.
  762. * @retval None
  763. */
  764. __STATIC_INLINE void LL_AHB2_GRP1_EnableClockStopSleep(uint32_t Periphs)
  765. {
  766. __IO uint32_t tmpreg;
  767. SET_BIT(RCC->AHB2SMENR, Periphs);
  768. /* Delay after an RCC peripheral clock enabling */
  769. tmpreg = READ_BIT(RCC->AHB2SMENR, Periphs);
  770. (void)tmpreg;
  771. }
  772. /**
  773. * @brief Disable AHB2 peripheral clocks in Sleep and Stop modes
  774. * @rmtoll AHB2SMENR GPIOASMEN LL_AHB2_GRP1_DisableClockStopSleep\n
  775. * AHB2SMENR GPIOBSMEN LL_AHB2_GRP1_DisableClockStopSleep\n
  776. * AHB2SMENR GPIOCSMEN LL_AHB2_GRP1_DisableClockStopSleep\n
  777. * AHB2SMENR GPIODSMEN LL_AHB2_GRP1_DisableClockStopSleep\n
  778. * AHB2SMENR GPIOESMEN LL_AHB2_GRP1_DisableClockStopSleep\n
  779. * AHB2SMENR GPIOFSMEN LL_AHB2_GRP1_DisableClockStopSleep\n
  780. * AHB2SMENR GPIOGSMEN LL_AHB2_GRP1_DisableClockStopSleep\n
  781. * AHB2SMENR GPIOHSMEN LL_AHB2_GRP1_DisableClockStopSleep\n
  782. * AHB2SMENR GPIOISMEN LL_AHB2_GRP1_DisableClockStopSleep\n
  783. * AHB2SMENR SRAM2SMEN LL_AHB2_GRP1_DisableClockStopSleep\n
  784. * AHB2SMENR SRAM3SMEN LL_AHB2_GRP1_DisableClockStopSleep\n
  785. * AHB2SMENR OTGFSSMEN LL_AHB2_GRP1_DisableClockStopSleep\n
  786. * AHB2SMENR ADCSMEN LL_AHB2_GRP1_DisableClockStopSleep\n
  787. * AHB2SMENR DCMISMEN LL_AHB2_GRP1_DisableClockStopSleep\n
  788. * AHB2SMENR AESSMEN LL_AHB2_GRP1_DisableClockStopSleep\n
  789. * AHB2SMENR HASHSMEN LL_AHB2_GRP1_DisableClockStopSleep\n
  790. * AHB2SMENR RNGSMEN LL_AHB2_GRP1_DisableClockStopSleep\n
  791. * AHB2SMENR OSPIMSMEN LL_AHB2_GRP1_DisableClockStopSleep\n
  792. * AHB2SMENR SDMMC1SMEN LL_AHB2_GRP1_DisableClockStopSleep
  793. * @param Periphs This parameter can be a combination of the following values:
  794. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOA
  795. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOB
  796. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOC
  797. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOD (*)
  798. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOE (*)
  799. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOF (*)
  800. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOG (*)
  801. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOH
  802. * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOI (*)
  803. * @arg @ref LL_AHB2_GRP1_PERIPH_SRAM2
  804. * @arg @ref LL_AHB2_GRP1_PERIPH_SRAM3 (*)
  805. * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS (*)
  806. * @arg @ref LL_AHB2_GRP1_PERIPH_ADC
  807. * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*)
  808. * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*)
  809. * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*)
  810. * @arg @ref LL_AHB2_GRP1_PERIPH_RNG
  811. * @arg @ref LL_AHB2_GRP1_PERIPH_OSPIM (*)
  812. * @arg @ref LL_AHB2_GRP1_PERIPH_SDMMC1 (*)
  813. *
  814. * (*) value not defined in all devices.
  815. * @retval None
  816. */
  817. __STATIC_INLINE void LL_AHB2_GRP1_DisableClockStopSleep(uint32_t Periphs)
  818. {
  819. CLEAR_BIT(RCC->AHB2SMENR, Periphs);
  820. }
  821. /**
  822. * @}
  823. */
  824. /** @defgroup BUS_LL_EF_AHB3 AHB3
  825. * @{
  826. */
  827. /**
  828. * @brief Enable AHB3 peripherals clock.
  829. * @rmtoll AHB3ENR FMCEN LL_AHB3_GRP1_EnableClock\n
  830. * AHB3ENR QSPIEN LL_AHB3_GRP1_EnableClock\n
  831. * AHB3ENR OSPI1EN LL_AHB3_GRP1_EnableClock\n
  832. * AHB3ENR OSPI2EN LL_AHB3_GRP1_EnableClock
  833. * @param Periphs This parameter can be a combination of the following values:
  834. * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*)
  835. * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI (*)
  836. * @arg @ref LL_AHB3_GRP1_PERIPH_OSPI1 (*)
  837. * @arg @ref LL_AHB3_GRP1_PERIPH_OSPI2 (*)
  838. *
  839. * (*) value not defined in all devices.
  840. * @retval None
  841. */
  842. __STATIC_INLINE void LL_AHB3_GRP1_EnableClock(uint32_t Periphs)
  843. {
  844. __IO uint32_t tmpreg;
  845. SET_BIT(RCC->AHB3ENR, Periphs);
  846. /* Delay after an RCC peripheral clock enabling */
  847. tmpreg = READ_BIT(RCC->AHB3ENR, Periphs);
  848. (void)tmpreg;
  849. }
  850. /**
  851. * @brief Check if AHB3 peripheral clock is enabled or not
  852. * @rmtoll AHB3ENR FMCEN LL_AHB3_GRP1_IsEnabledClock\n
  853. * AHB3ENR QSPIEN LL_AHB3_GRP1_IsEnabledClock\n
  854. * AHB3ENR OSPI1EN LL_AHB3_GRP1_IsEnabledClock\n
  855. * AHB3ENR OSPI2EN LL_AHB3_GRP1_IsEnabledClock
  856. * @param Periphs This parameter can be a combination of the following values:
  857. * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*)
  858. * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI (*)
  859. * @arg @ref LL_AHB3_GRP1_PERIPH_OSPI1 (*)
  860. * @arg @ref LL_AHB3_GRP1_PERIPH_OSPI2 (*)
  861. *
  862. * (*) value not defined in all devices.
  863. * @retval State of Periphs (1 or 0).
  864. */
  865. __STATIC_INLINE uint32_t LL_AHB3_GRP1_IsEnabledClock(uint32_t Periphs)
  866. {
  867. return ((READ_BIT(RCC->AHB3ENR, Periphs) == Periphs) ? 1UL : 0UL);
  868. }
  869. /**
  870. * @brief Disable AHB3 peripherals clock.
  871. * @rmtoll AHB3ENR FMCEN LL_AHB3_GRP1_DisableClock\n
  872. * AHB3ENR QSPIEN LL_AHB3_GRP1_DisableClock\n
  873. * AHB3ENR OSPI1EN LL_AHB3_GRP1_DisableClock\n
  874. * AHB3ENR OSPI2EN LL_AHB3_GRP1_DisableClock
  875. * @param Periphs This parameter can be a combination of the following values:
  876. * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*)
  877. * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI (*)
  878. * @arg @ref LL_AHB3_GRP1_PERIPH_OSPI1 (*)
  879. * @arg @ref LL_AHB3_GRP1_PERIPH_OSPI2 (*)
  880. *
  881. * (*) value not defined in all devices.
  882. * @retval None
  883. */
  884. __STATIC_INLINE void LL_AHB3_GRP1_DisableClock(uint32_t Periphs)
  885. {
  886. CLEAR_BIT(RCC->AHB3ENR, Periphs);
  887. }
  888. /**
  889. * @brief Force AHB3 peripherals reset.
  890. * @rmtoll AHB3RSTR FMCRST LL_AHB3_GRP1_ForceReset\n
  891. * AHB3RSTR QSPIRST LL_AHB3_GRP1_ForceReset\n
  892. * AHB3RSTR OSPI1RST LL_AHB3_GRP1_ForceReset\n
  893. * AHB3RSTR OSPI2RST LL_AHB3_GRP1_ForceReset
  894. * @param Periphs This parameter can be a combination of the following values:
  895. * @arg @ref LL_AHB3_GRP1_PERIPH_ALL
  896. * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*)
  897. * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI (*)
  898. * @arg @ref LL_AHB3_GRP1_PERIPH_OSPI1 (*)
  899. * @arg @ref LL_AHB3_GRP1_PERIPH_OSPI2 (*)
  900. *
  901. * (*) value not defined in all devices.
  902. * @retval None
  903. */
  904. __STATIC_INLINE void LL_AHB3_GRP1_ForceReset(uint32_t Periphs)
  905. {
  906. SET_BIT(RCC->AHB3RSTR, Periphs);
  907. }
  908. /**
  909. * @brief Release AHB3 peripherals reset.
  910. * @rmtoll AHB3RSTR FMCRST LL_AHB3_GRP1_ReleaseReset\n
  911. * AHB3RSTR QSPIRST LL_AHB3_GRP1_ReleaseReset\n
  912. * AHB3RSTR OSPI1RST LL_AHB3_GRP1_ReleaseReset\n
  913. * AHB3RSTR OSPI2RST LL_AHB3_GRP1_ReleaseReset
  914. * @param Periphs This parameter can be a combination of the following values:
  915. * @arg @ref LL_AHB2_GRP1_PERIPH_ALL
  916. * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*)
  917. * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI (*)
  918. * @arg @ref LL_AHB3_GRP1_PERIPH_OSPI1 (*)
  919. * @arg @ref LL_AHB3_GRP1_PERIPH_OSPI2 (*)
  920. *
  921. * (*) value not defined in all devices.
  922. * @retval None
  923. */
  924. __STATIC_INLINE void LL_AHB3_GRP1_ReleaseReset(uint32_t Periphs)
  925. {
  926. CLEAR_BIT(RCC->AHB3RSTR, Periphs);
  927. }
  928. /**
  929. * @brief Enable AHB3 peripheral clocks in Sleep and Stop modes
  930. * @rmtoll AHB3SMENR FMCSMEN LL_AHB3_GRP1_EnableClockStopSleep\n
  931. * AHB3SMENR QSPISMEN LL_AHB3_GRP1_EnableClockStopSleep\n
  932. * AHB3SMENR OSPI1SMEN LL_AHB3_GRP1_EnableClockStopSleep\n
  933. * AHB3SMENR OSPI2SMEN LL_AHB3_GRP1_EnableClockStopSleep
  934. * @param Periphs This parameter can be a combination of the following values:
  935. * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*)
  936. * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI (*)
  937. * @arg @ref LL_AHB3_GRP1_PERIPH_OSPI1 (*)
  938. * @arg @ref LL_AHB3_GRP1_PERIPH_OSPI2 (*)
  939. *
  940. * (*) value not defined in all devices.
  941. * @retval None
  942. */
  943. __STATIC_INLINE void LL_AHB3_GRP1_EnableClockStopSleep(uint32_t Periphs)
  944. {
  945. __IO uint32_t tmpreg;
  946. SET_BIT(RCC->AHB3SMENR, Periphs);
  947. /* Delay after an RCC peripheral clock enabling */
  948. tmpreg = READ_BIT(RCC->AHB3SMENR, Periphs);
  949. (void)tmpreg;
  950. }
  951. /**
  952. * @brief Disable AHB3 peripheral clocks in Sleep and Stop modes
  953. * @rmtoll AHB3SMENR FMCSMEN LL_AHB3_GRP1_DisableClockStopSleep\n
  954. * AHB3SMENR QSPISMEN LL_AHB3_GRP1_DisableClockStopSleep\n
  955. * AHB3SMENR OSPI1SMEN LL_AHB3_GRP1_DisableClockStopSleep\n
  956. * AHB3SMENR OSPI2SMEN LL_AHB3_GRP1_DisableClockStopSleep\n
  957. * @param Periphs This parameter can be a combination of the following values:
  958. * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*)
  959. * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI (*)
  960. * @arg @ref LL_AHB3_GRP1_PERIPH_OSPI1 (*)
  961. * @arg @ref LL_AHB3_GRP1_PERIPH_OSPI2 (*)
  962. *
  963. * (*) value not defined in all devices.
  964. * @retval None
  965. */
  966. __STATIC_INLINE void LL_AHB3_GRP1_DisableClockStopSleep(uint32_t Periphs)
  967. {
  968. CLEAR_BIT(RCC->AHB3SMENR, Periphs);
  969. }
  970. /**
  971. * @}
  972. */
  973. /** @defgroup BUS_LL_EF_APB1 APB1
  974. * @{
  975. */
  976. /**
  977. * @brief Enable APB1 peripherals clock.
  978. * @rmtoll APB1ENR1 TIM2EN LL_APB1_GRP1_EnableClock\n
  979. * APB1ENR1 TIM3EN LL_APB1_GRP1_EnableClock\n
  980. * APB1ENR1 TIM4EN LL_APB1_GRP1_EnableClock\n
  981. * APB1ENR1 TIM5EN LL_APB1_GRP1_EnableClock\n
  982. * APB1ENR1 TIM6EN LL_APB1_GRP1_EnableClock\n
  983. * APB1ENR1 TIM7EN LL_APB1_GRP1_EnableClock\n
  984. * APB1ENR1 LCDEN LL_APB1_GRP1_EnableClock\n
  985. * APB1ENR1 RTCAPBEN LL_APB1_GRP1_EnableClock\n
  986. * APB1ENR1 WWDGEN LL_APB1_GRP1_EnableClock\n
  987. * APB1ENR1 SPI2EN LL_APB1_GRP1_EnableClock\n
  988. * APB1ENR1 SPI3EN LL_APB1_GRP1_EnableClock\n
  989. * APB1ENR1 USART2EN LL_APB1_GRP1_EnableClock\n
  990. * APB1ENR1 USART3EN LL_APB1_GRP1_EnableClock\n
  991. * APB1ENR1 UART4EN LL_APB1_GRP1_EnableClock\n
  992. * APB1ENR1 UART5EN LL_APB1_GRP1_EnableClock\n
  993. * APB1ENR1 I2C1EN LL_APB1_GRP1_EnableClock\n
  994. * APB1ENR1 I2C2EN LL_APB1_GRP1_EnableClock\n
  995. * APB1ENR1 I2C3EN LL_APB1_GRP1_EnableClock\n
  996. * APB1ENR1 CRSEN LL_APB1_GRP1_EnableClock\n
  997. * APB1ENR1 CAN1EN LL_APB1_GRP1_EnableClock\n
  998. * APB1ENR1 USBFSEN LL_APB1_GRP1_EnableClock\n
  999. * APB1ENR1 CAN2EN LL_APB1_GRP1_EnableClock\n
  1000. * APB1ENR1 PWREN LL_APB1_GRP1_EnableClock\n
  1001. * APB1ENR1 DAC1EN LL_APB1_GRP1_EnableClock\n
  1002. * APB1ENR1 OPAMPEN LL_APB1_GRP1_EnableClock\n
  1003. * APB1ENR1 LPTIM1EN LL_APB1_GRP1_EnableClock
  1004. * @param Periphs This parameter can be a combination of the following values:
  1005. * @arg @ref LL_APB1_GRP1_PERIPH_TIM2
  1006. * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 (*)
  1007. * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (*)
  1008. * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*)
  1009. * @arg @ref LL_APB1_GRP1_PERIPH_TIM6
  1010. * @arg @ref LL_APB1_GRP1_PERIPH_TIM7
  1011. * @arg @ref LL_APB1_GRP1_PERIPH_LCD (*)
  1012. * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB (*)
  1013. * @arg @ref LL_APB1_GRP1_PERIPH_WWDG
  1014. * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 (*)
  1015. * @arg @ref LL_APB1_GRP1_PERIPH_SPI3
  1016. * @arg @ref LL_APB1_GRP1_PERIPH_USART2
  1017. * @arg @ref LL_APB1_GRP1_PERIPH_USART3 (*)
  1018. * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*)
  1019. * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*)
  1020. * @arg @ref LL_APB1_GRP1_PERIPH_I2C1
  1021. * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 (*)
  1022. * @arg @ref LL_APB1_GRP1_PERIPH_I2C3
  1023. * @arg @ref LL_APB1_GRP1_PERIPH_CRS (*)
  1024. * @arg @ref LL_APB1_GRP1_PERIPH_CAN1
  1025. * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*)
  1026. * @arg @ref LL_APB1_GRP1_PERIPH_USB (*)
  1027. * @arg @ref LL_APB1_GRP1_PERIPH_PWR
  1028. * @arg @ref LL_APB1_GRP1_PERIPH_DAC1
  1029. * @arg @ref LL_APB1_GRP1_PERIPH_OPAMP
  1030. * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1
  1031. *
  1032. * (*) value not defined in all devices.
  1033. * @retval None
  1034. */
  1035. __STATIC_INLINE void LL_APB1_GRP1_EnableClock(uint32_t Periphs)
  1036. {
  1037. __IO uint32_t tmpreg;
  1038. SET_BIT(RCC->APB1ENR1, Periphs);
  1039. /* Delay after an RCC peripheral clock enabling */
  1040. tmpreg = READ_BIT(RCC->APB1ENR1, Periphs);
  1041. (void)tmpreg;
  1042. }
  1043. /**
  1044. * @brief Enable APB1 peripherals clock.
  1045. * @rmtoll APB1ENR2 LPUART1EN LL_APB1_GRP2_EnableClock\n
  1046. * APB1ENR2 I2C4EN LL_APB1_GRP2_EnableClock\n
  1047. * APB1ENR2 SWPMI1EN LL_APB1_GRP2_EnableClock\n
  1048. * APB1ENR2 LPTIM2EN LL_APB1_GRP2_EnableClock
  1049. * @param Periphs This parameter can be a combination of the following values:
  1050. * @arg @ref LL_APB1_GRP2_PERIPH_LPUART1
  1051. * @arg @ref LL_APB1_GRP2_PERIPH_I2C4 (*)
  1052. * @arg @ref LL_APB1_GRP2_PERIPH_SWPMI1 (*)
  1053. * @arg @ref LL_APB1_GRP2_PERIPH_LPTIM2
  1054. *
  1055. * (*) value not defined in all devices.
  1056. * @retval None
  1057. */
  1058. __STATIC_INLINE void LL_APB1_GRP2_EnableClock(uint32_t Periphs)
  1059. {
  1060. __IO uint32_t tmpreg;
  1061. SET_BIT(RCC->APB1ENR2, Periphs);
  1062. /* Delay after an RCC peripheral clock enabling */
  1063. tmpreg = READ_BIT(RCC->APB1ENR2, Periphs);
  1064. (void)tmpreg;
  1065. }
  1066. /**
  1067. * @brief Check if APB1 peripheral clock is enabled or not
  1068. * @rmtoll APB1ENR1 TIM2EN LL_APB1_GRP1_IsEnabledClock\n
  1069. * APB1ENR1 TIM3EN LL_APB1_GRP1_IsEnabledClock\n
  1070. * APB1ENR1 TIM4EN LL_APB1_GRP1_IsEnabledClock\n
  1071. * APB1ENR1 TIM5EN LL_APB1_GRP1_IsEnabledClock\n
  1072. * APB1ENR1 TIM6EN LL_APB1_GRP1_IsEnabledClock\n
  1073. * APB1ENR1 TIM7EN LL_APB1_GRP1_IsEnabledClock\n
  1074. * APB1ENR1 LCDEN LL_APB1_GRP1_IsEnabledClock\n
  1075. * APB1ENR1 RTCAPBEN LL_APB1_GRP1_IsEnabledClock\n
  1076. * APB1ENR1 WWDGEN LL_APB1_GRP1_IsEnabledClock\n
  1077. * APB1ENR1 SPI2EN LL_APB1_GRP1_IsEnabledClock\n
  1078. * APB1ENR1 SPI3EN LL_APB1_GRP1_IsEnabledClock\n
  1079. * APB1ENR1 USART2EN LL_APB1_GRP1_IsEnabledClock\n
  1080. * APB1ENR1 USART3EN LL_APB1_GRP1_IsEnabledClock\n
  1081. * APB1ENR1 UART4EN LL_APB1_GRP1_IsEnabledClock\n
  1082. * APB1ENR1 UART5EN LL_APB1_GRP1_IsEnabledClock\n
  1083. * APB1ENR1 I2C1EN LL_APB1_GRP1_IsEnabledClock\n
  1084. * APB1ENR1 I2C2EN LL_APB1_GRP1_IsEnabledClock\n
  1085. * APB1ENR1 I2C3EN LL_APB1_GRP1_IsEnabledClock\n
  1086. * APB1ENR1 CRSEN LL_APB1_GRP1_IsEnabledClock\n
  1087. * APB1ENR1 CAN1EN LL_APB1_GRP1_IsEnabledClock\n
  1088. * APB1ENR1 USBFSEN LL_APB1_GRP1_IsEnabledClock\n
  1089. * APB1ENR1 CAN2EN LL_APB1_GRP1_IsEnabledClock\n
  1090. * APB1ENR1 PWREN LL_APB1_GRP1_IsEnabledClock\n
  1091. * APB1ENR1 DAC1EN LL_APB1_GRP1_IsEnabledClock\n
  1092. * APB1ENR1 OPAMPEN LL_APB1_GRP1_IsEnabledClock\n
  1093. * APB1ENR1 LPTIM1EN LL_APB1_GRP1_IsEnabledClock
  1094. * @param Periphs This parameter can be a combination of the following values:
  1095. * @arg @ref LL_APB1_GRP1_PERIPH_TIM2
  1096. * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 (*)
  1097. * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (*)
  1098. * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*)
  1099. * @arg @ref LL_APB1_GRP1_PERIPH_TIM6
  1100. * @arg @ref LL_APB1_GRP1_PERIPH_TIM7
  1101. * @arg @ref LL_APB1_GRP1_PERIPH_LCD (*)
  1102. * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB (*)
  1103. * @arg @ref LL_APB1_GRP1_PERIPH_WWDG
  1104. * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 (*)
  1105. * @arg @ref LL_APB1_GRP1_PERIPH_SPI3
  1106. * @arg @ref LL_APB1_GRP1_PERIPH_USART2
  1107. * @arg @ref LL_APB1_GRP1_PERIPH_USART3 (*)
  1108. * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*)
  1109. * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*)
  1110. * @arg @ref LL_APB1_GRP1_PERIPH_I2C1
  1111. * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 (*)
  1112. * @arg @ref LL_APB1_GRP1_PERIPH_I2C3
  1113. * @arg @ref LL_APB1_GRP1_PERIPH_CRS (*)
  1114. * @arg @ref LL_APB1_GRP1_PERIPH_CAN1
  1115. * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*)
  1116. * @arg @ref LL_APB1_GRP1_PERIPH_USB (*)
  1117. * @arg @ref LL_APB1_GRP1_PERIPH_PWR
  1118. * @arg @ref LL_APB1_GRP1_PERIPH_DAC1
  1119. * @arg @ref LL_APB1_GRP1_PERIPH_OPAMP
  1120. * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1
  1121. *
  1122. * (*) value not defined in all devices.
  1123. * @retval State of Periphs (1 or 0).
  1124. */
  1125. __STATIC_INLINE uint32_t LL_APB1_GRP1_IsEnabledClock(uint32_t Periphs)
  1126. {
  1127. return ((READ_BIT(RCC->APB1ENR1, Periphs) == Periphs) ? 1UL : 0UL);
  1128. }
  1129. /**
  1130. * @brief Check if APB1 peripheral clock is enabled or not
  1131. * @rmtoll APB1ENR2 LPUART1EN LL_APB1_GRP2_IsEnabledClock\n
  1132. * APB1ENR2 I2C4EN LL_APB1_GRP2_IsEnabledClock\n
  1133. * APB1ENR2 SWPMI1EN LL_APB1_GRP2_IsEnabledClock\n
  1134. * APB1ENR2 LPTIM2EN LL_APB1_GRP2_IsEnabledClock
  1135. * @param Periphs This parameter can be a combination of the following values:
  1136. * @arg @ref LL_APB1_GRP2_PERIPH_LPUART1
  1137. * @arg @ref LL_APB1_GRP2_PERIPH_I2C4 (*)
  1138. * @arg @ref LL_APB1_GRP2_PERIPH_SWPMI1 (*)
  1139. * @arg @ref LL_APB1_GRP2_PERIPH_LPTIM2
  1140. *
  1141. * (*) value not defined in all devices.
  1142. * @retval State of Periphs (1 or 0).
  1143. */
  1144. __STATIC_INLINE uint32_t LL_APB1_GRP2_IsEnabledClock(uint32_t Periphs)
  1145. {
  1146. return ((READ_BIT(RCC->APB1ENR2, Periphs) == Periphs) ? 1UL : 0UL);
  1147. }
  1148. /**
  1149. * @brief Disable APB1 peripherals clock.
  1150. * @rmtoll APB1ENR1 TIM2EN LL_APB1_GRP1_DisableClock\n
  1151. * APB1ENR1 TIM3EN LL_APB1_GRP1_DisableClock\n
  1152. * APB1ENR1 TIM4EN LL_APB1_GRP1_DisableClock\n
  1153. * APB1ENR1 TIM5EN LL_APB1_GRP1_DisableClock\n
  1154. * APB1ENR1 TIM6EN LL_APB1_GRP1_DisableClock\n
  1155. * APB1ENR1 TIM7EN LL_APB1_GRP1_DisableClock\n
  1156. * APB1ENR1 LCDEN LL_APB1_GRP1_DisableClock\n
  1157. * APB1ENR1 RTCAPBEN LL_APB1_GRP1_DisableClock\n
  1158. * APB1ENR1 WWDGEN LL_APB1_GRP1_DisableClock\n
  1159. * APB1ENR1 SPI2EN LL_APB1_GRP1_DisableClock\n
  1160. * APB1ENR1 SPI3EN LL_APB1_GRP1_DisableClock\n
  1161. * APB1ENR1 USART2EN LL_APB1_GRP1_DisableClock\n
  1162. * APB1ENR1 USART3EN LL_APB1_GRP1_DisableClock\n
  1163. * APB1ENR1 UART4EN LL_APB1_GRP1_DisableClock\n
  1164. * APB1ENR1 UART5EN LL_APB1_GRP1_DisableClock\n
  1165. * APB1ENR1 I2C1EN LL_APB1_GRP1_DisableClock\n
  1166. * APB1ENR1 I2C2EN LL_APB1_GRP1_DisableClock\n
  1167. * APB1ENR1 I2C3EN LL_APB1_GRP1_DisableClock\n
  1168. * APB1ENR1 CRSEN LL_APB1_GRP1_DisableClock\n
  1169. * APB1ENR1 CAN1EN LL_APB1_GRP1_DisableClock\n
  1170. * APB1ENR1 USBFSEN LL_APB1_GRP1_DisableClock\n
  1171. * APB1ENR1 CAN2EN LL_APB1_GRP1_DisableClock\n
  1172. * APB1ENR1 PWREN LL_APB1_GRP1_DisableClock\n
  1173. * APB1ENR1 DAC1EN LL_APB1_GRP1_DisableClock\n
  1174. * APB1ENR1 OPAMPEN LL_APB1_GRP1_DisableClock\n
  1175. * APB1ENR1 LPTIM1EN LL_APB1_GRP1_DisableClock
  1176. * @param Periphs This parameter can be a combination of the following values:
  1177. * @arg @ref LL_APB1_GRP1_PERIPH_TIM2
  1178. * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 (*)
  1179. * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (*)
  1180. * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*)
  1181. * @arg @ref LL_APB1_GRP1_PERIPH_TIM6
  1182. * @arg @ref LL_APB1_GRP1_PERIPH_TIM7
  1183. * @arg @ref LL_APB1_GRP1_PERIPH_LCD (*)
  1184. * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB (*)
  1185. * @arg @ref LL_APB1_GRP1_PERIPH_WWDG
  1186. * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 (*)
  1187. * @arg @ref LL_APB1_GRP1_PERIPH_SPI3
  1188. * @arg @ref LL_APB1_GRP1_PERIPH_USART2
  1189. * @arg @ref LL_APB1_GRP1_PERIPH_USART3 (*)
  1190. * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*)
  1191. * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*)
  1192. * @arg @ref LL_APB1_GRP1_PERIPH_I2C1
  1193. * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 (*)
  1194. * @arg @ref LL_APB1_GRP1_PERIPH_I2C3
  1195. * @arg @ref LL_APB1_GRP1_PERIPH_CRS (*)
  1196. * @arg @ref LL_APB1_GRP1_PERIPH_CAN1
  1197. * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*)
  1198. * @arg @ref LL_APB1_GRP1_PERIPH_USB (*)
  1199. * @arg @ref LL_APB1_GRP1_PERIPH_PWR
  1200. * @arg @ref LL_APB1_GRP1_PERIPH_DAC1
  1201. * @arg @ref LL_APB1_GRP1_PERIPH_OPAMP
  1202. * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1
  1203. *
  1204. * (*) value not defined in all devices.
  1205. * @retval None
  1206. */
  1207. __STATIC_INLINE void LL_APB1_GRP1_DisableClock(uint32_t Periphs)
  1208. {
  1209. CLEAR_BIT(RCC->APB1ENR1, Periphs);
  1210. }
  1211. /**
  1212. * @brief Disable APB1 peripherals clock.
  1213. * @rmtoll APB1ENR2 LPUART1EN LL_APB1_GRP2_DisableClock\n
  1214. * APB1ENR2 I2C4EN LL_APB1_GRP2_DisableClock\n
  1215. * APB1ENR2 SWPMI1EN LL_APB1_GRP2_DisableClock\n
  1216. * APB1ENR2 LPTIM2EN LL_APB1_GRP2_DisableClock
  1217. * @param Periphs This parameter can be a combination of the following values:
  1218. * @arg @ref LL_APB1_GRP2_PERIPH_LPUART1
  1219. * @arg @ref LL_APB1_GRP2_PERIPH_I2C4 (*)
  1220. * @arg @ref LL_APB1_GRP2_PERIPH_SWPMI1 (*)
  1221. * @arg @ref LL_APB1_GRP2_PERIPH_LPTIM2
  1222. *
  1223. * (*) value not defined in all devices.
  1224. * @retval None
  1225. */
  1226. __STATIC_INLINE void LL_APB1_GRP2_DisableClock(uint32_t Periphs)
  1227. {
  1228. CLEAR_BIT(RCC->APB1ENR2, Periphs);
  1229. }
  1230. /**
  1231. * @brief Force APB1 peripherals reset.
  1232. * @rmtoll APB1RSTR1 TIM2RST LL_APB1_GRP1_ForceReset\n
  1233. * APB1RSTR1 TIM3RST LL_APB1_GRP1_ForceReset\n
  1234. * APB1RSTR1 TIM4RST LL_APB1_GRP1_ForceReset\n
  1235. * APB1RSTR1 TIM5RST LL_APB1_GRP1_ForceReset\n
  1236. * APB1RSTR1 TIM6RST LL_APB1_GRP1_ForceReset\n
  1237. * APB1RSTR1 TIM7RST LL_APB1_GRP1_ForceReset\n
  1238. * APB1RSTR1 LCDRST LL_APB1_GRP1_ForceReset\n
  1239. * APB1RSTR1 SPI2RST LL_APB1_GRP1_ForceReset\n
  1240. * APB1RSTR1 SPI3RST LL_APB1_GRP1_ForceReset\n
  1241. * APB1RSTR1 USART2RST LL_APB1_GRP1_ForceReset\n
  1242. * APB1RSTR1 USART3RST LL_APB1_GRP1_ForceReset\n
  1243. * APB1RSTR1 UART4RST LL_APB1_GRP1_ForceReset\n
  1244. * APB1RSTR1 UART5RST LL_APB1_GRP1_ForceReset\n
  1245. * APB1RSTR1 I2C1RST LL_APB1_GRP1_ForceReset\n
  1246. * APB1RSTR1 I2C2RST LL_APB1_GRP1_ForceReset\n
  1247. * APB1RSTR1 I2C3RST LL_APB1_GRP1_ForceReset\n
  1248. * APB1RSTR1 CRSRST LL_APB1_GRP1_ForceReset\n
  1249. * APB1RSTR1 CAN1RST LL_APB1_GRP1_ForceReset\n
  1250. * APB1RSTR1 USBFSRST LL_APB1_GRP1_ForceReset\n
  1251. * APB1RSTR1 CAN2RST LL_APB1_GRP1_ForceReset\n
  1252. * APB1RSTR1 PWRRST LL_APB1_GRP1_ForceReset\n
  1253. * APB1RSTR1 DAC1RST LL_APB1_GRP1_ForceReset\n
  1254. * APB1RSTR1 OPAMPRST LL_APB1_GRP1_ForceReset\n
  1255. * APB1RSTR1 LPTIM1RST LL_APB1_GRP1_ForceReset
  1256. * @param Periphs This parameter can be a combination of the following values:
  1257. * @arg @ref LL_APB1_GRP1_PERIPH_ALL
  1258. * @arg @ref LL_APB1_GRP1_PERIPH_TIM2
  1259. * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 (*)
  1260. * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (*)
  1261. * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*)
  1262. * @arg @ref LL_APB1_GRP1_PERIPH_TIM6
  1263. * @arg @ref LL_APB1_GRP1_PERIPH_TIM7
  1264. * @arg @ref LL_APB1_GRP1_PERIPH_LCD (*)
  1265. * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 (*)
  1266. * @arg @ref LL_APB1_GRP1_PERIPH_SPI3
  1267. * @arg @ref LL_APB1_GRP1_PERIPH_USART2
  1268. * @arg @ref LL_APB1_GRP1_PERIPH_USART3 (*)
  1269. * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*)
  1270. * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*)
  1271. * @arg @ref LL_APB1_GRP1_PERIPH_I2C1
  1272. * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 (*)
  1273. * @arg @ref LL_APB1_GRP1_PERIPH_I2C3
  1274. * @arg @ref LL_APB1_GRP1_PERIPH_CRS (*)
  1275. * @arg @ref LL_APB1_GRP1_PERIPH_CAN1
  1276. * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*)
  1277. * @arg @ref LL_APB1_GRP1_PERIPH_USB (*)
  1278. * @arg @ref LL_APB1_GRP1_PERIPH_PWR
  1279. * @arg @ref LL_APB1_GRP1_PERIPH_DAC1
  1280. * @arg @ref LL_APB1_GRP1_PERIPH_OPAMP
  1281. * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1
  1282. *
  1283. * (*) value not defined in all devices.
  1284. * @retval None
  1285. */
  1286. __STATIC_INLINE void LL_APB1_GRP1_ForceReset(uint32_t Periphs)
  1287. {
  1288. SET_BIT(RCC->APB1RSTR1, Periphs);
  1289. }
  1290. /**
  1291. * @brief Force APB1 peripherals reset.
  1292. * @rmtoll APB1RSTR2 LPUART1RST LL_APB1_GRP2_ForceReset\n
  1293. * APB1RSTR2 I2C4RST LL_APB1_GRP2_ForceReset\n
  1294. * APB1RSTR2 SWPMI1RST LL_APB1_GRP2_ForceReset\n
  1295. * APB1RSTR2 LPTIM2RST LL_APB1_GRP2_ForceReset
  1296. * @param Periphs This parameter can be a combination of the following values:
  1297. * @arg @ref LL_APB1_GRP2_PERIPH_ALL
  1298. * @arg @ref LL_APB1_GRP2_PERIPH_LPUART1
  1299. * @arg @ref LL_APB1_GRP2_PERIPH_I2C4 (*)
  1300. * @arg @ref LL_APB1_GRP2_PERIPH_SWPMI1 (*)
  1301. * @arg @ref LL_APB1_GRP2_PERIPH_LPTIM2
  1302. *
  1303. * (*) value not defined in all devices.
  1304. * @retval None
  1305. */
  1306. __STATIC_INLINE void LL_APB1_GRP2_ForceReset(uint32_t Periphs)
  1307. {
  1308. SET_BIT(RCC->APB1RSTR2, Periphs);
  1309. }
  1310. /**
  1311. * @brief Release APB1 peripherals reset.
  1312. * @rmtoll APB1RSTR1 TIM2RST LL_APB1_GRP1_ReleaseReset\n
  1313. * APB1RSTR1 TIM3RST LL_APB1_GRP1_ReleaseReset\n
  1314. * APB1RSTR1 TIM4RST LL_APB1_GRP1_ReleaseReset\n
  1315. * APB1RSTR1 TIM5RST LL_APB1_GRP1_ReleaseReset\n
  1316. * APB1RSTR1 TIM6RST LL_APB1_GRP1_ReleaseReset\n
  1317. * APB1RSTR1 TIM7RST LL_APB1_GRP1_ReleaseReset\n
  1318. * APB1RSTR1 LCDRST LL_APB1_GRP1_ReleaseReset\n
  1319. * APB1RSTR1 SPI2RST LL_APB1_GRP1_ReleaseReset\n
  1320. * APB1RSTR1 SPI3RST LL_APB1_GRP1_ReleaseReset\n
  1321. * APB1RSTR1 USART2RST LL_APB1_GRP1_ReleaseReset\n
  1322. * APB1RSTR1 USART3RST LL_APB1_GRP1_ReleaseReset\n
  1323. * APB1RSTR1 UART4RST LL_APB1_GRP1_ReleaseReset\n
  1324. * APB1RSTR1 UART5RST LL_APB1_GRP1_ReleaseReset\n
  1325. * APB1RSTR1 I2C1RST LL_APB1_GRP1_ReleaseReset\n
  1326. * APB1RSTR1 I2C2RST LL_APB1_GRP1_ReleaseReset\n
  1327. * APB1RSTR1 I2C3RST LL_APB1_GRP1_ReleaseReset\n
  1328. * APB1RSTR1 CRSRST LL_APB1_GRP1_ReleaseReset\n
  1329. * APB1RSTR1 CAN1RST LL_APB1_GRP1_ReleaseReset\n
  1330. * APB1RSTR1 USBFSRST LL_APB1_GRP1_ReleaseReset\n
  1331. * APB1RSTR1 CAN2RST LL_APB1_GRP1_ReleaseReset\n
  1332. * APB1RSTR1 PWRRST LL_APB1_GRP1_ReleaseReset\n
  1333. * APB1RSTR1 DAC1RST LL_APB1_GRP1_ReleaseReset\n
  1334. * APB1RSTR1 OPAMPRST LL_APB1_GRP1_ReleaseReset\n
  1335. * APB1RSTR1 LPTIM1RST LL_APB1_GRP1_ReleaseReset
  1336. * @param Periphs This parameter can be a combination of the following values:
  1337. * @arg @ref LL_APB1_GRP1_PERIPH_ALL
  1338. * @arg @ref LL_APB1_GRP1_PERIPH_TIM2
  1339. * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 (*)
  1340. * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (*)
  1341. * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*)
  1342. * @arg @ref LL_APB1_GRP1_PERIPH_TIM6
  1343. * @arg @ref LL_APB1_GRP1_PERIPH_TIM7
  1344. * @arg @ref LL_APB1_GRP1_PERIPH_LCD (*)
  1345. * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 (*)
  1346. * @arg @ref LL_APB1_GRP1_PERIPH_SPI3
  1347. * @arg @ref LL_APB1_GRP1_PERIPH_USART2
  1348. * @arg @ref LL_APB1_GRP1_PERIPH_USART3 (*)
  1349. * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*)
  1350. * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*)
  1351. * @arg @ref LL_APB1_GRP1_PERIPH_I2C1
  1352. * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 (*)
  1353. * @arg @ref LL_APB1_GRP1_PERIPH_I2C3
  1354. * @arg @ref LL_APB1_GRP1_PERIPH_CRS (*)
  1355. * @arg @ref LL_APB1_GRP1_PERIPH_CAN1
  1356. * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*)
  1357. * @arg @ref LL_APB1_GRP1_PERIPH_USB (*)
  1358. * @arg @ref LL_APB1_GRP1_PERIPH_PWR
  1359. * @arg @ref LL_APB1_GRP1_PERIPH_DAC1
  1360. * @arg @ref LL_APB1_GRP1_PERIPH_OPAMP
  1361. * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1
  1362. *
  1363. * (*) value not defined in all devices.
  1364. * @retval None
  1365. */
  1366. __STATIC_INLINE void LL_APB1_GRP1_ReleaseReset(uint32_t Periphs)
  1367. {
  1368. CLEAR_BIT(RCC->APB1RSTR1, Periphs);
  1369. }
  1370. /**
  1371. * @brief Release APB1 peripherals reset.
  1372. * @rmtoll APB1RSTR2 LPUART1RST LL_APB1_GRP2_ReleaseReset\n
  1373. * APB1RSTR2 I2C4RST LL_APB1_GRP2_ReleaseReset\n
  1374. * APB1RSTR2 SWPMI1RST LL_APB1_GRP2_ReleaseReset\n
  1375. * APB1RSTR2 LPTIM2RST LL_APB1_GRP2_ReleaseReset
  1376. * @param Periphs This parameter can be a combination of the following values:
  1377. * @arg @ref LL_APB1_GRP2_PERIPH_ALL
  1378. * @arg @ref LL_APB1_GRP2_PERIPH_LPUART1
  1379. * @arg @ref LL_APB1_GRP2_PERIPH_I2C4 (*)
  1380. * @arg @ref LL_APB1_GRP2_PERIPH_SWPMI1 (*)
  1381. * @arg @ref LL_APB1_GRP2_PERIPH_LPTIM2
  1382. *
  1383. * (*) value not defined in all devices.
  1384. * @retval None
  1385. */
  1386. __STATIC_INLINE void LL_APB1_GRP2_ReleaseReset(uint32_t Periphs)
  1387. {
  1388. CLEAR_BIT(RCC->APB1RSTR2, Periphs);
  1389. }
  1390. /**
  1391. * @brief Enable APB1 peripheral clocks in Sleep and Stop modes
  1392. * @rmtoll APB1SMENR1 TIM2SMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1393. * APB1SMENR1 TIM3SMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1394. * APB1SMENR1 TIM4SMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1395. * APB1SMENR1 TIM5SMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1396. * APB1SMENR1 TIM6SMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1397. * APB1SMENR1 TIM7SMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1398. * APB1SMENR1 LCDSMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1399. * APB1SMENR1 RTCAPBSMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1400. * APB1SMENR1 WWDGSMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1401. * APB1SMENR1 SPI2SMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1402. * APB1SMENR1 SPI3SMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1403. * APB1SMENR1 USART2SMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1404. * APB1SMENR1 USART3SMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1405. * APB1SMENR1 UART4SMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1406. * APB1SMENR1 UART5SMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1407. * APB1SMENR1 I2C1SMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1408. * APB1SMENR1 I2C2SMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1409. * APB1SMENR1 I2C3SMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1410. * APB1SMENR1 CRSSMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1411. * APB1SMENR1 CAN1SMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1412. * APB1SMENR1 USBFSSMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1413. * APB1SMENR1 CAN2SMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1414. * APB1SMENR1 PWRSMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1415. * APB1SMENR1 DAC1SMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1416. * APB1SMENR1 OPAMPSMEN LL_APB1_GRP1_EnableClockStopSleep\n
  1417. * APB1SMENR1 LPTIM1SMEN LL_APB1_GRP1_EnableClockStopSleep
  1418. * @param Periphs This parameter can be a combination of the following values:
  1419. * @arg @ref LL_APB1_GRP1_PERIPH_TIM2
  1420. * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 (*)
  1421. * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (*)
  1422. * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*)
  1423. * @arg @ref LL_APB1_GRP1_PERIPH_TIM6
  1424. * @arg @ref LL_APB1_GRP1_PERIPH_TIM7
  1425. * @arg @ref LL_APB1_GRP1_PERIPH_LCD (*)
  1426. * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB (*)
  1427. * @arg @ref LL_APB1_GRP1_PERIPH_WWDG
  1428. * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 (*)
  1429. * @arg @ref LL_APB1_GRP1_PERIPH_SPI3
  1430. * @arg @ref LL_APB1_GRP1_PERIPH_USART2
  1431. * @arg @ref LL_APB1_GRP1_PERIPH_USART3 (*)
  1432. * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*)
  1433. * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*)
  1434. * @arg @ref LL_APB1_GRP1_PERIPH_I2C1
  1435. * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 (*)
  1436. * @arg @ref LL_APB1_GRP1_PERIPH_I2C3
  1437. * @arg @ref LL_APB1_GRP1_PERIPH_CRS (*)
  1438. * @arg @ref LL_APB1_GRP1_PERIPH_CAN1
  1439. * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*)
  1440. * @arg @ref LL_APB1_GRP1_PERIPH_USB (*)
  1441. * @arg @ref LL_APB1_GRP1_PERIPH_PWR
  1442. * @arg @ref LL_APB1_GRP1_PERIPH_DAC1
  1443. * @arg @ref LL_APB1_GRP1_PERIPH_OPAMP
  1444. * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1
  1445. *
  1446. * (*) value not defined in all devices.
  1447. * @retval None
  1448. */
  1449. __STATIC_INLINE void LL_APB1_GRP1_EnableClockStopSleep(uint32_t Periphs)
  1450. {
  1451. __IO uint32_t tmpreg;
  1452. SET_BIT(RCC->APB1SMENR1, Periphs);
  1453. /* Delay after an RCC peripheral clock enabling */
  1454. tmpreg = READ_BIT(RCC->APB1SMENR1, Periphs);
  1455. (void)tmpreg;
  1456. }
  1457. /**
  1458. * @brief Enable APB1 peripheral clocks in Sleep and Stop modes
  1459. * @rmtoll APB1SMENR2 LPUART1SMEN LL_APB1_GRP2_EnableClockStopSleep\n
  1460. * APB1SMENR2 I2C4SMEN LL_APB1_GRP2_EnableClockStopSleep\n
  1461. * APB1SMENR2 SWPMI1SMEN LL_APB1_GRP2_EnableClockStopSleep\n
  1462. * APB1SMENR2 LPTIM2SMEN LL_APB1_GRP2_EnableClockStopSleep
  1463. * @param Periphs This parameter can be a combination of the following values:
  1464. * @arg @ref LL_APB1_GRP2_PERIPH_LPUART1
  1465. * @arg @ref LL_APB1_GRP2_PERIPH_I2C4 (*)
  1466. * @arg @ref LL_APB1_GRP2_PERIPH_SWPMI1 (*)
  1467. * @arg @ref LL_APB1_GRP2_PERIPH_LPTIM2
  1468. *
  1469. * (*) value not defined in all devices.
  1470. * @retval None
  1471. */
  1472. __STATIC_INLINE void LL_APB1_GRP2_EnableClockStopSleep(uint32_t Periphs)
  1473. {
  1474. __IO uint32_t tmpreg;
  1475. SET_BIT(RCC->APB1SMENR2, Periphs);
  1476. /* Delay after an RCC peripheral clock enabling */
  1477. tmpreg = READ_BIT(RCC->APB1SMENR2, Periphs);
  1478. (void)tmpreg;
  1479. }
  1480. /**
  1481. * @brief Disable APB1 peripheral clocks in Sleep and Stop modes
  1482. * @rmtoll APB1SMENR1 TIM2SMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1483. * APB1SMENR1 TIM3SMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1484. * APB1SMENR1 TIM4SMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1485. * APB1SMENR1 TIM5SMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1486. * APB1SMENR1 TIM6SMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1487. * APB1SMENR1 TIM7SMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1488. * APB1SMENR1 LCDSMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1489. * APB1SMENR1 RTCAPBSMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1490. * APB1SMENR1 WWDGSMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1491. * APB1SMENR1 SPI2SMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1492. * APB1SMENR1 SPI3SMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1493. * APB1SMENR1 USART2SMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1494. * APB1SMENR1 USART3SMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1495. * APB1SMENR1 UART4SMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1496. * APB1SMENR1 UART5SMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1497. * APB1SMENR1 I2C1SMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1498. * APB1SMENR1 I2C2SMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1499. * APB1SMENR1 I2C3SMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1500. * APB1SMENR1 CRSSMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1501. * APB1SMENR1 CAN1SMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1502. * APB1SMENR1 USBFSSMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1503. * APB1SMENR1 CAN2SMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1504. * APB1SMENR1 PWRSMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1505. * APB1SMENR1 DAC1SMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1506. * APB1SMENR1 OPAMPSMEN LL_APB1_GRP1_DisableClockStopSleep\n
  1507. * APB1SMENR1 LPTIM1SMEN LL_APB1_GRP1_DisableClockStopSleep
  1508. * @param Periphs This parameter can be a combination of the following values:
  1509. * @arg @ref LL_APB1_GRP1_PERIPH_TIM2
  1510. * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 (*)
  1511. * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (*)
  1512. * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*)
  1513. * @arg @ref LL_APB1_GRP1_PERIPH_TIM6
  1514. * @arg @ref LL_APB1_GRP1_PERIPH_TIM7
  1515. * @arg @ref LL_APB1_GRP1_PERIPH_LCD (*)
  1516. * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB (*)
  1517. * @arg @ref LL_APB1_GRP1_PERIPH_WWDG
  1518. * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 (*)
  1519. * @arg @ref LL_APB1_GRP1_PERIPH_SPI3
  1520. * @arg @ref LL_APB1_GRP1_PERIPH_USART2
  1521. * @arg @ref LL_APB1_GRP1_PERIPH_USART3 (*)
  1522. * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*)
  1523. * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*)
  1524. * @arg @ref LL_APB1_GRP1_PERIPH_I2C1
  1525. * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 (*)
  1526. * @arg @ref LL_APB1_GRP1_PERIPH_I2C3
  1527. * @arg @ref LL_APB1_GRP1_PERIPH_CRS (*)
  1528. * @arg @ref LL_APB1_GRP1_PERIPH_CAN1
  1529. * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*)
  1530. * @arg @ref LL_APB1_GRP1_PERIPH_USB (*)
  1531. * @arg @ref LL_APB1_GRP1_PERIPH_PWR
  1532. * @arg @ref LL_APB1_GRP1_PERIPH_DAC1
  1533. * @arg @ref LL_APB1_GRP1_PERIPH_OPAMP
  1534. * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1
  1535. *
  1536. * (*) value not defined in all devices.
  1537. * @retval None
  1538. */
  1539. __STATIC_INLINE void LL_APB1_GRP1_DisableClockStopSleep(uint32_t Periphs)
  1540. {
  1541. CLEAR_BIT(RCC->APB1SMENR1, Periphs);
  1542. }
  1543. /**
  1544. * @brief Disable APB1 peripheral clocks in Sleep and Stop modes
  1545. * @rmtoll APB1SMENR2 LPUART1SMEN LL_APB1_GRP2_DisableClockStopSleep\n
  1546. * APB1SMENR2 I2C4SMEN LL_APB1_GRP2_DisableClockStopSleep\n
  1547. * APB1SMENR2 SWPMI1SMEN LL_APB1_GRP2_DisableClockStopSleep\n
  1548. * APB1SMENR2 LPTIM2SMEN LL_APB1_GRP2_DisableClockStopSleep
  1549. * @param Periphs This parameter can be a combination of the following values:
  1550. * @arg @ref LL_APB1_GRP2_PERIPH_LPUART1
  1551. * @arg @ref LL_APB1_GRP2_PERIPH_I2C4 (*)
  1552. * @arg @ref LL_APB1_GRP2_PERIPH_SWPMI1 (*)
  1553. * @arg @ref LL_APB1_GRP2_PERIPH_LPTIM2
  1554. *
  1555. * (*) value not defined in all devices.
  1556. * @retval None
  1557. */
  1558. __STATIC_INLINE void LL_APB1_GRP2_DisableClockStopSleep(uint32_t Periphs)
  1559. {
  1560. CLEAR_BIT(RCC->APB1SMENR2, Periphs);
  1561. }
  1562. /**
  1563. * @}
  1564. */
  1565. /** @defgroup BUS_LL_EF_APB2 APB2
  1566. * @{
  1567. */
  1568. /**
  1569. * @brief Enable APB2 peripherals clock.
  1570. * @rmtoll APB2ENR SYSCFGEN LL_APB2_GRP1_EnableClock\n
  1571. * APB2ENR FWEN LL_APB2_GRP1_EnableClock\n
  1572. * APB2ENR SDMMC1EN LL_APB2_GRP1_EnableClock\n
  1573. * APB2ENR TIM1EN LL_APB2_GRP1_EnableClock\n
  1574. * APB2ENR SPI1EN LL_APB2_GRP1_EnableClock\n
  1575. * APB2ENR TIM8EN LL_APB2_GRP1_EnableClock\n
  1576. * APB2ENR USART1EN LL_APB2_GRP1_EnableClock\n
  1577. * APB2ENR TIM15EN LL_APB2_GRP1_EnableClock\n
  1578. * APB2ENR TIM16EN LL_APB2_GRP1_EnableClock\n
  1579. * APB2ENR TIM17EN LL_APB2_GRP1_EnableClock\n
  1580. * APB2ENR SAI1EN LL_APB2_GRP1_EnableClock\n
  1581. * APB2ENR SAI2EN LL_APB2_GRP1_EnableClock\n
  1582. * APB2ENR DFSDM1EN LL_APB2_GRP1_EnableClock\n
  1583. * APB2ENR LTDCEN LL_APB2_GRP1_EnableClock\n
  1584. * APB2ENR DSIEN LL_APB2_GRP1_EnableClock
  1585. * @param Periphs This parameter can be a combination of the following values:
  1586. * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG
  1587. * @arg @ref LL_APB2_GRP1_PERIPH_FW
  1588. * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC1 (*)
  1589. * @arg @ref LL_APB2_GRP1_PERIPH_TIM1
  1590. * @arg @ref LL_APB2_GRP1_PERIPH_SPI1
  1591. * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 (*)
  1592. * @arg @ref LL_APB2_GRP1_PERIPH_USART1
  1593. * @arg @ref LL_APB2_GRP1_PERIPH_TIM15
  1594. * @arg @ref LL_APB2_GRP1_PERIPH_TIM16
  1595. * @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*)
  1596. * @arg @ref LL_APB2_GRP1_PERIPH_SAI1
  1597. * @arg @ref LL_APB2_GRP1_PERIPH_SAI2 (*)
  1598. * @arg @ref LL_APB2_GRP1_PERIPH_DFSDM1 (*)
  1599. * @arg @ref LL_APB2_GRP1_PERIPH_LTDC (*)
  1600. * @arg @ref LL_APB2_GRP1_PERIPH_DSI (*)
  1601. *
  1602. * (*) value not defined in all devices.
  1603. * @retval None
  1604. */
  1605. __STATIC_INLINE void LL_APB2_GRP1_EnableClock(uint32_t Periphs)
  1606. {
  1607. __IO uint32_t tmpreg;
  1608. SET_BIT(RCC->APB2ENR, Periphs);
  1609. /* Delay after an RCC peripheral clock enabling */
  1610. tmpreg = READ_BIT(RCC->APB2ENR, Periphs);
  1611. (void)tmpreg;
  1612. }
  1613. /**
  1614. * @brief Check if APB2 peripheral clock is enabled or not
  1615. * @rmtoll APB2ENR SYSCFGEN LL_APB2_GRP1_IsEnabledClock\n
  1616. * APB2ENR FWEN LL_APB2_GRP1_IsEnabledClock\n
  1617. * APB2ENR SDMMC1EN LL_APB2_GRP1_IsEnabledClock\n
  1618. * APB2ENR TIM1EN LL_APB2_GRP1_IsEnabledClock\n
  1619. * APB2ENR SPI1EN LL_APB2_GRP1_IsEnabledClock\n
  1620. * APB2ENR TIM8EN LL_APB2_GRP1_IsEnabledClock\n
  1621. * APB2ENR USART1EN LL_APB2_GRP1_IsEnabledClock\n
  1622. * APB2ENR TIM15EN LL_APB2_GRP1_IsEnabledClock\n
  1623. * APB2ENR TIM16EN LL_APB2_GRP1_IsEnabledClock\n
  1624. * APB2ENR TIM17EN LL_APB2_GRP1_IsEnabledClock\n
  1625. * APB2ENR SAI1EN LL_APB2_GRP1_IsEnabledClock\n
  1626. * APB2ENR SAI2EN LL_APB2_GRP1_IsEnabledClock\n
  1627. * APB2ENR DFSDM1EN LL_APB2_GRP1_IsEnabledClock\n
  1628. * APB2ENR LTDCEN LL_APB2_GRP1_IsEnabledClock\n
  1629. * APB2ENR DSIEN LL_APB2_GRP1_IsEnabledClock
  1630. * @param Periphs This parameter can be a combination of the following values:
  1631. * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG
  1632. * @arg @ref LL_APB2_GRP1_PERIPH_FW
  1633. * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC1 (*)
  1634. * @arg @ref LL_APB2_GRP1_PERIPH_TIM1
  1635. * @arg @ref LL_APB2_GRP1_PERIPH_SPI1
  1636. * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 (*)
  1637. * @arg @ref LL_APB2_GRP1_PERIPH_USART1
  1638. * @arg @ref LL_APB2_GRP1_PERIPH_TIM15
  1639. * @arg @ref LL_APB2_GRP1_PERIPH_TIM16
  1640. * @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*)
  1641. * @arg @ref LL_APB2_GRP1_PERIPH_SAI1
  1642. * @arg @ref LL_APB2_GRP1_PERIPH_SAI2 (*)
  1643. * @arg @ref LL_APB2_GRP1_PERIPH_DFSDM1 (*)
  1644. * @arg @ref LL_APB2_GRP1_PERIPH_LTDC (*)
  1645. * @arg @ref LL_APB2_GRP1_PERIPH_DSI (*)
  1646. *
  1647. * (*) value not defined in all devices.
  1648. * @retval State of Periphs (1 or 0).
  1649. */
  1650. __STATIC_INLINE uint32_t LL_APB2_GRP1_IsEnabledClock(uint32_t Periphs)
  1651. {
  1652. return ((READ_BIT(RCC->APB2ENR, Periphs) == Periphs) ? 1UL : 0UL);
  1653. }
  1654. /**
  1655. * @brief Disable APB2 peripherals clock.
  1656. * @rmtoll APB2ENR SYSCFGEN LL_APB2_GRP1_DisableClock\n
  1657. * APB2ENR SDMMC1EN LL_APB2_GRP1_DisableClock\n
  1658. * APB2ENR TIM1EN LL_APB2_GRP1_DisableClock\n
  1659. * APB2ENR SPI1EN LL_APB2_GRP1_DisableClock\n
  1660. * APB2ENR TIM8EN LL_APB2_GRP1_DisableClock\n
  1661. * APB2ENR USART1EN LL_APB2_GRP1_DisableClock\n
  1662. * APB2ENR TIM15EN LL_APB2_GRP1_DisableClock\n
  1663. * APB2ENR TIM16EN LL_APB2_GRP1_DisableClock\n
  1664. * APB2ENR TIM17EN LL_APB2_GRP1_DisableClock\n
  1665. * APB2ENR SAI1EN LL_APB2_GRP1_DisableClock\n
  1666. * APB2ENR SAI2EN LL_APB2_GRP1_DisableClock\n
  1667. * APB2ENR DFSDM1EN LL_APB2_GRP1_DisableClock\n
  1668. * APB2ENR LTDCEN LL_APB2_GRP1_DisableClock\n
  1669. * APB2ENR DSIEN LL_APB2_GRP1_DisableClock
  1670. * @param Periphs This parameter can be a combination of the following values:
  1671. * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG
  1672. * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC1 (*)
  1673. * @arg @ref LL_APB2_GRP1_PERIPH_TIM1
  1674. * @arg @ref LL_APB2_GRP1_PERIPH_SPI1
  1675. * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 (*)
  1676. * @arg @ref LL_APB2_GRP1_PERIPH_USART1
  1677. * @arg @ref LL_APB2_GRP1_PERIPH_TIM15
  1678. * @arg @ref LL_APB2_GRP1_PERIPH_TIM16
  1679. * @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*)
  1680. * @arg @ref LL_APB2_GRP1_PERIPH_SAI1
  1681. * @arg @ref LL_APB2_GRP1_PERIPH_SAI2 (*)
  1682. * @arg @ref LL_APB2_GRP1_PERIPH_DFSDM1 (*)
  1683. * @arg @ref LL_APB2_GRP1_PERIPH_LTDC (*)
  1684. * @arg @ref LL_APB2_GRP1_PERIPH_DSI (*)
  1685. *
  1686. * (*) value not defined in all devices.
  1687. * @retval None
  1688. */
  1689. __STATIC_INLINE void LL_APB2_GRP1_DisableClock(uint32_t Periphs)
  1690. {
  1691. CLEAR_BIT(RCC->APB2ENR, Periphs);
  1692. }
  1693. /**
  1694. * @brief Force APB2 peripherals reset.
  1695. * @rmtoll APB2RSTR SYSCFGRST LL_APB2_GRP1_ForceReset\n
  1696. * APB2RSTR SDMMC1RST LL_APB2_GRP1_ForceReset\n
  1697. * APB2RSTR TIM1RST LL_APB2_GRP1_ForceReset\n
  1698. * APB2RSTR SPI1RST LL_APB2_GRP1_ForceReset\n
  1699. * APB2RSTR TIM8RST LL_APB2_GRP1_ForceReset\n
  1700. * APB2RSTR USART1RST LL_APB2_GRP1_ForceReset\n
  1701. * APB2RSTR TIM15RST LL_APB2_GRP1_ForceReset\n
  1702. * APB2RSTR TIM16RST LL_APB2_GRP1_ForceReset\n
  1703. * APB2RSTR TIM17RST LL_APB2_GRP1_ForceReset\n
  1704. * APB2RSTR SAI1RST LL_APB2_GRP1_ForceReset\n
  1705. * APB2RSTR SAI2RST LL_APB2_GRP1_ForceReset\n
  1706. * APB2RSTR DFSDM1RST LL_APB2_GRP1_ForceReset\n
  1707. * APB2RSTR LTDCRST LL_APB2_GRP1_ForceReset\n
  1708. * APB2RSTR DSIRST LL_APB2_GRP1_ForceReset
  1709. * @param Periphs This parameter can be a combination of the following values:
  1710. * @arg @ref LL_APB2_GRP1_PERIPH_ALL
  1711. * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG
  1712. * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC1 (*)
  1713. * @arg @ref LL_APB2_GRP1_PERIPH_TIM1
  1714. * @arg @ref LL_APB2_GRP1_PERIPH_SPI1
  1715. * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 (*)
  1716. * @arg @ref LL_APB2_GRP1_PERIPH_USART1
  1717. * @arg @ref LL_APB2_GRP1_PERIPH_TIM15
  1718. * @arg @ref LL_APB2_GRP1_PERIPH_TIM16
  1719. * @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*)
  1720. * @arg @ref LL_APB2_GRP1_PERIPH_SAI1
  1721. * @arg @ref LL_APB2_GRP1_PERIPH_SAI2 (*)
  1722. * @arg @ref LL_APB2_GRP1_PERIPH_DFSDM1 (*)
  1723. * @arg @ref LL_APB2_GRP1_PERIPH_LTDC (*)
  1724. * @arg @ref LL_APB2_GRP1_PERIPH_DSI (*)
  1725. *
  1726. * (*) value not defined in all devices.
  1727. * @retval None
  1728. */
  1729. __STATIC_INLINE void LL_APB2_GRP1_ForceReset(uint32_t Periphs)
  1730. {
  1731. SET_BIT(RCC->APB2RSTR, Periphs);
  1732. }
  1733. /**
  1734. * @brief Release APB2 peripherals reset.
  1735. * @rmtoll APB2RSTR SYSCFGRST LL_APB2_GRP1_ReleaseReset\n
  1736. * APB2RSTR SDMMC1RST LL_APB2_GRP1_ReleaseReset\n
  1737. * APB2RSTR TIM1RST LL_APB2_GRP1_ReleaseReset\n
  1738. * APB2RSTR SPI1RST LL_APB2_GRP1_ReleaseReset\n
  1739. * APB2RSTR TIM8RST LL_APB2_GRP1_ReleaseReset\n
  1740. * APB2RSTR USART1RST LL_APB2_GRP1_ReleaseReset\n
  1741. * APB2RSTR TIM15RST LL_APB2_GRP1_ReleaseReset\n
  1742. * APB2RSTR TIM16RST LL_APB2_GRP1_ReleaseReset\n
  1743. * APB2RSTR TIM17RST LL_APB2_GRP1_ReleaseReset\n
  1744. * APB2RSTR SAI1RST LL_APB2_GRP1_ReleaseReset\n
  1745. * APB2RSTR SAI2RST LL_APB2_GRP1_ReleaseReset\n
  1746. * APB2RSTR DFSDM1RST LL_APB2_GRP1_ReleaseReset\n
  1747. * APB2RSTR LTDCRST LL_APB2_GRP1_ReleaseReset\n
  1748. * APB2RSTR DSIRST LL_APB2_GRP1_ReleaseReset
  1749. * @param Periphs This parameter can be a combination of the following values:
  1750. * @arg @ref LL_APB2_GRP1_PERIPH_ALL
  1751. * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG
  1752. * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC1 (*)
  1753. * @arg @ref LL_APB2_GRP1_PERIPH_TIM1
  1754. * @arg @ref LL_APB2_GRP1_PERIPH_SPI1
  1755. * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 (*)
  1756. * @arg @ref LL_APB2_GRP1_PERIPH_USART1
  1757. * @arg @ref LL_APB2_GRP1_PERIPH_TIM15
  1758. * @arg @ref LL_APB2_GRP1_PERIPH_TIM16
  1759. * @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*)
  1760. * @arg @ref LL_APB2_GRP1_PERIPH_SAI1
  1761. * @arg @ref LL_APB2_GRP1_PERIPH_SAI2 (*)
  1762. * @arg @ref LL_APB2_GRP1_PERIPH_DFSDM1 (*)
  1763. * @arg @ref LL_APB2_GRP1_PERIPH_LTDC (*)
  1764. * @arg @ref LL_APB2_GRP1_PERIPH_DSI (*)
  1765. *
  1766. * (*) value not defined in all devices.
  1767. * @retval None
  1768. */
  1769. __STATIC_INLINE void LL_APB2_GRP1_ReleaseReset(uint32_t Periphs)
  1770. {
  1771. CLEAR_BIT(RCC->APB2RSTR, Periphs);
  1772. }
  1773. /**
  1774. * @brief Enable APB2 peripheral clocks in Sleep and Stop modes
  1775. * @rmtoll APB2SMENR SYSCFGSMEN LL_APB2_GRP1_EnableClockStopSleep\n
  1776. * APB2SMENR SDMMC1SMEN LL_APB2_GRP1_EnableClockStopSleep\n
  1777. * APB2SMENR TIM1SMEN LL_APB2_GRP1_EnableClockStopSleep\n
  1778. * APB2SMENR SPI1SMEN LL_APB2_GRP1_EnableClockStopSleep\n
  1779. * APB2SMENR TIM8SMEN LL_APB2_GRP1_EnableClockStopSleep\n
  1780. * APB2SMENR USART1SMEN LL_APB2_GRP1_EnableClockStopSleep\n
  1781. * APB2SMENR TIM15SMEN LL_APB2_GRP1_EnableClockStopSleep\n
  1782. * APB2SMENR TIM16SMEN LL_APB2_GRP1_EnableClockStopSleep\n
  1783. * APB2SMENR TIM17SMEN LL_APB2_GRP1_EnableClockStopSleep\n
  1784. * APB2SMENR SAI1SMEN LL_APB2_GRP1_EnableClockStopSleep\n
  1785. * APB2SMENR SAI2SMEN LL_APB2_GRP1_EnableClockStopSleep\n
  1786. * APB2SMENR DFSDM1SMEN LL_APB2_GRP1_EnableClockStopSleep\n
  1787. * APB2SMENR LTDCSMEN LL_APB2_GRP1_EnableClockStopSleep\n
  1788. * APB2SMENR DSISMEN LL_APB2_GRP1_EnableClockStopSleep
  1789. * @param Periphs This parameter can be a combination of the following values:
  1790. * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG
  1791. * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC1 (*)
  1792. * @arg @ref LL_APB2_GRP1_PERIPH_TIM1
  1793. * @arg @ref LL_APB2_GRP1_PERIPH_SPI1
  1794. * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 (*)
  1795. * @arg @ref LL_APB2_GRP1_PERIPH_USART1
  1796. * @arg @ref LL_APB2_GRP1_PERIPH_TIM15
  1797. * @arg @ref LL_APB2_GRP1_PERIPH_TIM16
  1798. * @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*)
  1799. * @arg @ref LL_APB2_GRP1_PERIPH_SAI1
  1800. * @arg @ref LL_APB2_GRP1_PERIPH_SAI2 (*)
  1801. * @arg @ref LL_APB2_GRP1_PERIPH_DFSDM1 (*)
  1802. * @arg @ref LL_APB2_GRP1_PERIPH_LTDC (*)
  1803. * @arg @ref LL_APB2_GRP1_PERIPH_DSI (*)
  1804. *
  1805. * (*) value not defined in all devices.
  1806. * @retval None
  1807. */
  1808. __STATIC_INLINE void LL_APB2_GRP1_EnableClockStopSleep(uint32_t Periphs)
  1809. {
  1810. __IO uint32_t tmpreg;
  1811. SET_BIT(RCC->APB2SMENR, Periphs);
  1812. /* Delay after an RCC peripheral clock enabling */
  1813. tmpreg = READ_BIT(RCC->APB2SMENR, Periphs);
  1814. (void)tmpreg;
  1815. }
  1816. /**
  1817. * @brief Disable APB2 peripheral clocks in Sleep and Stop modes
  1818. * @rmtoll APB2SMENR SYSCFGSMEN LL_APB2_GRP1_DisableClockStopSleep\n
  1819. * APB2SMENR SDMMC1SMEN LL_APB2_GRP1_DisableClockStopSleep\n
  1820. * APB2SMENR TIM1SMEN LL_APB2_GRP1_DisableClockStopSleep\n
  1821. * APB2SMENR SPI1SMEN LL_APB2_GRP1_DisableClockStopSleep\n
  1822. * APB2SMENR TIM8SMEN LL_APB2_GRP1_DisableClockStopSleep\n
  1823. * APB2SMENR USART1SMEN LL_APB2_GRP1_DisableClockStopSleep\n
  1824. * APB2SMENR TIM15SMEN LL_APB2_GRP1_DisableClockStopSleep\n
  1825. * APB2SMENR TIM16SMEN LL_APB2_GRP1_DisableClockStopSleep\n
  1826. * APB2SMENR TIM17SMEN LL_APB2_GRP1_DisableClockStopSleep\n
  1827. * APB2SMENR SAI1SMEN LL_APB2_GRP1_DisableClockStopSleep\n
  1828. * APB2SMENR SAI2SMEN LL_APB2_GRP1_DisableClockStopSleep\n
  1829. * APB2SMENR DFSDM1SMEN LL_APB2_GRP1_DisableClockStopSleep\n
  1830. * APB2SMENR LTDCSMEN LL_APB2_GRP1_DisableClockStopSleep\n
  1831. * APB2SMENR DSISMEN LL_APB2_GRP1_DisableClockStopSleep
  1832. * @param Periphs This parameter can be a combination of the following values:
  1833. * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG
  1834. * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC1 (*)
  1835. * @arg @ref LL_APB2_GRP1_PERIPH_TIM1
  1836. * @arg @ref LL_APB2_GRP1_PERIPH_SPI1
  1837. * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 (*)
  1838. * @arg @ref LL_APB2_GRP1_PERIPH_USART1
  1839. * @arg @ref LL_APB2_GRP1_PERIPH_TIM15
  1840. * @arg @ref LL_APB2_GRP1_PERIPH_TIM16
  1841. * @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*)
  1842. * @arg @ref LL_APB2_GRP1_PERIPH_SAI1
  1843. * @arg @ref LL_APB2_GRP1_PERIPH_SAI2 (*)
  1844. * @arg @ref LL_APB2_GRP1_PERIPH_DFSDM1 (*)
  1845. * @arg @ref LL_APB2_GRP1_PERIPH_LTDC (*)
  1846. * @arg @ref LL_APB2_GRP1_PERIPH_DSI (*)
  1847. *
  1848. * (*) value not defined in all devices.
  1849. * @retval None
  1850. */
  1851. __STATIC_INLINE void LL_APB2_GRP1_DisableClockStopSleep(uint32_t Periphs)
  1852. {
  1853. CLEAR_BIT(RCC->APB2SMENR, Periphs);
  1854. }
  1855. /**
  1856. * @}
  1857. */
  1858. /**
  1859. * @}
  1860. */
  1861. /**
  1862. * @}
  1863. */
  1864. #endif /* defined(RCC) */
  1865. /**
  1866. * @}
  1867. */
  1868. #ifdef __cplusplus
  1869. }
  1870. #endif
  1871. #endif /* STM32L4xx_LL_BUS_H */