stm32l5xx_ll_bus.h 76 KB

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