STM32F103xB HAL User Manual
stm32f1xx_ll_bus.h
Go to the documentation of this file.
00001 /**
00002   ******************************************************************************
00003   * @file    stm32f1xx_ll_bus.h
00004   * @author  MCD Application Team
00005   * @brief   Header file of BUS LL module.
00006 
00007   @verbatim
00008                       ##### RCC Limitations #####
00009   ==============================================================================
00010     [..]
00011       A delay between an RCC peripheral clock enable and the effective peripheral
00012       enabling should be taken into account in order to manage the peripheral read/write
00013       from/to registers.
00014       (+) This delay depends on the peripheral mapping.
00015         (++) AHB & APB peripherals, 1 dummy read is necessary
00016 
00017     [..]
00018       Workarounds:
00019       (#) For AHB & APB peripherals, a dummy read to the peripheral register has been
00020           inserted in each LL_{BUS}_GRP{x}_EnableClock() function.
00021 
00022   @endverbatim
00023   ******************************************************************************
00024   * @attention
00025   *
00026   * <h2><center>&copy; Copyright (c) 2016 STMicroelectronics.
00027   * All rights reserved.</center></h2>
00028   *
00029   * This software component is licensed by ST under BSD 3-Clause license,
00030   * the "License"; You may not use this file except in compliance with the
00031   * License. You may obtain a copy of the License at:
00032   *                        opensource.org/licenses/BSD-3-Clause
00033   *
00034   ******************************************************************************
00035   */
00036 
00037 /* Define to prevent recursive inclusion -------------------------------------*/
00038 #ifndef __STM32F1xx_LL_BUS_H
00039 #define __STM32F1xx_LL_BUS_H
00040 
00041 #ifdef __cplusplus
00042 extern "C" {
00043 #endif
00044 
00045 /* Includes ------------------------------------------------------------------*/
00046 #include "stm32f1xx.h"
00047 
00048 /** @addtogroup STM32F1xx_LL_Driver
00049   * @{
00050   */
00051 
00052 #if defined(RCC)
00053 
00054 /** @defgroup BUS_LL BUS
00055   * @{
00056   */
00057 
00058 /* Private types -------------------------------------------------------------*/
00059 /* Private variables ---------------------------------------------------------*/
00060 
00061 /* Private constants ---------------------------------------------------------*/
00062 #if defined(RCC_AHBRSTR_OTGFSRST) || defined(RCC_AHBRSTR_ETHMACRST)
00063 #define RCC_AHBRSTR_SUPPORT
00064 #endif /* RCC_AHBRSTR_OTGFSRST || RCC_AHBRSTR_ETHMACRST */
00065 
00066 /* Private macros ------------------------------------------------------------*/
00067 
00068 /* Exported types ------------------------------------------------------------*/
00069 /* Exported constants --------------------------------------------------------*/
00070 /** @defgroup BUS_LL_Exported_Constants BUS Exported Constants
00071   * @{
00072   */
00073 
00074 /** @defgroup BUS_LL_EC_AHB1_GRP1_PERIPH  AHB1 GRP1 PERIPH
00075   * @{
00076   */
00077 #define LL_AHB1_GRP1_PERIPH_ALL            (uint32_t)0xFFFFFFFFU
00078 #define LL_AHB1_GRP1_PERIPH_CRC            RCC_AHBENR_CRCEN
00079 #define LL_AHB1_GRP1_PERIPH_DMA1           RCC_AHBENR_DMA1EN
00080 #if defined(DMA2)
00081 #define LL_AHB1_GRP1_PERIPH_DMA2           RCC_AHBENR_DMA2EN
00082 #endif /*DMA2*/
00083 #if defined(ETH)
00084 #define LL_AHB1_GRP1_PERIPH_ETHMAC         RCC_AHBENR_ETHMACEN
00085 #define LL_AHB1_GRP1_PERIPH_ETHMACRX       RCC_AHBENR_ETHMACRXEN
00086 #define LL_AHB1_GRP1_PERIPH_ETHMACTX       RCC_AHBENR_ETHMACTXEN
00087 #endif /*ETH*/
00088 #define LL_AHB1_GRP1_PERIPH_FLASH          RCC_AHBENR_FLITFEN
00089 #if defined(FSMC_Bank1)
00090 #define LL_AHB1_GRP1_PERIPH_FSMC           RCC_AHBENR_FSMCEN
00091 #endif /*FSMC_Bank1*/
00092 #if defined(USB_OTG_FS)
00093 #define LL_AHB1_GRP1_PERIPH_OTGFS          RCC_AHBENR_OTGFSEN
00094 #endif /*USB_OTG_FS*/
00095 #if defined(SDIO)
00096 #define LL_AHB1_GRP1_PERIPH_SDIO           RCC_AHBENR_SDIOEN
00097 #endif /*SDIO*/
00098 #define LL_AHB1_GRP1_PERIPH_SRAM           RCC_AHBENR_SRAMEN
00099 /**
00100   * @}
00101   */
00102 
00103 /** @defgroup BUS_LL_EC_APB1_GRP1_PERIPH  APB1 GRP1 PERIPH
00104   * @{
00105   */
00106 #define LL_APB1_GRP1_PERIPH_ALL            (uint32_t)0xFFFFFFFFU
00107 #define LL_APB1_GRP1_PERIPH_BKP            RCC_APB1ENR_BKPEN
00108 #if defined(CAN1)
00109 #define LL_APB1_GRP1_PERIPH_CAN1           RCC_APB1ENR_CAN1EN
00110 #endif /*CAN1*/
00111 #if defined(CAN2)
00112 #define LL_APB1_GRP1_PERIPH_CAN2           RCC_APB1ENR_CAN2EN
00113 #endif /*CAN2*/
00114 #if defined(CEC)
00115 #define LL_APB1_GRP1_PERIPH_CEC            RCC_APB1ENR_CECEN
00116 #endif /*CEC*/
00117 #if defined(DAC)
00118 #define LL_APB1_GRP1_PERIPH_DAC1           RCC_APB1ENR_DACEN
00119 #endif /*DAC*/
00120 #define LL_APB1_GRP1_PERIPH_I2C1           RCC_APB1ENR_I2C1EN
00121 #if defined(I2C2)
00122 #define LL_APB1_GRP1_PERIPH_I2C2           RCC_APB1ENR_I2C2EN
00123 #endif /*I2C2*/
00124 #define LL_APB1_GRP1_PERIPH_PWR            RCC_APB1ENR_PWREN
00125 #if defined(SPI2)
00126 #define LL_APB1_GRP1_PERIPH_SPI2           RCC_APB1ENR_SPI2EN
00127 #endif /*SPI2*/
00128 #if defined(SPI3)
00129 #define LL_APB1_GRP1_PERIPH_SPI3           RCC_APB1ENR_SPI3EN
00130 #endif /*SPI3*/
00131 #if defined(TIM12)
00132 #define LL_APB1_GRP1_PERIPH_TIM12          RCC_APB1ENR_TIM12EN
00133 #endif /*TIM12*/
00134 #if defined(TIM13)
00135 #define LL_APB1_GRP1_PERIPH_TIM13          RCC_APB1ENR_TIM13EN
00136 #endif /*TIM13*/
00137 #if defined(TIM14)
00138 #define LL_APB1_GRP1_PERIPH_TIM14          RCC_APB1ENR_TIM14EN
00139 #endif /*TIM14*/
00140 #define LL_APB1_GRP1_PERIPH_TIM2           RCC_APB1ENR_TIM2EN
00141 #define LL_APB1_GRP1_PERIPH_TIM3           RCC_APB1ENR_TIM3EN
00142 #if defined(TIM4)
00143 #define LL_APB1_GRP1_PERIPH_TIM4           RCC_APB1ENR_TIM4EN
00144 #endif /*TIM4*/
00145 #if defined(TIM5)
00146 #define LL_APB1_GRP1_PERIPH_TIM5           RCC_APB1ENR_TIM5EN
00147 #endif /*TIM5*/
00148 #if defined(TIM6)
00149 #define LL_APB1_GRP1_PERIPH_TIM6           RCC_APB1ENR_TIM6EN
00150 #endif /*TIM6*/
00151 #if defined(TIM7)
00152 #define LL_APB1_GRP1_PERIPH_TIM7           RCC_APB1ENR_TIM7EN
00153 #endif /*TIM7*/
00154 #if defined(UART4)
00155 #define LL_APB1_GRP1_PERIPH_UART4          RCC_APB1ENR_UART4EN
00156 #endif /*UART4*/
00157 #if defined(UART5)
00158 #define LL_APB1_GRP1_PERIPH_UART5          RCC_APB1ENR_UART5EN
00159 #endif /*UART5*/
00160 #define LL_APB1_GRP1_PERIPH_USART2         RCC_APB1ENR_USART2EN
00161 #if defined(USART3)
00162 #define LL_APB1_GRP1_PERIPH_USART3         RCC_APB1ENR_USART3EN
00163 #endif /*USART3*/
00164 #if defined(USB)
00165 #define LL_APB1_GRP1_PERIPH_USB            RCC_APB1ENR_USBEN
00166 #endif /*USB*/
00167 #define LL_APB1_GRP1_PERIPH_WWDG           RCC_APB1ENR_WWDGEN
00168 /**
00169   * @}
00170   */
00171 
00172 /** @defgroup BUS_LL_EC_APB2_GRP1_PERIPH  APB2 GRP1 PERIPH
00173   * @{
00174   */
00175 #define LL_APB2_GRP1_PERIPH_ALL            (uint32_t)0xFFFFFFFFU
00176 #define LL_APB2_GRP1_PERIPH_ADC1           RCC_APB2ENR_ADC1EN
00177 #if defined(ADC2)
00178 #define LL_APB2_GRP1_PERIPH_ADC2           RCC_APB2ENR_ADC2EN
00179 #endif /*ADC2*/
00180 #if defined(ADC3)
00181 #define LL_APB2_GRP1_PERIPH_ADC3           RCC_APB2ENR_ADC3EN
00182 #endif /*ADC3*/
00183 #define LL_APB2_GRP1_PERIPH_AFIO           RCC_APB2ENR_AFIOEN
00184 #define LL_APB2_GRP1_PERIPH_GPIOA          RCC_APB2ENR_IOPAEN
00185 #define LL_APB2_GRP1_PERIPH_GPIOB          RCC_APB2ENR_IOPBEN
00186 #define LL_APB2_GRP1_PERIPH_GPIOC          RCC_APB2ENR_IOPCEN
00187 #define LL_APB2_GRP1_PERIPH_GPIOD          RCC_APB2ENR_IOPDEN
00188 #if defined(GPIOE)
00189 #define LL_APB2_GRP1_PERIPH_GPIOE          RCC_APB2ENR_IOPEEN
00190 #endif /*GPIOE*/
00191 #if defined(GPIOF)
00192 #define LL_APB2_GRP1_PERIPH_GPIOF          RCC_APB2ENR_IOPFEN
00193 #endif /*GPIOF*/
00194 #if defined(GPIOG)
00195 #define LL_APB2_GRP1_PERIPH_GPIOG          RCC_APB2ENR_IOPGEN
00196 #endif /*GPIOG*/
00197 #define LL_APB2_GRP1_PERIPH_SPI1           RCC_APB2ENR_SPI1EN
00198 #if defined(TIM10)
00199 #define LL_APB2_GRP1_PERIPH_TIM10          RCC_APB2ENR_TIM10EN
00200 #endif /*TIM10*/
00201 #if defined(TIM11)
00202 #define LL_APB2_GRP1_PERIPH_TIM11          RCC_APB2ENR_TIM11EN
00203 #endif /*TIM11*/
00204 #if defined(TIM15)
00205 #define LL_APB2_GRP1_PERIPH_TIM15          RCC_APB2ENR_TIM15EN
00206 #endif /*TIM15*/
00207 #if defined(TIM16)
00208 #define LL_APB2_GRP1_PERIPH_TIM16          RCC_APB2ENR_TIM16EN
00209 #endif /*TIM16*/
00210 #if defined(TIM17)
00211 #define LL_APB2_GRP1_PERIPH_TIM17          RCC_APB2ENR_TIM17EN
00212 #endif /*TIM17*/
00213 #define LL_APB2_GRP1_PERIPH_TIM1           RCC_APB2ENR_TIM1EN
00214 #if defined(TIM8)
00215 #define LL_APB2_GRP1_PERIPH_TIM8           RCC_APB2ENR_TIM8EN
00216 #endif /*TIM8*/
00217 #if defined(TIM9)
00218 #define LL_APB2_GRP1_PERIPH_TIM9           RCC_APB2ENR_TIM9EN
00219 #endif /*TIM9*/
00220 #define LL_APB2_GRP1_PERIPH_USART1         RCC_APB2ENR_USART1EN
00221 /**
00222   * @}
00223   */
00224 
00225 /**
00226   * @}
00227   */
00228 
00229 /* Exported macro ------------------------------------------------------------*/
00230 
00231 /* Exported functions --------------------------------------------------------*/
00232 /** @defgroup BUS_LL_Exported_Functions BUS Exported Functions
00233   * @{
00234   */
00235 
00236 /** @defgroup BUS_LL_EF_AHB1 AHB1
00237   * @{
00238   */
00239 
00240 /**
00241   * @brief  Enable AHB1 peripherals clock.
00242   * @rmtoll AHBENR       CRCEN         LL_AHB1_GRP1_EnableClock\n
00243   *         AHBENR       DMA1EN        LL_AHB1_GRP1_EnableClock\n
00244   *         AHBENR       DMA2EN        LL_AHB1_GRP1_EnableClock\n
00245   *         AHBENR       ETHMACEN      LL_AHB1_GRP1_EnableClock\n
00246   *         AHBENR       ETHMACRXEN    LL_AHB1_GRP1_EnableClock\n
00247   *         AHBENR       ETHMACTXEN    LL_AHB1_GRP1_EnableClock\n
00248   *         AHBENR       FLITFEN       LL_AHB1_GRP1_EnableClock\n
00249   *         AHBENR       FSMCEN        LL_AHB1_GRP1_EnableClock\n
00250   *         AHBENR       OTGFSEN       LL_AHB1_GRP1_EnableClock\n
00251   *         AHBENR       SDIOEN        LL_AHB1_GRP1_EnableClock\n
00252   *         AHBENR       SRAMEN        LL_AHB1_GRP1_EnableClock
00253   * @param  Periphs This parameter can be a combination of the following values:
00254   *         @arg @ref LL_AHB1_GRP1_PERIPH_CRC
00255   *         @arg @ref LL_AHB1_GRP1_PERIPH_DMA1
00256   *         @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 (*)
00257   *         @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*)
00258   *         @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*)
00259   *         @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*)
00260   *         @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
00261   *         @arg @ref LL_AHB1_GRP1_PERIPH_FSMC (*)
00262   *         @arg @ref LL_AHB1_GRP1_PERIPH_OTGFS (*)
00263   *         @arg @ref LL_AHB1_GRP1_PERIPH_SDIO (*)
00264   *         @arg @ref LL_AHB1_GRP1_PERIPH_SRAM
00265   *
00266   *         (*) value not defined in all devices.
00267   * @retval None
00268 */
00269 __STATIC_INLINE void LL_AHB1_GRP1_EnableClock(uint32_t Periphs)
00270 {
00271   __IO uint32_t tmpreg;
00272   SET_BIT(RCC->AHBENR, Periphs);
00273   /* Delay after an RCC peripheral clock enabling */
00274   tmpreg = READ_BIT(RCC->AHBENR, Periphs);
00275   (void)tmpreg;
00276 }
00277 
00278 /**
00279   * @brief  Check if AHB1 peripheral clock is enabled or not
00280   * @rmtoll AHBENR       CRCEN         LL_AHB1_GRP1_IsEnabledClock\n
00281   *         AHBENR       DMA1EN        LL_AHB1_GRP1_IsEnabledClock\n
00282   *         AHBENR       DMA2EN        LL_AHB1_GRP1_IsEnabledClock\n
00283   *         AHBENR       ETHMACEN      LL_AHB1_GRP1_IsEnabledClock\n
00284   *         AHBENR       ETHMACRXEN    LL_AHB1_GRP1_IsEnabledClock\n
00285   *         AHBENR       ETHMACTXEN    LL_AHB1_GRP1_IsEnabledClock\n
00286   *         AHBENR       FLITFEN       LL_AHB1_GRP1_IsEnabledClock\n
00287   *         AHBENR       FSMCEN        LL_AHB1_GRP1_IsEnabledClock\n
00288   *         AHBENR       OTGFSEN       LL_AHB1_GRP1_IsEnabledClock\n
00289   *         AHBENR       SDIOEN        LL_AHB1_GRP1_IsEnabledClock\n
00290   *         AHBENR       SRAMEN        LL_AHB1_GRP1_IsEnabledClock
00291   * @param  Periphs This parameter can be a combination of the following values:
00292   *         @arg @ref LL_AHB1_GRP1_PERIPH_CRC
00293   *         @arg @ref LL_AHB1_GRP1_PERIPH_DMA1
00294   *         @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 (*)
00295   *         @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*)
00296   *         @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*)
00297   *         @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*)
00298   *         @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
00299   *         @arg @ref LL_AHB1_GRP1_PERIPH_FSMC (*)
00300   *         @arg @ref LL_AHB1_GRP1_PERIPH_OTGFS (*)
00301   *         @arg @ref LL_AHB1_GRP1_PERIPH_SDIO (*)
00302   *         @arg @ref LL_AHB1_GRP1_PERIPH_SRAM
00303   *
00304   *         (*) value not defined in all devices.
00305   * @retval State of Periphs (1 or 0).
00306 */
00307 __STATIC_INLINE uint32_t LL_AHB1_GRP1_IsEnabledClock(uint32_t Periphs)
00308 {
00309   return (READ_BIT(RCC->AHBENR, Periphs) == Periphs);
00310 }
00311 
00312 /**
00313   * @brief  Disable AHB1 peripherals clock.
00314   * @rmtoll AHBENR       CRCEN         LL_AHB1_GRP1_DisableClock\n
00315   *         AHBENR       DMA1EN        LL_AHB1_GRP1_DisableClock\n
00316   *         AHBENR       DMA2EN        LL_AHB1_GRP1_DisableClock\n
00317   *         AHBENR       ETHMACEN      LL_AHB1_GRP1_DisableClock\n
00318   *         AHBENR       ETHMACRXEN    LL_AHB1_GRP1_DisableClock\n
00319   *         AHBENR       ETHMACTXEN    LL_AHB1_GRP1_DisableClock\n
00320   *         AHBENR       FLITFEN       LL_AHB1_GRP1_DisableClock\n
00321   *         AHBENR       FSMCEN        LL_AHB1_GRP1_DisableClock\n
00322   *         AHBENR       OTGFSEN       LL_AHB1_GRP1_DisableClock\n
00323   *         AHBENR       SDIOEN        LL_AHB1_GRP1_DisableClock\n
00324   *         AHBENR       SRAMEN        LL_AHB1_GRP1_DisableClock
00325   * @param  Periphs This parameter can be a combination of the following values:
00326   *         @arg @ref LL_AHB1_GRP1_PERIPH_CRC
00327   *         @arg @ref LL_AHB1_GRP1_PERIPH_DMA1
00328   *         @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 (*)
00329   *         @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*)
00330   *         @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*)
00331   *         @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*)
00332   *         @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
00333   *         @arg @ref LL_AHB1_GRP1_PERIPH_FSMC (*)
00334   *         @arg @ref LL_AHB1_GRP1_PERIPH_OTGFS (*)
00335   *         @arg @ref LL_AHB1_GRP1_PERIPH_SDIO (*)
00336   *         @arg @ref LL_AHB1_GRP1_PERIPH_SRAM
00337   *
00338   *         (*) value not defined in all devices.
00339   * @retval None
00340 */
00341 __STATIC_INLINE void LL_AHB1_GRP1_DisableClock(uint32_t Periphs)
00342 {
00343   CLEAR_BIT(RCC->AHBENR, Periphs);
00344 }
00345 
00346 #if defined(RCC_AHBRSTR_SUPPORT)
00347 /**
00348   * @brief  Force AHB1 peripherals reset.
00349   * @rmtoll AHBRSTR      ETHMACRST     LL_AHB1_GRP1_ForceReset\n
00350   *         AHBRSTR      OTGFSRST      LL_AHB1_GRP1_ForceReset
00351   * @param  Periphs This parameter can be a combination of the following values:
00352   *         @arg @ref LL_AHB1_GRP1_PERIPH_ALL
00353   *         @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*)
00354   *         @arg @ref LL_AHB1_GRP1_PERIPH_OTGFS (*)
00355   *
00356   *         (*) value not defined in all devices.
00357   * @retval None
00358 */
00359 __STATIC_INLINE void LL_AHB1_GRP1_ForceReset(uint32_t Periphs)
00360 {
00361   SET_BIT(RCC->AHBRSTR, Periphs);
00362 }
00363 
00364 /**
00365   * @brief  Release AHB1 peripherals reset.
00366   * @rmtoll AHBRSTR      ETHMACRST     LL_AHB1_GRP1_ReleaseReset\n
00367   *         AHBRSTR      OTGFSRST      LL_AHB1_GRP1_ReleaseReset
00368   * @param  Periphs This parameter can be a combination of the following values:
00369   *         @arg @ref LL_AHB1_GRP1_PERIPH_ALL
00370   *         @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*)
00371   *         @arg @ref LL_AHB1_GRP1_PERIPH_OTGFS (*)
00372   *
00373   *         (*) value not defined in all devices.
00374   * @retval None
00375 */
00376 __STATIC_INLINE void LL_AHB1_GRP1_ReleaseReset(uint32_t Periphs)
00377 {
00378   CLEAR_BIT(RCC->AHBRSTR, Periphs);
00379 }
00380 #endif /* RCC_AHBRSTR_SUPPORT */
00381 
00382 /**
00383   * @}
00384   */
00385 
00386 /** @defgroup BUS_LL_EF_APB1 APB1
00387   * @{
00388   */
00389 
00390 /**
00391   * @brief  Enable APB1 peripherals clock.
00392   * @rmtoll APB1ENR      BKPEN         LL_APB1_GRP1_EnableClock\n
00393   *         APB1ENR      CAN1EN        LL_APB1_GRP1_EnableClock\n
00394   *         APB1ENR      CAN2EN        LL_APB1_GRP1_EnableClock\n
00395   *         APB1ENR      CECEN         LL_APB1_GRP1_EnableClock\n
00396   *         APB1ENR      DACEN         LL_APB1_GRP1_EnableClock\n
00397   *         APB1ENR      I2C1EN        LL_APB1_GRP1_EnableClock\n
00398   *         APB1ENR      I2C2EN        LL_APB1_GRP1_EnableClock\n
00399   *         APB1ENR      PWREN         LL_APB1_GRP1_EnableClock\n
00400   *         APB1ENR      SPI2EN        LL_APB1_GRP1_EnableClock\n
00401   *         APB1ENR      SPI3EN        LL_APB1_GRP1_EnableClock\n
00402   *         APB1ENR      TIM12EN       LL_APB1_GRP1_EnableClock\n
00403   *         APB1ENR      TIM13EN       LL_APB1_GRP1_EnableClock\n
00404   *         APB1ENR      TIM14EN       LL_APB1_GRP1_EnableClock\n
00405   *         APB1ENR      TIM2EN        LL_APB1_GRP1_EnableClock\n
00406   *         APB1ENR      TIM3EN        LL_APB1_GRP1_EnableClock\n
00407   *         APB1ENR      TIM4EN        LL_APB1_GRP1_EnableClock\n
00408   *         APB1ENR      TIM5EN        LL_APB1_GRP1_EnableClock\n
00409   *         APB1ENR      TIM6EN        LL_APB1_GRP1_EnableClock\n
00410   *         APB1ENR      TIM7EN        LL_APB1_GRP1_EnableClock\n
00411   *         APB1ENR      UART4EN       LL_APB1_GRP1_EnableClock\n
00412   *         APB1ENR      UART5EN       LL_APB1_GRP1_EnableClock\n
00413   *         APB1ENR      USART2EN      LL_APB1_GRP1_EnableClock\n
00414   *         APB1ENR      USART3EN      LL_APB1_GRP1_EnableClock\n
00415   *         APB1ENR      USBEN         LL_APB1_GRP1_EnableClock\n
00416   *         APB1ENR      WWDGEN        LL_APB1_GRP1_EnableClock
00417   * @param  Periphs This parameter can be a combination of the following values:
00418   *         @arg @ref LL_APB1_GRP1_PERIPH_BKP
00419   *         @arg @ref LL_APB1_GRP1_PERIPH_CAN1 (*)
00420   *         @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*)
00421   *         @arg @ref LL_APB1_GRP1_PERIPH_CEC (*)
00422   *         @arg @ref LL_APB1_GRP1_PERIPH_DAC1 (*)
00423   *         @arg @ref LL_APB1_GRP1_PERIPH_I2C1
00424   *         @arg @ref LL_APB1_GRP1_PERIPH_I2C2 (*)
00425   *         @arg @ref LL_APB1_GRP1_PERIPH_PWR
00426   *         @arg @ref LL_APB1_GRP1_PERIPH_SPI2 (*)
00427   *         @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (*)
00428   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM12 (*)
00429   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM13 (*)
00430   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM14 (*)
00431   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM2
00432   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM3
00433   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (*)
00434   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*)
00435   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM6 (*)
00436   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM7 (*)
00437   *         @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*)
00438   *         @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*)
00439   *         @arg @ref LL_APB1_GRP1_PERIPH_USART2
00440   *         @arg @ref LL_APB1_GRP1_PERIPH_USART3 (*)
00441   *         @arg @ref LL_APB1_GRP1_PERIPH_USB (*)
00442   *         @arg @ref LL_APB1_GRP1_PERIPH_WWDG
00443   *
00444   *         (*) value not defined in all devices.
00445   * @retval None
00446 */
00447 __STATIC_INLINE void LL_APB1_GRP1_EnableClock(uint32_t Periphs)
00448 {
00449   __IO uint32_t tmpreg;
00450   SET_BIT(RCC->APB1ENR, Periphs);
00451   /* Delay after an RCC peripheral clock enabling */
00452   tmpreg = READ_BIT(RCC->APB1ENR, Periphs);
00453   (void)tmpreg;
00454 }
00455 
00456 /**
00457   * @brief  Check if APB1 peripheral clock is enabled or not
00458   * @rmtoll APB1ENR      BKPEN         LL_APB1_GRP1_IsEnabledClock\n
00459   *         APB1ENR      CAN1EN        LL_APB1_GRP1_IsEnabledClock\n
00460   *         APB1ENR      CAN2EN        LL_APB1_GRP1_IsEnabledClock\n
00461   *         APB1ENR      CECEN         LL_APB1_GRP1_IsEnabledClock\n
00462   *         APB1ENR      DACEN         LL_APB1_GRP1_IsEnabledClock\n
00463   *         APB1ENR      I2C1EN        LL_APB1_GRP1_IsEnabledClock\n
00464   *         APB1ENR      I2C2EN        LL_APB1_GRP1_IsEnabledClock\n
00465   *         APB1ENR      PWREN         LL_APB1_GRP1_IsEnabledClock\n
00466   *         APB1ENR      SPI2EN        LL_APB1_GRP1_IsEnabledClock\n
00467   *         APB1ENR      SPI3EN        LL_APB1_GRP1_IsEnabledClock\n
00468   *         APB1ENR      TIM12EN       LL_APB1_GRP1_IsEnabledClock\n
00469   *         APB1ENR      TIM13EN       LL_APB1_GRP1_IsEnabledClock\n
00470   *         APB1ENR      TIM14EN       LL_APB1_GRP1_IsEnabledClock\n
00471   *         APB1ENR      TIM2EN        LL_APB1_GRP1_IsEnabledClock\n
00472   *         APB1ENR      TIM3EN        LL_APB1_GRP1_IsEnabledClock\n
00473   *         APB1ENR      TIM4EN        LL_APB1_GRP1_IsEnabledClock\n
00474   *         APB1ENR      TIM5EN        LL_APB1_GRP1_IsEnabledClock\n
00475   *         APB1ENR      TIM6EN        LL_APB1_GRP1_IsEnabledClock\n
00476   *         APB1ENR      TIM7EN        LL_APB1_GRP1_IsEnabledClock\n
00477   *         APB1ENR      UART4EN       LL_APB1_GRP1_IsEnabledClock\n
00478   *         APB1ENR      UART5EN       LL_APB1_GRP1_IsEnabledClock\n
00479   *         APB1ENR      USART2EN      LL_APB1_GRP1_IsEnabledClock\n
00480   *         APB1ENR      USART3EN      LL_APB1_GRP1_IsEnabledClock\n
00481   *         APB1ENR      USBEN         LL_APB1_GRP1_IsEnabledClock\n
00482   *         APB1ENR      WWDGEN        LL_APB1_GRP1_IsEnabledClock
00483   * @param  Periphs This parameter can be a combination of the following values:
00484   *         @arg @ref LL_APB1_GRP1_PERIPH_BKP
00485   *         @arg @ref LL_APB1_GRP1_PERIPH_CAN1 (*)
00486   *         @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*)
00487   *         @arg @ref LL_APB1_GRP1_PERIPH_CEC (*)
00488   *         @arg @ref LL_APB1_GRP1_PERIPH_DAC1 (*)
00489   *         @arg @ref LL_APB1_GRP1_PERIPH_I2C1
00490   *         @arg @ref LL_APB1_GRP1_PERIPH_I2C2 (*)
00491   *         @arg @ref LL_APB1_GRP1_PERIPH_PWR
00492   *         @arg @ref LL_APB1_GRP1_PERIPH_SPI2 (*)
00493   *         @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (*)
00494   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM12 (*)
00495   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM13 (*)
00496   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM14 (*)
00497   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM2
00498   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM3
00499   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (*)
00500   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*)
00501   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM6 (*)
00502   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM7 (*)
00503   *         @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*)
00504   *         @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*)
00505   *         @arg @ref LL_APB1_GRP1_PERIPH_USART2
00506   *         @arg @ref LL_APB1_GRP1_PERIPH_USART3 (*)
00507   *         @arg @ref LL_APB1_GRP1_PERIPH_USB (*)
00508   *         @arg @ref LL_APB1_GRP1_PERIPH_WWDG
00509   *
00510   *         (*) value not defined in all devices.
00511   * @retval State of Periphs (1 or 0).
00512 */
00513 __STATIC_INLINE uint32_t LL_APB1_GRP1_IsEnabledClock(uint32_t Periphs)
00514 {
00515   return (READ_BIT(RCC->APB1ENR, Periphs) == Periphs);
00516 }
00517 
00518 /**
00519   * @brief  Disable APB1 peripherals clock.
00520   * @rmtoll APB1ENR      BKPEN         LL_APB1_GRP1_DisableClock\n
00521   *         APB1ENR      CAN1EN        LL_APB1_GRP1_DisableClock\n
00522   *         APB1ENR      CAN2EN        LL_APB1_GRP1_DisableClock\n
00523   *         APB1ENR      CECEN         LL_APB1_GRP1_DisableClock\n
00524   *         APB1ENR      DACEN         LL_APB1_GRP1_DisableClock\n
00525   *         APB1ENR      I2C1EN        LL_APB1_GRP1_DisableClock\n
00526   *         APB1ENR      I2C2EN        LL_APB1_GRP1_DisableClock\n
00527   *         APB1ENR      PWREN         LL_APB1_GRP1_DisableClock\n
00528   *         APB1ENR      SPI2EN        LL_APB1_GRP1_DisableClock\n
00529   *         APB1ENR      SPI3EN        LL_APB1_GRP1_DisableClock\n
00530   *         APB1ENR      TIM12EN       LL_APB1_GRP1_DisableClock\n
00531   *         APB1ENR      TIM13EN       LL_APB1_GRP1_DisableClock\n
00532   *         APB1ENR      TIM14EN       LL_APB1_GRP1_DisableClock\n
00533   *         APB1ENR      TIM2EN        LL_APB1_GRP1_DisableClock\n
00534   *         APB1ENR      TIM3EN        LL_APB1_GRP1_DisableClock\n
00535   *         APB1ENR      TIM4EN        LL_APB1_GRP1_DisableClock\n
00536   *         APB1ENR      TIM5EN        LL_APB1_GRP1_DisableClock\n
00537   *         APB1ENR      TIM6EN        LL_APB1_GRP1_DisableClock\n
00538   *         APB1ENR      TIM7EN        LL_APB1_GRP1_DisableClock\n
00539   *         APB1ENR      UART4EN       LL_APB1_GRP1_DisableClock\n
00540   *         APB1ENR      UART5EN       LL_APB1_GRP1_DisableClock\n
00541   *         APB1ENR      USART2EN      LL_APB1_GRP1_DisableClock\n
00542   *         APB1ENR      USART3EN      LL_APB1_GRP1_DisableClock\n
00543   *         APB1ENR      USBEN         LL_APB1_GRP1_DisableClock\n
00544   *         APB1ENR      WWDGEN        LL_APB1_GRP1_DisableClock
00545   * @param  Periphs This parameter can be a combination of the following values:
00546   *         @arg @ref LL_APB1_GRP1_PERIPH_BKP
00547   *         @arg @ref LL_APB1_GRP1_PERIPH_CAN1 (*)
00548   *         @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*)
00549   *         @arg @ref LL_APB1_GRP1_PERIPH_CEC (*)
00550   *         @arg @ref LL_APB1_GRP1_PERIPH_DAC1 (*)
00551   *         @arg @ref LL_APB1_GRP1_PERIPH_I2C1
00552   *         @arg @ref LL_APB1_GRP1_PERIPH_I2C2 (*)
00553   *         @arg @ref LL_APB1_GRP1_PERIPH_PWR
00554   *         @arg @ref LL_APB1_GRP1_PERIPH_SPI2 (*)
00555   *         @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (*)
00556   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM12 (*)
00557   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM13 (*)
00558   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM14 (*)
00559   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM2
00560   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM3
00561   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (*)
00562   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*)
00563   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM6 (*)
00564   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM7 (*)
00565   *         @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*)
00566   *         @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*)
00567   *         @arg @ref LL_APB1_GRP1_PERIPH_USART2
00568   *         @arg @ref LL_APB1_GRP1_PERIPH_USART3 (*)
00569   *         @arg @ref LL_APB1_GRP1_PERIPH_USB (*)
00570   *         @arg @ref LL_APB1_GRP1_PERIPH_WWDG
00571   *
00572   *         (*) value not defined in all devices.
00573   * @retval None
00574 */
00575 __STATIC_INLINE void LL_APB1_GRP1_DisableClock(uint32_t Periphs)
00576 {
00577   CLEAR_BIT(RCC->APB1ENR, Periphs);
00578 }
00579 
00580 /**
00581   * @brief  Force APB1 peripherals reset.
00582   * @rmtoll APB1RSTR     BKPRST        LL_APB1_GRP1_ForceReset\n
00583   *         APB1RSTR     CAN1RST       LL_APB1_GRP1_ForceReset\n
00584   *         APB1RSTR     CAN2RST       LL_APB1_GRP1_ForceReset\n
00585   *         APB1RSTR     CECRST        LL_APB1_GRP1_ForceReset\n
00586   *         APB1RSTR     DACRST        LL_APB1_GRP1_ForceReset\n
00587   *         APB1RSTR     I2C1RST       LL_APB1_GRP1_ForceReset\n
00588   *         APB1RSTR     I2C2RST       LL_APB1_GRP1_ForceReset\n
00589   *         APB1RSTR     PWRRST        LL_APB1_GRP1_ForceReset\n
00590   *         APB1RSTR     SPI2RST       LL_APB1_GRP1_ForceReset\n
00591   *         APB1RSTR     SPI3RST       LL_APB1_GRP1_ForceReset\n
00592   *         APB1RSTR     TIM12RST      LL_APB1_GRP1_ForceReset\n
00593   *         APB1RSTR     TIM13RST      LL_APB1_GRP1_ForceReset\n
00594   *         APB1RSTR     TIM14RST      LL_APB1_GRP1_ForceReset\n
00595   *         APB1RSTR     TIM2RST       LL_APB1_GRP1_ForceReset\n
00596   *         APB1RSTR     TIM3RST       LL_APB1_GRP1_ForceReset\n
00597   *         APB1RSTR     TIM4RST       LL_APB1_GRP1_ForceReset\n
00598   *         APB1RSTR     TIM5RST       LL_APB1_GRP1_ForceReset\n
00599   *         APB1RSTR     TIM6RST       LL_APB1_GRP1_ForceReset\n
00600   *         APB1RSTR     TIM7RST       LL_APB1_GRP1_ForceReset\n
00601   *         APB1RSTR     UART4RST      LL_APB1_GRP1_ForceReset\n
00602   *         APB1RSTR     UART5RST      LL_APB1_GRP1_ForceReset\n
00603   *         APB1RSTR     USART2RST     LL_APB1_GRP1_ForceReset\n
00604   *         APB1RSTR     USART3RST     LL_APB1_GRP1_ForceReset\n
00605   *         APB1RSTR     USBRST        LL_APB1_GRP1_ForceReset\n
00606   *         APB1RSTR     WWDGRST       LL_APB1_GRP1_ForceReset
00607   * @param  Periphs This parameter can be a combination of the following values:
00608   *         @arg @ref LL_APB1_GRP1_PERIPH_ALL
00609   *         @arg @ref LL_APB1_GRP1_PERIPH_BKP
00610   *         @arg @ref LL_APB1_GRP1_PERIPH_CAN1 (*)
00611   *         @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*)
00612   *         @arg @ref LL_APB1_GRP1_PERIPH_CEC (*)
00613   *         @arg @ref LL_APB1_GRP1_PERIPH_DAC1 (*)
00614   *         @arg @ref LL_APB1_GRP1_PERIPH_I2C1
00615   *         @arg @ref LL_APB1_GRP1_PERIPH_I2C2 (*)
00616   *         @arg @ref LL_APB1_GRP1_PERIPH_PWR
00617   *         @arg @ref LL_APB1_GRP1_PERIPH_SPI2 (*)
00618   *         @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (*)
00619   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM12 (*)
00620   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM13 (*)
00621   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM14 (*)
00622   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM2
00623   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM3
00624   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (*)
00625   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*)
00626   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM6 (*)
00627   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM7 (*)
00628   *         @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*)
00629   *         @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*)
00630   *         @arg @ref LL_APB1_GRP1_PERIPH_USART2
00631   *         @arg @ref LL_APB1_GRP1_PERIPH_USART3 (*)
00632   *         @arg @ref LL_APB1_GRP1_PERIPH_USB (*)
00633   *         @arg @ref LL_APB1_GRP1_PERIPH_WWDG
00634   *
00635   *         (*) value not defined in all devices.
00636   * @retval None
00637 */
00638 __STATIC_INLINE void LL_APB1_GRP1_ForceReset(uint32_t Periphs)
00639 {
00640   SET_BIT(RCC->APB1RSTR, Periphs);
00641 }
00642 
00643 /**
00644   * @brief  Release APB1 peripherals reset.
00645   * @rmtoll APB1RSTR     BKPRST        LL_APB1_GRP1_ReleaseReset\n
00646   *         APB1RSTR     CAN1RST       LL_APB1_GRP1_ReleaseReset\n
00647   *         APB1RSTR     CAN2RST       LL_APB1_GRP1_ReleaseReset\n
00648   *         APB1RSTR     CECRST        LL_APB1_GRP1_ReleaseReset\n
00649   *         APB1RSTR     DACRST        LL_APB1_GRP1_ReleaseReset\n
00650   *         APB1RSTR     I2C1RST       LL_APB1_GRP1_ReleaseReset\n
00651   *         APB1RSTR     I2C2RST       LL_APB1_GRP1_ReleaseReset\n
00652   *         APB1RSTR     PWRRST        LL_APB1_GRP1_ReleaseReset\n
00653   *         APB1RSTR     SPI2RST       LL_APB1_GRP1_ReleaseReset\n
00654   *         APB1RSTR     SPI3RST       LL_APB1_GRP1_ReleaseReset\n
00655   *         APB1RSTR     TIM12RST      LL_APB1_GRP1_ReleaseReset\n
00656   *         APB1RSTR     TIM13RST      LL_APB1_GRP1_ReleaseReset\n
00657   *         APB1RSTR     TIM14RST      LL_APB1_GRP1_ReleaseReset\n
00658   *         APB1RSTR     TIM2RST       LL_APB1_GRP1_ReleaseReset\n
00659   *         APB1RSTR     TIM3RST       LL_APB1_GRP1_ReleaseReset\n
00660   *         APB1RSTR     TIM4RST       LL_APB1_GRP1_ReleaseReset\n
00661   *         APB1RSTR     TIM5RST       LL_APB1_GRP1_ReleaseReset\n
00662   *         APB1RSTR     TIM6RST       LL_APB1_GRP1_ReleaseReset\n
00663   *         APB1RSTR     TIM7RST       LL_APB1_GRP1_ReleaseReset\n
00664   *         APB1RSTR     UART4RST      LL_APB1_GRP1_ReleaseReset\n
00665   *         APB1RSTR     UART5RST      LL_APB1_GRP1_ReleaseReset\n
00666   *         APB1RSTR     USART2RST     LL_APB1_GRP1_ReleaseReset\n
00667   *         APB1RSTR     USART3RST     LL_APB1_GRP1_ReleaseReset\n
00668   *         APB1RSTR     USBRST        LL_APB1_GRP1_ReleaseReset\n
00669   *         APB1RSTR     WWDGRST       LL_APB1_GRP1_ReleaseReset
00670   * @param  Periphs This parameter can be a combination of the following values:
00671   *         @arg @ref LL_APB1_GRP1_PERIPH_ALL
00672   *         @arg @ref LL_APB1_GRP1_PERIPH_BKP
00673   *         @arg @ref LL_APB1_GRP1_PERIPH_CAN1 (*)
00674   *         @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*)
00675   *         @arg @ref LL_APB1_GRP1_PERIPH_CEC (*)
00676   *         @arg @ref LL_APB1_GRP1_PERIPH_DAC1 (*)
00677   *         @arg @ref LL_APB1_GRP1_PERIPH_I2C1
00678   *         @arg @ref LL_APB1_GRP1_PERIPH_I2C2 (*)
00679   *         @arg @ref LL_APB1_GRP1_PERIPH_PWR
00680   *         @arg @ref LL_APB1_GRP1_PERIPH_SPI2 (*)
00681   *         @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (*)
00682   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM12 (*)
00683   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM13 (*)
00684   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM14 (*)
00685   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM2
00686   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM3
00687   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (*)
00688   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*)
00689   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM6 (*)
00690   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM7 (*)
00691   *         @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*)
00692   *         @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*)
00693   *         @arg @ref LL_APB1_GRP1_PERIPH_USART2
00694   *         @arg @ref LL_APB1_GRP1_PERIPH_USART3 (*)
00695   *         @arg @ref LL_APB1_GRP1_PERIPH_USB (*)
00696   *         @arg @ref LL_APB1_GRP1_PERIPH_WWDG
00697   *
00698   *         (*) value not defined in all devices.
00699   * @retval None
00700 */
00701 __STATIC_INLINE void LL_APB1_GRP1_ReleaseReset(uint32_t Periphs)
00702 {
00703   CLEAR_BIT(RCC->APB1RSTR, Periphs);
00704 }
00705 
00706 /**
00707   * @}
00708   */
00709 
00710 /** @defgroup BUS_LL_EF_APB2 APB2
00711   * @{
00712   */
00713 
00714 /**
00715   * @brief  Enable APB2 peripherals clock.
00716   * @rmtoll APB2ENR      ADC1EN        LL_APB2_GRP1_EnableClock\n
00717   *         APB2ENR      ADC2EN        LL_APB2_GRP1_EnableClock\n
00718   *         APB2ENR      ADC3EN        LL_APB2_GRP1_EnableClock\n
00719   *         APB2ENR      AFIOEN        LL_APB2_GRP1_EnableClock\n
00720   *         APB2ENR      IOPAEN        LL_APB2_GRP1_EnableClock\n
00721   *         APB2ENR      IOPBEN        LL_APB2_GRP1_EnableClock\n
00722   *         APB2ENR      IOPCEN        LL_APB2_GRP1_EnableClock\n
00723   *         APB2ENR      IOPDEN        LL_APB2_GRP1_EnableClock\n
00724   *         APB2ENR      IOPEEN        LL_APB2_GRP1_EnableClock\n
00725   *         APB2ENR      IOPFEN        LL_APB2_GRP1_EnableClock\n
00726   *         APB2ENR      IOPGEN        LL_APB2_GRP1_EnableClock\n
00727   *         APB2ENR      SPI1EN        LL_APB2_GRP1_EnableClock\n
00728   *         APB2ENR      TIM10EN       LL_APB2_GRP1_EnableClock\n
00729   *         APB2ENR      TIM11EN       LL_APB2_GRP1_EnableClock\n
00730   *         APB2ENR      TIM15EN       LL_APB2_GRP1_EnableClock\n
00731   *         APB2ENR      TIM16EN       LL_APB2_GRP1_EnableClock\n
00732   *         APB2ENR      TIM17EN       LL_APB2_GRP1_EnableClock\n
00733   *         APB2ENR      TIM1EN        LL_APB2_GRP1_EnableClock\n
00734   *         APB2ENR      TIM8EN        LL_APB2_GRP1_EnableClock\n
00735   *         APB2ENR      TIM9EN        LL_APB2_GRP1_EnableClock\n
00736   *         APB2ENR      USART1EN      LL_APB2_GRP1_EnableClock
00737   * @param  Periphs This parameter can be a combination of the following values:
00738   *         @arg @ref LL_APB2_GRP1_PERIPH_ADC1
00739   *         @arg @ref LL_APB2_GRP1_PERIPH_ADC2 (*)
00740   *         @arg @ref LL_APB2_GRP1_PERIPH_ADC3 (*)
00741   *         @arg @ref LL_APB2_GRP1_PERIPH_AFIO
00742   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOA
00743   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOB
00744   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOC
00745   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOD
00746   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOE (*)
00747   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOF (*)
00748   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOG (*)
00749   *         @arg @ref LL_APB2_GRP1_PERIPH_SPI1
00750   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM10 (*)
00751   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM11 (*)
00752   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM15 (*)
00753   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM16 (*)
00754   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*)
00755   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM1
00756   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM8 (*)
00757   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM9 (*)
00758   *         @arg @ref LL_APB2_GRP1_PERIPH_USART1
00759   *
00760   *         (*) value not defined in all devices.
00761   * @retval None
00762 */
00763 __STATIC_INLINE void LL_APB2_GRP1_EnableClock(uint32_t Periphs)
00764 {
00765   __IO uint32_t tmpreg;
00766   SET_BIT(RCC->APB2ENR, Periphs);
00767   /* Delay after an RCC peripheral clock enabling */
00768   tmpreg = READ_BIT(RCC->APB2ENR, Periphs);
00769   (void)tmpreg;
00770 }
00771 
00772 /**
00773   * @brief  Check if APB2 peripheral clock is enabled or not
00774   * @rmtoll APB2ENR      ADC1EN        LL_APB2_GRP1_IsEnabledClock\n
00775   *         APB2ENR      ADC2EN        LL_APB2_GRP1_IsEnabledClock\n
00776   *         APB2ENR      ADC3EN        LL_APB2_GRP1_IsEnabledClock\n
00777   *         APB2ENR      AFIOEN        LL_APB2_GRP1_IsEnabledClock\n
00778   *         APB2ENR      IOPAEN        LL_APB2_GRP1_IsEnabledClock\n
00779   *         APB2ENR      IOPBEN        LL_APB2_GRP1_IsEnabledClock\n
00780   *         APB2ENR      IOPCEN        LL_APB2_GRP1_IsEnabledClock\n
00781   *         APB2ENR      IOPDEN        LL_APB2_GRP1_IsEnabledClock\n
00782   *         APB2ENR      IOPEEN        LL_APB2_GRP1_IsEnabledClock\n
00783   *         APB2ENR      IOPFEN        LL_APB2_GRP1_IsEnabledClock\n
00784   *         APB2ENR      IOPGEN        LL_APB2_GRP1_IsEnabledClock\n
00785   *         APB2ENR      SPI1EN        LL_APB2_GRP1_IsEnabledClock\n
00786   *         APB2ENR      TIM10EN       LL_APB2_GRP1_IsEnabledClock\n
00787   *         APB2ENR      TIM11EN       LL_APB2_GRP1_IsEnabledClock\n
00788   *         APB2ENR      TIM15EN       LL_APB2_GRP1_IsEnabledClock\n
00789   *         APB2ENR      TIM16EN       LL_APB2_GRP1_IsEnabledClock\n
00790   *         APB2ENR      TIM17EN       LL_APB2_GRP1_IsEnabledClock\n
00791   *         APB2ENR      TIM1EN        LL_APB2_GRP1_IsEnabledClock\n
00792   *         APB2ENR      TIM8EN        LL_APB2_GRP1_IsEnabledClock\n
00793   *         APB2ENR      TIM9EN        LL_APB2_GRP1_IsEnabledClock\n
00794   *         APB2ENR      USART1EN      LL_APB2_GRP1_IsEnabledClock
00795   * @param  Periphs This parameter can be a combination of the following values:
00796   *         @arg @ref LL_APB2_GRP1_PERIPH_ADC1
00797   *         @arg @ref LL_APB2_GRP1_PERIPH_ADC2 (*)
00798   *         @arg @ref LL_APB2_GRP1_PERIPH_ADC3 (*)
00799   *         @arg @ref LL_APB2_GRP1_PERIPH_AFIO
00800   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOA
00801   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOB
00802   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOC
00803   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOD
00804   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOE (*)
00805   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOF (*)
00806   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOG (*)
00807   *         @arg @ref LL_APB2_GRP1_PERIPH_SPI1
00808   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM10 (*)
00809   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM11 (*)
00810   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM15 (*)
00811   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM16 (*)
00812   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*)
00813   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM1
00814   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM8 (*)
00815   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM9 (*)
00816   *         @arg @ref LL_APB2_GRP1_PERIPH_USART1
00817   *
00818   *         (*) value not defined in all devices.
00819   * @retval State of Periphs (1 or 0).
00820 */
00821 __STATIC_INLINE uint32_t LL_APB2_GRP1_IsEnabledClock(uint32_t Periphs)
00822 {
00823   return (READ_BIT(RCC->APB2ENR, Periphs) == Periphs);
00824 }
00825 
00826 /**
00827   * @brief  Disable APB2 peripherals clock.
00828   * @rmtoll APB2ENR      ADC1EN        LL_APB2_GRP1_DisableClock\n
00829   *         APB2ENR      ADC2EN        LL_APB2_GRP1_DisableClock\n
00830   *         APB2ENR      ADC3EN        LL_APB2_GRP1_DisableClock\n
00831   *         APB2ENR      AFIOEN        LL_APB2_GRP1_DisableClock\n
00832   *         APB2ENR      IOPAEN        LL_APB2_GRP1_DisableClock\n
00833   *         APB2ENR      IOPBEN        LL_APB2_GRP1_DisableClock\n
00834   *         APB2ENR      IOPCEN        LL_APB2_GRP1_DisableClock\n
00835   *         APB2ENR      IOPDEN        LL_APB2_GRP1_DisableClock\n
00836   *         APB2ENR      IOPEEN        LL_APB2_GRP1_DisableClock\n
00837   *         APB2ENR      IOPFEN        LL_APB2_GRP1_DisableClock\n
00838   *         APB2ENR      IOPGEN        LL_APB2_GRP1_DisableClock\n
00839   *         APB2ENR      SPI1EN        LL_APB2_GRP1_DisableClock\n
00840   *         APB2ENR      TIM10EN       LL_APB2_GRP1_DisableClock\n
00841   *         APB2ENR      TIM11EN       LL_APB2_GRP1_DisableClock\n
00842   *         APB2ENR      TIM15EN       LL_APB2_GRP1_DisableClock\n
00843   *         APB2ENR      TIM16EN       LL_APB2_GRP1_DisableClock\n
00844   *         APB2ENR      TIM17EN       LL_APB2_GRP1_DisableClock\n
00845   *         APB2ENR      TIM1EN        LL_APB2_GRP1_DisableClock\n
00846   *         APB2ENR      TIM8EN        LL_APB2_GRP1_DisableClock\n
00847   *         APB2ENR      TIM9EN        LL_APB2_GRP1_DisableClock\n
00848   *         APB2ENR      USART1EN      LL_APB2_GRP1_DisableClock
00849   * @param  Periphs This parameter can be a combination of the following values:
00850   *         @arg @ref LL_APB2_GRP1_PERIPH_ADC1
00851   *         @arg @ref LL_APB2_GRP1_PERIPH_ADC2 (*)
00852   *         @arg @ref LL_APB2_GRP1_PERIPH_ADC3 (*)
00853   *         @arg @ref LL_APB2_GRP1_PERIPH_AFIO
00854   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOA
00855   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOB
00856   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOC
00857   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOD
00858   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOE (*)
00859   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOF (*)
00860   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOG (*)
00861   *         @arg @ref LL_APB2_GRP1_PERIPH_SPI1
00862   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM10 (*)
00863   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM11 (*)
00864   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM15 (*)
00865   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM16 (*)
00866   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*)
00867   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM1
00868   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM8 (*)
00869   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM9 (*)
00870   *         @arg @ref LL_APB2_GRP1_PERIPH_USART1
00871   *
00872   *         (*) value not defined in all devices.
00873   * @retval None
00874 */
00875 __STATIC_INLINE void LL_APB2_GRP1_DisableClock(uint32_t Periphs)
00876 {
00877   CLEAR_BIT(RCC->APB2ENR, Periphs);
00878 }
00879 
00880 /**
00881   * @brief  Force APB2 peripherals reset.
00882   * @rmtoll APB2RSTR     ADC1RST       LL_APB2_GRP1_ForceReset\n
00883   *         APB2RSTR     ADC2RST       LL_APB2_GRP1_ForceReset\n
00884   *         APB2RSTR     ADC3RST       LL_APB2_GRP1_ForceReset\n
00885   *         APB2RSTR     AFIORST       LL_APB2_GRP1_ForceReset\n
00886   *         APB2RSTR     IOPARST       LL_APB2_GRP1_ForceReset\n
00887   *         APB2RSTR     IOPBRST       LL_APB2_GRP1_ForceReset\n
00888   *         APB2RSTR     IOPCRST       LL_APB2_GRP1_ForceReset\n
00889   *         APB2RSTR     IOPDRST       LL_APB2_GRP1_ForceReset\n
00890   *         APB2RSTR     IOPERST       LL_APB2_GRP1_ForceReset\n
00891   *         APB2RSTR     IOPFRST       LL_APB2_GRP1_ForceReset\n
00892   *         APB2RSTR     IOPGRST       LL_APB2_GRP1_ForceReset\n
00893   *         APB2RSTR     SPI1RST       LL_APB2_GRP1_ForceReset\n
00894   *         APB2RSTR     TIM10RST      LL_APB2_GRP1_ForceReset\n
00895   *         APB2RSTR     TIM11RST      LL_APB2_GRP1_ForceReset\n
00896   *         APB2RSTR     TIM15RST      LL_APB2_GRP1_ForceReset\n
00897   *         APB2RSTR     TIM16RST      LL_APB2_GRP1_ForceReset\n
00898   *         APB2RSTR     TIM17RST      LL_APB2_GRP1_ForceReset\n
00899   *         APB2RSTR     TIM1RST       LL_APB2_GRP1_ForceReset\n
00900   *         APB2RSTR     TIM8RST       LL_APB2_GRP1_ForceReset\n
00901   *         APB2RSTR     TIM9RST       LL_APB2_GRP1_ForceReset\n
00902   *         APB2RSTR     USART1RST     LL_APB2_GRP1_ForceReset
00903   * @param  Periphs This parameter can be a combination of the following values:
00904   *         @arg @ref LL_APB2_GRP1_PERIPH_ALL
00905   *         @arg @ref LL_APB2_GRP1_PERIPH_ADC1
00906   *         @arg @ref LL_APB2_GRP1_PERIPH_ADC2 (*)
00907   *         @arg @ref LL_APB2_GRP1_PERIPH_ADC3 (*)
00908   *         @arg @ref LL_APB2_GRP1_PERIPH_AFIO
00909   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOA
00910   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOB
00911   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOC
00912   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOD
00913   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOE (*)
00914   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOF (*)
00915   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOG (*)
00916   *         @arg @ref LL_APB2_GRP1_PERIPH_SPI1
00917   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM10 (*)
00918   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM11 (*)
00919   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM15 (*)
00920   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM16 (*)
00921   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*)
00922   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM1
00923   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM8 (*)
00924   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM9 (*)
00925   *         @arg @ref LL_APB2_GRP1_PERIPH_USART1
00926   *
00927   *         (*) value not defined in all devices.
00928   * @retval None
00929 */
00930 __STATIC_INLINE void LL_APB2_GRP1_ForceReset(uint32_t Periphs)
00931 {
00932   SET_BIT(RCC->APB2RSTR, Periphs);
00933 }
00934 
00935 /**
00936   * @brief  Release APB2 peripherals reset.
00937   * @rmtoll APB2RSTR     ADC1RST       LL_APB2_GRP1_ReleaseReset\n
00938   *         APB2RSTR     ADC2RST       LL_APB2_GRP1_ReleaseReset\n
00939   *         APB2RSTR     ADC3RST       LL_APB2_GRP1_ReleaseReset\n
00940   *         APB2RSTR     AFIORST       LL_APB2_GRP1_ReleaseReset\n
00941   *         APB2RSTR     IOPARST       LL_APB2_GRP1_ReleaseReset\n
00942   *         APB2RSTR     IOPBRST       LL_APB2_GRP1_ReleaseReset\n
00943   *         APB2RSTR     IOPCRST       LL_APB2_GRP1_ReleaseReset\n
00944   *         APB2RSTR     IOPDRST       LL_APB2_GRP1_ReleaseReset\n
00945   *         APB2RSTR     IOPERST       LL_APB2_GRP1_ReleaseReset\n
00946   *         APB2RSTR     IOPFRST       LL_APB2_GRP1_ReleaseReset\n
00947   *         APB2RSTR     IOPGRST       LL_APB2_GRP1_ReleaseReset\n
00948   *         APB2RSTR     SPI1RST       LL_APB2_GRP1_ReleaseReset\n
00949   *         APB2RSTR     TIM10RST      LL_APB2_GRP1_ReleaseReset\n
00950   *         APB2RSTR     TIM11RST      LL_APB2_GRP1_ReleaseReset\n
00951   *         APB2RSTR     TIM15RST      LL_APB2_GRP1_ReleaseReset\n
00952   *         APB2RSTR     TIM16RST      LL_APB2_GRP1_ReleaseReset\n
00953   *         APB2RSTR     TIM17RST      LL_APB2_GRP1_ReleaseReset\n
00954   *         APB2RSTR     TIM1RST       LL_APB2_GRP1_ReleaseReset\n
00955   *         APB2RSTR     TIM8RST       LL_APB2_GRP1_ReleaseReset\n
00956   *         APB2RSTR     TIM9RST       LL_APB2_GRP1_ReleaseReset\n
00957   *         APB2RSTR     USART1RST     LL_APB2_GRP1_ReleaseReset
00958   * @param  Periphs This parameter can be a combination of the following values:
00959   *         @arg @ref LL_APB2_GRP1_PERIPH_ALL
00960   *         @arg @ref LL_APB2_GRP1_PERIPH_ADC1
00961   *         @arg @ref LL_APB2_GRP1_PERIPH_ADC2 (*)
00962   *         @arg @ref LL_APB2_GRP1_PERIPH_ADC3 (*)
00963   *         @arg @ref LL_APB2_GRP1_PERIPH_AFIO
00964   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOA
00965   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOB
00966   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOC
00967   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOD
00968   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOE (*)
00969   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOF (*)
00970   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOG (*)
00971   *         @arg @ref LL_APB2_GRP1_PERIPH_SPI1
00972   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM10 (*)
00973   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM11 (*)
00974   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM15 (*)
00975   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM16 (*)
00976   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*)
00977   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM1
00978   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM8 (*)
00979   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM9 (*)
00980   *         @arg @ref LL_APB2_GRP1_PERIPH_USART1
00981   *
00982   *         (*) value not defined in all devices.
00983   * @retval None
00984 */
00985 __STATIC_INLINE void LL_APB2_GRP1_ReleaseReset(uint32_t Periphs)
00986 {
00987   CLEAR_BIT(RCC->APB2RSTR, Periphs);
00988 }
00989 
00990 /**
00991   * @}
00992   */
00993 
00994 
00995 /**
00996   * @}
00997   */
00998 
00999 /**
01000   * @}
01001   */
01002 
01003 #endif /* defined(RCC) */
01004 
01005 /**
01006   * @}
01007   */
01008 
01009 #ifdef __cplusplus
01010 }
01011 #endif
01012 
01013 #endif /* __STM32F1xx_LL_BUS_H */
01014 
01015 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/