Subversion Repositories AFRtranscoder

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. /**
  2.   ******************************************************************************
  3.   * @file    stm32f1xx_ll_bus.h
  4.   * @author  MCD Application Team
  5.   * @brief   Header file of BUS LL module.
  6.  
  7.   @verbatim
  8.                       ##### RCC Limitations #####
  9.   ==============================================================================
  10.     [..]
  11.       A delay between an RCC peripheral clock enable and the effective peripheral
  12.       enabling should be taken into account in order to manage the peripheral read/write
  13.       from/to registers.
  14.       (+) This delay depends on the peripheral mapping.
  15.         (++) AHB & APB peripherals, 1 dummy read is necessary
  16.  
  17.     [..]
  18.       Workarounds:
  19.       (#) For AHB & APB peripherals, a dummy read to the peripheral register has been
  20.           inserted in each LL_{BUS}_GRP{x}_EnableClock() function.
  21.  
  22.   @endverbatim
  23.   ******************************************************************************
  24.   * @attention
  25.   *
  26.   * Copyright (c) 2016 STMicroelectronics.
  27.   * All rights reserved.
  28.   *
  29.   * This software is licensed under terms that can be found in the LICENSE file in
  30.   * the root directory of this software component.
  31.   * If no LICENSE file comes with this software, it is provided AS-IS.
  32.   ******************************************************************************
  33.   */
  34.  
  35. /* Define to prevent recursive inclusion -------------------------------------*/
  36. #ifndef __STM32F1xx_LL_BUS_H
  37. #define __STM32F1xx_LL_BUS_H
  38.  
  39. #ifdef __cplusplus
  40. extern "C" {
  41. #endif
  42.  
  43. /* Includes ------------------------------------------------------------------*/
  44. #include "stm32f1xx.h"
  45.  
  46. /** @addtogroup STM32F1xx_LL_Driver
  47.   * @{
  48.   */
  49.  
  50. #if defined(RCC)
  51.  
  52. /** @defgroup BUS_LL BUS
  53.   * @{
  54.   */
  55.  
  56. /* Private types -------------------------------------------------------------*/
  57. /* Private variables ---------------------------------------------------------*/
  58.  
  59. /* Private constants ---------------------------------------------------------*/
  60. #if defined(RCC_AHBRSTR_OTGFSRST) || defined(RCC_AHBRSTR_ETHMACRST)
  61. #define RCC_AHBRSTR_SUPPORT
  62. #endif /* RCC_AHBRSTR_OTGFSRST || RCC_AHBRSTR_ETHMACRST */
  63.  
  64. /* Private macros ------------------------------------------------------------*/
  65.  
  66. /* Exported types ------------------------------------------------------------*/
  67. /* Exported constants --------------------------------------------------------*/
  68. /** @defgroup BUS_LL_Exported_Constants BUS Exported Constants
  69.   * @{
  70.   */
  71.  
  72. /** @defgroup BUS_LL_EC_AHB1_GRP1_PERIPH  AHB1 GRP1 PERIPH
  73.   * @{
  74.   */
  75. #define LL_AHB1_GRP1_PERIPH_ALL            (uint32_t)0xFFFFFFFFU
  76. #define LL_AHB1_GRP1_PERIPH_CRC            RCC_AHBENR_CRCEN
  77. #define LL_AHB1_GRP1_PERIPH_DMA1           RCC_AHBENR_DMA1EN
  78. #if defined(DMA2)
  79. #define LL_AHB1_GRP1_PERIPH_DMA2           RCC_AHBENR_DMA2EN
  80. #endif /*DMA2*/
  81. #if defined(ETH)
  82. #define LL_AHB1_GRP1_PERIPH_ETHMAC         RCC_AHBENR_ETHMACEN
  83. #define LL_AHB1_GRP1_PERIPH_ETHMACRX       RCC_AHBENR_ETHMACRXEN
  84. #define LL_AHB1_GRP1_PERIPH_ETHMACTX       RCC_AHBENR_ETHMACTXEN
  85. #endif /*ETH*/
  86. #define LL_AHB1_GRP1_PERIPH_FLASH          RCC_AHBENR_FLITFEN
  87. #if defined(FSMC_Bank1)
  88. #define LL_AHB1_GRP1_PERIPH_FSMC           RCC_AHBENR_FSMCEN
  89. #endif /*FSMC_Bank1*/
  90. #if defined(USB_OTG_FS)
  91. #define LL_AHB1_GRP1_PERIPH_OTGFS          RCC_AHBENR_OTGFSEN
  92. #endif /*USB_OTG_FS*/
  93. #if defined(SDIO)
  94. #define LL_AHB1_GRP1_PERIPH_SDIO           RCC_AHBENR_SDIOEN
  95. #endif /*SDIO*/
  96. #define LL_AHB1_GRP1_PERIPH_SRAM           RCC_AHBENR_SRAMEN
  97. /**
  98.   * @}
  99.   */
  100.  
  101. /** @defgroup BUS_LL_EC_APB1_GRP1_PERIPH  APB1 GRP1 PERIPH
  102.   * @{
  103.   */
  104. #define LL_APB1_GRP1_PERIPH_ALL            (uint32_t)0xFFFFFFFFU
  105. #define LL_APB1_GRP1_PERIPH_BKP            RCC_APB1ENR_BKPEN
  106. #if defined(CAN1)
  107. #define LL_APB1_GRP1_PERIPH_CAN1           RCC_APB1ENR_CAN1EN
  108. #endif /*CAN1*/
  109. #if defined(CAN2)
  110. #define LL_APB1_GRP1_PERIPH_CAN2           RCC_APB1ENR_CAN2EN
  111. #endif /*CAN2*/
  112. #if defined(CEC)
  113. #define LL_APB1_GRP1_PERIPH_CEC            RCC_APB1ENR_CECEN
  114. #endif /*CEC*/
  115. #if defined(DAC)
  116. #define LL_APB1_GRP1_PERIPH_DAC1           RCC_APB1ENR_DACEN
  117. #endif /*DAC*/
  118. #define LL_APB1_GRP1_PERIPH_I2C1           RCC_APB1ENR_I2C1EN
  119. #if defined(I2C2)
  120. #define LL_APB1_GRP1_PERIPH_I2C2           RCC_APB1ENR_I2C2EN
  121. #endif /*I2C2*/
  122. #define LL_APB1_GRP1_PERIPH_PWR            RCC_APB1ENR_PWREN
  123. #if defined(SPI2)
  124. #define LL_APB1_GRP1_PERIPH_SPI2           RCC_APB1ENR_SPI2EN
  125. #endif /*SPI2*/
  126. #if defined(SPI3)
  127. #define LL_APB1_GRP1_PERIPH_SPI3           RCC_APB1ENR_SPI3EN
  128. #endif /*SPI3*/
  129. #if defined(TIM12)
  130. #define LL_APB1_GRP1_PERIPH_TIM12          RCC_APB1ENR_TIM12EN
  131. #endif /*TIM12*/
  132. #if defined(TIM13)
  133. #define LL_APB1_GRP1_PERIPH_TIM13          RCC_APB1ENR_TIM13EN
  134. #endif /*TIM13*/
  135. #if defined(TIM14)
  136. #define LL_APB1_GRP1_PERIPH_TIM14          RCC_APB1ENR_TIM14EN
  137. #endif /*TIM14*/
  138. #define LL_APB1_GRP1_PERIPH_TIM2           RCC_APB1ENR_TIM2EN
  139. #define LL_APB1_GRP1_PERIPH_TIM3           RCC_APB1ENR_TIM3EN
  140. #if defined(TIM4)
  141. #define LL_APB1_GRP1_PERIPH_TIM4           RCC_APB1ENR_TIM4EN
  142. #endif /*TIM4*/
  143. #if defined(TIM5)
  144. #define LL_APB1_GRP1_PERIPH_TIM5           RCC_APB1ENR_TIM5EN
  145. #endif /*TIM5*/
  146. #if defined(TIM6)
  147. #define LL_APB1_GRP1_PERIPH_TIM6           RCC_APB1ENR_TIM6EN
  148. #endif /*TIM6*/
  149. #if defined(TIM7)
  150. #define LL_APB1_GRP1_PERIPH_TIM7           RCC_APB1ENR_TIM7EN
  151. #endif /*TIM7*/
  152. #if defined(UART4)
  153. #define LL_APB1_GRP1_PERIPH_UART4          RCC_APB1ENR_UART4EN
  154. #endif /*UART4*/
  155. #if defined(UART5)
  156. #define LL_APB1_GRP1_PERIPH_UART5          RCC_APB1ENR_UART5EN
  157. #endif /*UART5*/
  158. #define LL_APB1_GRP1_PERIPH_USART2         RCC_APB1ENR_USART2EN
  159. #if defined(USART3)
  160. #define LL_APB1_GRP1_PERIPH_USART3         RCC_APB1ENR_USART3EN
  161. #endif /*USART3*/
  162. #if defined(USB)
  163. #define LL_APB1_GRP1_PERIPH_USB            RCC_APB1ENR_USBEN
  164. #endif /*USB*/
  165. #define LL_APB1_GRP1_PERIPH_WWDG           RCC_APB1ENR_WWDGEN
  166. /**
  167.   * @}
  168.   */
  169.  
  170. /** @defgroup BUS_LL_EC_APB2_GRP1_PERIPH  APB2 GRP1 PERIPH
  171.   * @{
  172.   */
  173. #define LL_APB2_GRP1_PERIPH_ALL            (uint32_t)0xFFFFFFFFU
  174. #define LL_APB2_GRP1_PERIPH_ADC1           RCC_APB2ENR_ADC1EN
  175. #if defined(ADC2)
  176. #define LL_APB2_GRP1_PERIPH_ADC2           RCC_APB2ENR_ADC2EN
  177. #endif /*ADC2*/
  178. #if defined(ADC3)
  179. #define LL_APB2_GRP1_PERIPH_ADC3           RCC_APB2ENR_ADC3EN
  180. #endif /*ADC3*/
  181. #define LL_APB2_GRP1_PERIPH_AFIO           RCC_APB2ENR_AFIOEN
  182. #define LL_APB2_GRP1_PERIPH_GPIOA          RCC_APB2ENR_IOPAEN
  183. #define LL_APB2_GRP1_PERIPH_GPIOB          RCC_APB2ENR_IOPBEN
  184. #define LL_APB2_GRP1_PERIPH_GPIOC          RCC_APB2ENR_IOPCEN
  185. #define LL_APB2_GRP1_PERIPH_GPIOD          RCC_APB2ENR_IOPDEN
  186. #if defined(GPIOE)
  187. #define LL_APB2_GRP1_PERIPH_GPIOE          RCC_APB2ENR_IOPEEN
  188. #endif /*GPIOE*/
  189. #if defined(GPIOF)
  190. #define LL_APB2_GRP1_PERIPH_GPIOF          RCC_APB2ENR_IOPFEN
  191. #endif /*GPIOF*/
  192. #if defined(GPIOG)
  193. #define LL_APB2_GRP1_PERIPH_GPIOG          RCC_APB2ENR_IOPGEN
  194. #endif /*GPIOG*/
  195. #define LL_APB2_GRP1_PERIPH_SPI1           RCC_APB2ENR_SPI1EN
  196. #if defined(TIM10)
  197. #define LL_APB2_GRP1_PERIPH_TIM10          RCC_APB2ENR_TIM10EN
  198. #endif /*TIM10*/
  199. #if defined(TIM11)
  200. #define LL_APB2_GRP1_PERIPH_TIM11          RCC_APB2ENR_TIM11EN
  201. #endif /*TIM11*/
  202. #if defined(TIM15)
  203. #define LL_APB2_GRP1_PERIPH_TIM15          RCC_APB2ENR_TIM15EN
  204. #endif /*TIM15*/
  205. #if defined(TIM16)
  206. #define LL_APB2_GRP1_PERIPH_TIM16          RCC_APB2ENR_TIM16EN
  207. #endif /*TIM16*/
  208. #if defined(TIM17)
  209. #define LL_APB2_GRP1_PERIPH_TIM17          RCC_APB2ENR_TIM17EN
  210. #endif /*TIM17*/
  211. #define LL_APB2_GRP1_PERIPH_TIM1           RCC_APB2ENR_TIM1EN
  212. #if defined(TIM8)
  213. #define LL_APB2_GRP1_PERIPH_TIM8           RCC_APB2ENR_TIM8EN
  214. #endif /*TIM8*/
  215. #if defined(TIM9)
  216. #define LL_APB2_GRP1_PERIPH_TIM9           RCC_APB2ENR_TIM9EN
  217. #endif /*TIM9*/
  218. #define LL_APB2_GRP1_PERIPH_USART1         RCC_APB2ENR_USART1EN
  219. /**
  220.   * @}
  221.   */
  222.  
  223. /**
  224.   * @}
  225.   */
  226.  
  227. /* Exported macro ------------------------------------------------------------*/
  228.  
  229. /* Exported functions --------------------------------------------------------*/
  230. /** @defgroup BUS_LL_Exported_Functions BUS Exported Functions
  231.   * @{
  232.   */
  233.  
  234. /** @defgroup BUS_LL_EF_AHB1 AHB1
  235.   * @{
  236.   */
  237.  
  238. /**
  239.   * @brief  Enable AHB1 peripherals clock.
  240.   * @rmtoll AHBENR       CRCEN         LL_AHB1_GRP1_EnableClock\n
  241.   *         AHBENR       DMA1EN        LL_AHB1_GRP1_EnableClock\n
  242.   *         AHBENR       DMA2EN        LL_AHB1_GRP1_EnableClock\n
  243.   *         AHBENR       ETHMACEN      LL_AHB1_GRP1_EnableClock\n
  244.   *         AHBENR       ETHMACRXEN    LL_AHB1_GRP1_EnableClock\n
  245.   *         AHBENR       ETHMACTXEN    LL_AHB1_GRP1_EnableClock\n
  246.   *         AHBENR       FLITFEN       LL_AHB1_GRP1_EnableClock\n
  247.   *         AHBENR       FSMCEN        LL_AHB1_GRP1_EnableClock\n
  248.   *         AHBENR       OTGFSEN       LL_AHB1_GRP1_EnableClock\n
  249.   *         AHBENR       SDIOEN        LL_AHB1_GRP1_EnableClock\n
  250.   *         AHBENR       SRAMEN        LL_AHB1_GRP1_EnableClock
  251.   * @param  Periphs This parameter can be a combination of the following values:
  252.   *         @arg @ref LL_AHB1_GRP1_PERIPH_CRC
  253.   *         @arg @ref LL_AHB1_GRP1_PERIPH_DMA1
  254.   *         @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 (*)
  255.   *         @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*)
  256.   *         @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*)
  257.   *         @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*)
  258.   *         @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
  259.   *         @arg @ref LL_AHB1_GRP1_PERIPH_FSMC (*)
  260.   *         @arg @ref LL_AHB1_GRP1_PERIPH_OTGFS (*)
  261.   *         @arg @ref LL_AHB1_GRP1_PERIPH_SDIO (*)
  262.   *         @arg @ref LL_AHB1_GRP1_PERIPH_SRAM
  263.   *
  264.   *         (*) value not defined in all devices.
  265.   * @retval None
  266. */
  267. __STATIC_INLINE void LL_AHB1_GRP1_EnableClock(uint32_t Periphs)
  268. {
  269.   __IO uint32_t tmpreg;
  270.   SET_BIT(RCC->AHBENR, Periphs);
  271.   /* Delay after an RCC peripheral clock enabling */
  272.   tmpreg = READ_BIT(RCC->AHBENR, Periphs);
  273.   (void)tmpreg;
  274. }
  275.  
  276. /**
  277.   * @brief  Check if AHB1 peripheral clock is enabled or not
  278.   * @rmtoll AHBENR       CRCEN         LL_AHB1_GRP1_IsEnabledClock\n
  279.   *         AHBENR       DMA1EN        LL_AHB1_GRP1_IsEnabledClock\n
  280.   *         AHBENR       DMA2EN        LL_AHB1_GRP1_IsEnabledClock\n
  281.   *         AHBENR       ETHMACEN      LL_AHB1_GRP1_IsEnabledClock\n
  282.   *         AHBENR       ETHMACRXEN    LL_AHB1_GRP1_IsEnabledClock\n
  283.   *         AHBENR       ETHMACTXEN    LL_AHB1_GRP1_IsEnabledClock\n
  284.   *         AHBENR       FLITFEN       LL_AHB1_GRP1_IsEnabledClock\n
  285.   *         AHBENR       FSMCEN        LL_AHB1_GRP1_IsEnabledClock\n
  286.   *         AHBENR       OTGFSEN       LL_AHB1_GRP1_IsEnabledClock\n
  287.   *         AHBENR       SDIOEN        LL_AHB1_GRP1_IsEnabledClock\n
  288.   *         AHBENR       SRAMEN        LL_AHB1_GRP1_IsEnabledClock
  289.   * @param  Periphs This parameter can be a combination of the following values:
  290.   *         @arg @ref LL_AHB1_GRP1_PERIPH_CRC
  291.   *         @arg @ref LL_AHB1_GRP1_PERIPH_DMA1
  292.   *         @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 (*)
  293.   *         @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*)
  294.   *         @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*)
  295.   *         @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*)
  296.   *         @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
  297.   *         @arg @ref LL_AHB1_GRP1_PERIPH_FSMC (*)
  298.   *         @arg @ref LL_AHB1_GRP1_PERIPH_OTGFS (*)
  299.   *         @arg @ref LL_AHB1_GRP1_PERIPH_SDIO (*)
  300.   *         @arg @ref LL_AHB1_GRP1_PERIPH_SRAM
  301.   *
  302.   *         (*) value not defined in all devices.
  303.   * @retval State of Periphs (1 or 0).
  304. */
  305. __STATIC_INLINE uint32_t LL_AHB1_GRP1_IsEnabledClock(uint32_t Periphs)
  306. {
  307.   return (READ_BIT(RCC->AHBENR, Periphs) == Periphs);
  308. }
  309.  
  310. /**
  311.   * @brief  Disable AHB1 peripherals clock.
  312.   * @rmtoll AHBENR       CRCEN         LL_AHB1_GRP1_DisableClock\n
  313.   *         AHBENR       DMA1EN        LL_AHB1_GRP1_DisableClock\n
  314.   *         AHBENR       DMA2EN        LL_AHB1_GRP1_DisableClock\n
  315.   *         AHBENR       ETHMACEN      LL_AHB1_GRP1_DisableClock\n
  316.   *         AHBENR       ETHMACRXEN    LL_AHB1_GRP1_DisableClock\n
  317.   *         AHBENR       ETHMACTXEN    LL_AHB1_GRP1_DisableClock\n
  318.   *         AHBENR       FLITFEN       LL_AHB1_GRP1_DisableClock\n
  319.   *         AHBENR       FSMCEN        LL_AHB1_GRP1_DisableClock\n
  320.   *         AHBENR       OTGFSEN       LL_AHB1_GRP1_DisableClock\n
  321.   *         AHBENR       SDIOEN        LL_AHB1_GRP1_DisableClock\n
  322.   *         AHBENR       SRAMEN        LL_AHB1_GRP1_DisableClock
  323.   * @param  Periphs This parameter can be a combination of the following values:
  324.   *         @arg @ref LL_AHB1_GRP1_PERIPH_CRC
  325.   *         @arg @ref LL_AHB1_GRP1_PERIPH_DMA1
  326.   *         @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 (*)
  327.   *         @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*)
  328.   *         @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*)
  329.   *         @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*)
  330.   *         @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
  331.   *         @arg @ref LL_AHB1_GRP1_PERIPH_FSMC (*)
  332.   *         @arg @ref LL_AHB1_GRP1_PERIPH_OTGFS (*)
  333.   *         @arg @ref LL_AHB1_GRP1_PERIPH_SDIO (*)
  334.   *         @arg @ref LL_AHB1_GRP1_PERIPH_SRAM
  335.   *
  336.   *         (*) value not defined in all devices.
  337.   * @retval None
  338. */
  339. __STATIC_INLINE void LL_AHB1_GRP1_DisableClock(uint32_t Periphs)
  340. {
  341.   CLEAR_BIT(RCC->AHBENR, Periphs);
  342. }
  343.  
  344. #if defined(RCC_AHBRSTR_SUPPORT)
  345. /**
  346.   * @brief  Force AHB1 peripherals reset.
  347.   * @rmtoll AHBRSTR      ETHMACRST     LL_AHB1_GRP1_ForceReset\n
  348.   *         AHBRSTR      OTGFSRST      LL_AHB1_GRP1_ForceReset
  349.   * @param  Periphs This parameter can be a combination of the following values:
  350.   *         @arg @ref LL_AHB1_GRP1_PERIPH_ALL
  351.   *         @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*)
  352.   *         @arg @ref LL_AHB1_GRP1_PERIPH_OTGFS (*)
  353.   *
  354.   *         (*) value not defined in all devices.
  355.   * @retval None
  356. */
  357. __STATIC_INLINE void LL_AHB1_GRP1_ForceReset(uint32_t Periphs)
  358. {
  359.   SET_BIT(RCC->AHBRSTR, Periphs);
  360. }
  361.  
  362. /**
  363.   * @brief  Release AHB1 peripherals reset.
  364.   * @rmtoll AHBRSTR      ETHMACRST     LL_AHB1_GRP1_ReleaseReset\n
  365.   *         AHBRSTR      OTGFSRST      LL_AHB1_GRP1_ReleaseReset
  366.   * @param  Periphs This parameter can be a combination of the following values:
  367.   *         @arg @ref LL_AHB1_GRP1_PERIPH_ALL
  368.   *         @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*)
  369.   *         @arg @ref LL_AHB1_GRP1_PERIPH_OTGFS (*)
  370.   *
  371.   *         (*) value not defined in all devices.
  372.   * @retval None
  373. */
  374. __STATIC_INLINE void LL_AHB1_GRP1_ReleaseReset(uint32_t Periphs)
  375. {
  376.   CLEAR_BIT(RCC->AHBRSTR, Periphs);
  377. }
  378. #endif /* RCC_AHBRSTR_SUPPORT */
  379.  
  380. /**
  381.   * @}
  382.   */
  383.  
  384. /** @defgroup BUS_LL_EF_APB1 APB1
  385.   * @{
  386.   */
  387.  
  388. /**
  389.   * @brief  Enable APB1 peripherals clock.
  390.   * @rmtoll APB1ENR      BKPEN         LL_APB1_GRP1_EnableClock\n
  391.   *         APB1ENR      CAN1EN        LL_APB1_GRP1_EnableClock\n
  392.   *         APB1ENR      CAN2EN        LL_APB1_GRP1_EnableClock\n
  393.   *         APB1ENR      CECEN         LL_APB1_GRP1_EnableClock\n
  394.   *         APB1ENR      DACEN         LL_APB1_GRP1_EnableClock\n
  395.   *         APB1ENR      I2C1EN        LL_APB1_GRP1_EnableClock\n
  396.   *         APB1ENR      I2C2EN        LL_APB1_GRP1_EnableClock\n
  397.   *         APB1ENR      PWREN         LL_APB1_GRP1_EnableClock\n
  398.   *         APB1ENR      SPI2EN        LL_APB1_GRP1_EnableClock\n
  399.   *         APB1ENR      SPI3EN        LL_APB1_GRP1_EnableClock\n
  400.   *         APB1ENR      TIM12EN       LL_APB1_GRP1_EnableClock\n
  401.   *         APB1ENR      TIM13EN       LL_APB1_GRP1_EnableClock\n
  402.   *         APB1ENR      TIM14EN       LL_APB1_GRP1_EnableClock\n
  403.   *         APB1ENR      TIM2EN        LL_APB1_GRP1_EnableClock\n
  404.   *         APB1ENR      TIM3EN        LL_APB1_GRP1_EnableClock\n
  405.   *         APB1ENR      TIM4EN        LL_APB1_GRP1_EnableClock\n
  406.   *         APB1ENR      TIM5EN        LL_APB1_GRP1_EnableClock\n
  407.   *         APB1ENR      TIM6EN        LL_APB1_GRP1_EnableClock\n
  408.   *         APB1ENR      TIM7EN        LL_APB1_GRP1_EnableClock\n
  409.   *         APB1ENR      UART4EN       LL_APB1_GRP1_EnableClock\n
  410.   *         APB1ENR      UART5EN       LL_APB1_GRP1_EnableClock\n
  411.   *         APB1ENR      USART2EN      LL_APB1_GRP1_EnableClock\n
  412.   *         APB1ENR      USART3EN      LL_APB1_GRP1_EnableClock\n
  413.   *         APB1ENR      USBEN         LL_APB1_GRP1_EnableClock\n
  414.   *         APB1ENR      WWDGEN        LL_APB1_GRP1_EnableClock
  415.   * @param  Periphs This parameter can be a combination of the following values:
  416.   *         @arg @ref LL_APB1_GRP1_PERIPH_BKP
  417.   *         @arg @ref LL_APB1_GRP1_PERIPH_CAN1 (*)
  418.   *         @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*)
  419.   *         @arg @ref LL_APB1_GRP1_PERIPH_CEC (*)
  420.   *         @arg @ref LL_APB1_GRP1_PERIPH_DAC1 (*)
  421.   *         @arg @ref LL_APB1_GRP1_PERIPH_I2C1
  422.   *         @arg @ref LL_APB1_GRP1_PERIPH_I2C2 (*)
  423.   *         @arg @ref LL_APB1_GRP1_PERIPH_PWR
  424.   *         @arg @ref LL_APB1_GRP1_PERIPH_SPI2 (*)
  425.   *         @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (*)
  426.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM12 (*)
  427.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM13 (*)
  428.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM14 (*)
  429.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM2
  430.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM3
  431.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (*)
  432.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*)
  433.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM6 (*)
  434.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM7 (*)
  435.   *         @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*)
  436.   *         @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*)
  437.   *         @arg @ref LL_APB1_GRP1_PERIPH_USART2
  438.   *         @arg @ref LL_APB1_GRP1_PERIPH_USART3 (*)
  439.   *         @arg @ref LL_APB1_GRP1_PERIPH_USB (*)
  440.   *         @arg @ref LL_APB1_GRP1_PERIPH_WWDG
  441.   *
  442.   *         (*) value not defined in all devices.
  443.   * @retval None
  444. */
  445. __STATIC_INLINE void LL_APB1_GRP1_EnableClock(uint32_t Periphs)
  446. {
  447.   __IO uint32_t tmpreg;
  448.   SET_BIT(RCC->APB1ENR, Periphs);
  449.   /* Delay after an RCC peripheral clock enabling */
  450.   tmpreg = READ_BIT(RCC->APB1ENR, Periphs);
  451.   (void)tmpreg;
  452. }
  453.  
  454. /**
  455.   * @brief  Check if APB1 peripheral clock is enabled or not
  456.   * @rmtoll APB1ENR      BKPEN         LL_APB1_GRP1_IsEnabledClock\n
  457.   *         APB1ENR      CAN1EN        LL_APB1_GRP1_IsEnabledClock\n
  458.   *         APB1ENR      CAN2EN        LL_APB1_GRP1_IsEnabledClock\n
  459.   *         APB1ENR      CECEN         LL_APB1_GRP1_IsEnabledClock\n
  460.   *         APB1ENR      DACEN         LL_APB1_GRP1_IsEnabledClock\n
  461.   *         APB1ENR      I2C1EN        LL_APB1_GRP1_IsEnabledClock\n
  462.   *         APB1ENR      I2C2EN        LL_APB1_GRP1_IsEnabledClock\n
  463.   *         APB1ENR      PWREN         LL_APB1_GRP1_IsEnabledClock\n
  464.   *         APB1ENR      SPI2EN        LL_APB1_GRP1_IsEnabledClock\n
  465.   *         APB1ENR      SPI3EN        LL_APB1_GRP1_IsEnabledClock\n
  466.   *         APB1ENR      TIM12EN       LL_APB1_GRP1_IsEnabledClock\n
  467.   *         APB1ENR      TIM13EN       LL_APB1_GRP1_IsEnabledClock\n
  468.   *         APB1ENR      TIM14EN       LL_APB1_GRP1_IsEnabledClock\n
  469.   *         APB1ENR      TIM2EN        LL_APB1_GRP1_IsEnabledClock\n
  470.   *         APB1ENR      TIM3EN        LL_APB1_GRP1_IsEnabledClock\n
  471.   *         APB1ENR      TIM4EN        LL_APB1_GRP1_IsEnabledClock\n
  472.   *         APB1ENR      TIM5EN        LL_APB1_GRP1_IsEnabledClock\n
  473.   *         APB1ENR      TIM6EN        LL_APB1_GRP1_IsEnabledClock\n
  474.   *         APB1ENR      TIM7EN        LL_APB1_GRP1_IsEnabledClock\n
  475.   *         APB1ENR      UART4EN       LL_APB1_GRP1_IsEnabledClock\n
  476.   *         APB1ENR      UART5EN       LL_APB1_GRP1_IsEnabledClock\n
  477.   *         APB1ENR      USART2EN      LL_APB1_GRP1_IsEnabledClock\n
  478.   *         APB1ENR      USART3EN      LL_APB1_GRP1_IsEnabledClock\n
  479.   *         APB1ENR      USBEN         LL_APB1_GRP1_IsEnabledClock\n
  480.   *         APB1ENR      WWDGEN        LL_APB1_GRP1_IsEnabledClock
  481.   * @param  Periphs This parameter can be a combination of the following values:
  482.   *         @arg @ref LL_APB1_GRP1_PERIPH_BKP
  483.   *         @arg @ref LL_APB1_GRP1_PERIPH_CAN1 (*)
  484.   *         @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*)
  485.   *         @arg @ref LL_APB1_GRP1_PERIPH_CEC (*)
  486.   *         @arg @ref LL_APB1_GRP1_PERIPH_DAC1 (*)
  487.   *         @arg @ref LL_APB1_GRP1_PERIPH_I2C1
  488.   *         @arg @ref LL_APB1_GRP1_PERIPH_I2C2 (*)
  489.   *         @arg @ref LL_APB1_GRP1_PERIPH_PWR
  490.   *         @arg @ref LL_APB1_GRP1_PERIPH_SPI2 (*)
  491.   *         @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (*)
  492.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM12 (*)
  493.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM13 (*)
  494.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM14 (*)
  495.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM2
  496.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM3
  497.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (*)
  498.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*)
  499.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM6 (*)
  500.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM7 (*)
  501.   *         @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*)
  502.   *         @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*)
  503.   *         @arg @ref LL_APB1_GRP1_PERIPH_USART2
  504.   *         @arg @ref LL_APB1_GRP1_PERIPH_USART3 (*)
  505.   *         @arg @ref LL_APB1_GRP1_PERIPH_USB (*)
  506.   *         @arg @ref LL_APB1_GRP1_PERIPH_WWDG
  507.   *
  508.   *         (*) value not defined in all devices.
  509.   * @retval State of Periphs (1 or 0).
  510. */
  511. __STATIC_INLINE uint32_t LL_APB1_GRP1_IsEnabledClock(uint32_t Periphs)
  512. {
  513.   return (READ_BIT(RCC->APB1ENR, Periphs) == Periphs);
  514. }
  515.  
  516. /**
  517.   * @brief  Disable APB1 peripherals clock.
  518.   * @rmtoll APB1ENR      BKPEN         LL_APB1_GRP1_DisableClock\n
  519.   *         APB1ENR      CAN1EN        LL_APB1_GRP1_DisableClock\n
  520.   *         APB1ENR      CAN2EN        LL_APB1_GRP1_DisableClock\n
  521.   *         APB1ENR      CECEN         LL_APB1_GRP1_DisableClock\n
  522.   *         APB1ENR      DACEN         LL_APB1_GRP1_DisableClock\n
  523.   *         APB1ENR      I2C1EN        LL_APB1_GRP1_DisableClock\n
  524.   *         APB1ENR      I2C2EN        LL_APB1_GRP1_DisableClock\n
  525.   *         APB1ENR      PWREN         LL_APB1_GRP1_DisableClock\n
  526.   *         APB1ENR      SPI2EN        LL_APB1_GRP1_DisableClock\n
  527.   *         APB1ENR      SPI3EN        LL_APB1_GRP1_DisableClock\n
  528.   *         APB1ENR      TIM12EN       LL_APB1_GRP1_DisableClock\n
  529.   *         APB1ENR      TIM13EN       LL_APB1_GRP1_DisableClock\n
  530.   *         APB1ENR      TIM14EN       LL_APB1_GRP1_DisableClock\n
  531.   *         APB1ENR      TIM2EN        LL_APB1_GRP1_DisableClock\n
  532.   *         APB1ENR      TIM3EN        LL_APB1_GRP1_DisableClock\n
  533.   *         APB1ENR      TIM4EN        LL_APB1_GRP1_DisableClock\n
  534.   *         APB1ENR      TIM5EN        LL_APB1_GRP1_DisableClock\n
  535.   *         APB1ENR      TIM6EN        LL_APB1_GRP1_DisableClock\n
  536.   *         APB1ENR      TIM7EN        LL_APB1_GRP1_DisableClock\n
  537.   *         APB1ENR      UART4EN       LL_APB1_GRP1_DisableClock\n
  538.   *         APB1ENR      UART5EN       LL_APB1_GRP1_DisableClock\n
  539.   *         APB1ENR      USART2EN      LL_APB1_GRP1_DisableClock\n
  540.   *         APB1ENR      USART3EN      LL_APB1_GRP1_DisableClock\n
  541.   *         APB1ENR      USBEN         LL_APB1_GRP1_DisableClock\n
  542.   *         APB1ENR      WWDGEN        LL_APB1_GRP1_DisableClock
  543.   * @param  Periphs This parameter can be a combination of the following values:
  544.   *         @arg @ref LL_APB1_GRP1_PERIPH_BKP
  545.   *         @arg @ref LL_APB1_GRP1_PERIPH_CAN1 (*)
  546.   *         @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*)
  547.   *         @arg @ref LL_APB1_GRP1_PERIPH_CEC (*)
  548.   *         @arg @ref LL_APB1_GRP1_PERIPH_DAC1 (*)
  549.   *         @arg @ref LL_APB1_GRP1_PERIPH_I2C1
  550.   *         @arg @ref LL_APB1_GRP1_PERIPH_I2C2 (*)
  551.   *         @arg @ref LL_APB1_GRP1_PERIPH_PWR
  552.   *         @arg @ref LL_APB1_GRP1_PERIPH_SPI2 (*)
  553.   *         @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (*)
  554.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM12 (*)
  555.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM13 (*)
  556.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM14 (*)
  557.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM2
  558.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM3
  559.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (*)
  560.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*)
  561.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM6 (*)
  562.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM7 (*)
  563.   *         @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*)
  564.   *         @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*)
  565.   *         @arg @ref LL_APB1_GRP1_PERIPH_USART2
  566.   *         @arg @ref LL_APB1_GRP1_PERIPH_USART3 (*)
  567.   *         @arg @ref LL_APB1_GRP1_PERIPH_USB (*)
  568.   *         @arg @ref LL_APB1_GRP1_PERIPH_WWDG
  569.   *
  570.   *         (*) value not defined in all devices.
  571.   * @retval None
  572. */
  573. __STATIC_INLINE void LL_APB1_GRP1_DisableClock(uint32_t Periphs)
  574. {
  575.   CLEAR_BIT(RCC->APB1ENR, Periphs);
  576. }
  577.  
  578. /**
  579.   * @brief  Force APB1 peripherals reset.
  580.   * @rmtoll APB1RSTR     BKPRST        LL_APB1_GRP1_ForceReset\n
  581.   *         APB1RSTR     CAN1RST       LL_APB1_GRP1_ForceReset\n
  582.   *         APB1RSTR     CAN2RST       LL_APB1_GRP1_ForceReset\n
  583.   *         APB1RSTR     CECRST        LL_APB1_GRP1_ForceReset\n
  584.   *         APB1RSTR     DACRST        LL_APB1_GRP1_ForceReset\n
  585.   *         APB1RSTR     I2C1RST       LL_APB1_GRP1_ForceReset\n
  586.   *         APB1RSTR     I2C2RST       LL_APB1_GRP1_ForceReset\n
  587.   *         APB1RSTR     PWRRST        LL_APB1_GRP1_ForceReset\n
  588.   *         APB1RSTR     SPI2RST       LL_APB1_GRP1_ForceReset\n
  589.   *         APB1RSTR     SPI3RST       LL_APB1_GRP1_ForceReset\n
  590.   *         APB1RSTR     TIM12RST      LL_APB1_GRP1_ForceReset\n
  591.   *         APB1RSTR     TIM13RST      LL_APB1_GRP1_ForceReset\n
  592.   *         APB1RSTR     TIM14RST      LL_APB1_GRP1_ForceReset\n
  593.   *         APB1RSTR     TIM2RST       LL_APB1_GRP1_ForceReset\n
  594.   *         APB1RSTR     TIM3RST       LL_APB1_GRP1_ForceReset\n
  595.   *         APB1RSTR     TIM4RST       LL_APB1_GRP1_ForceReset\n
  596.   *         APB1RSTR     TIM5RST       LL_APB1_GRP1_ForceReset\n
  597.   *         APB1RSTR     TIM6RST       LL_APB1_GRP1_ForceReset\n
  598.   *         APB1RSTR     TIM7RST       LL_APB1_GRP1_ForceReset\n
  599.   *         APB1RSTR     UART4RST      LL_APB1_GRP1_ForceReset\n
  600.   *         APB1RSTR     UART5RST      LL_APB1_GRP1_ForceReset\n
  601.   *         APB1RSTR     USART2RST     LL_APB1_GRP1_ForceReset\n
  602.   *         APB1RSTR     USART3RST     LL_APB1_GRP1_ForceReset\n
  603.   *         APB1RSTR     USBRST        LL_APB1_GRP1_ForceReset\n
  604.   *         APB1RSTR     WWDGRST       LL_APB1_GRP1_ForceReset
  605.   * @param  Periphs This parameter can be a combination of the following values:
  606.   *         @arg @ref LL_APB1_GRP1_PERIPH_ALL
  607.   *         @arg @ref LL_APB1_GRP1_PERIPH_BKP
  608.   *         @arg @ref LL_APB1_GRP1_PERIPH_CAN1 (*)
  609.   *         @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*)
  610.   *         @arg @ref LL_APB1_GRP1_PERIPH_CEC (*)
  611.   *         @arg @ref LL_APB1_GRP1_PERIPH_DAC1 (*)
  612.   *         @arg @ref LL_APB1_GRP1_PERIPH_I2C1
  613.   *         @arg @ref LL_APB1_GRP1_PERIPH_I2C2 (*)
  614.   *         @arg @ref LL_APB1_GRP1_PERIPH_PWR
  615.   *         @arg @ref LL_APB1_GRP1_PERIPH_SPI2 (*)
  616.   *         @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (*)
  617.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM12 (*)
  618.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM13 (*)
  619.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM14 (*)
  620.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM2
  621.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM3
  622.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (*)
  623.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*)
  624.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM6 (*)
  625.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM7 (*)
  626.   *         @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*)
  627.   *         @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*)
  628.   *         @arg @ref LL_APB1_GRP1_PERIPH_USART2
  629.   *         @arg @ref LL_APB1_GRP1_PERIPH_USART3 (*)
  630.   *         @arg @ref LL_APB1_GRP1_PERIPH_USB (*)
  631.   *         @arg @ref LL_APB1_GRP1_PERIPH_WWDG
  632.   *
  633.   *         (*) value not defined in all devices.
  634.   * @retval None
  635. */
  636. __STATIC_INLINE void LL_APB1_GRP1_ForceReset(uint32_t Periphs)
  637. {
  638.   SET_BIT(RCC->APB1RSTR, Periphs);
  639. }
  640.  
  641. /**
  642.   * @brief  Release APB1 peripherals reset.
  643.   * @rmtoll APB1RSTR     BKPRST        LL_APB1_GRP1_ReleaseReset\n
  644.   *         APB1RSTR     CAN1RST       LL_APB1_GRP1_ReleaseReset\n
  645.   *         APB1RSTR     CAN2RST       LL_APB1_GRP1_ReleaseReset\n
  646.   *         APB1RSTR     CECRST        LL_APB1_GRP1_ReleaseReset\n
  647.   *         APB1RSTR     DACRST        LL_APB1_GRP1_ReleaseReset\n
  648.   *         APB1RSTR     I2C1RST       LL_APB1_GRP1_ReleaseReset\n
  649.   *         APB1RSTR     I2C2RST       LL_APB1_GRP1_ReleaseReset\n
  650.   *         APB1RSTR     PWRRST        LL_APB1_GRP1_ReleaseReset\n
  651.   *         APB1RSTR     SPI2RST       LL_APB1_GRP1_ReleaseReset\n
  652.   *         APB1RSTR     SPI3RST       LL_APB1_GRP1_ReleaseReset\n
  653.   *         APB1RSTR     TIM12RST      LL_APB1_GRP1_ReleaseReset\n
  654.   *         APB1RSTR     TIM13RST      LL_APB1_GRP1_ReleaseReset\n
  655.   *         APB1RSTR     TIM14RST      LL_APB1_GRP1_ReleaseReset\n
  656.   *         APB1RSTR     TIM2RST       LL_APB1_GRP1_ReleaseReset\n
  657.   *         APB1RSTR     TIM3RST       LL_APB1_GRP1_ReleaseReset\n
  658.   *         APB1RSTR     TIM4RST       LL_APB1_GRP1_ReleaseReset\n
  659.   *         APB1RSTR     TIM5RST       LL_APB1_GRP1_ReleaseReset\n
  660.   *         APB1RSTR     TIM6RST       LL_APB1_GRP1_ReleaseReset\n
  661.   *         APB1RSTR     TIM7RST       LL_APB1_GRP1_ReleaseReset\n
  662.   *         APB1RSTR     UART4RST      LL_APB1_GRP1_ReleaseReset\n
  663.   *         APB1RSTR     UART5RST      LL_APB1_GRP1_ReleaseReset\n
  664.   *         APB1RSTR     USART2RST     LL_APB1_GRP1_ReleaseReset\n
  665.   *         APB1RSTR     USART3RST     LL_APB1_GRP1_ReleaseReset\n
  666.   *         APB1RSTR     USBRST        LL_APB1_GRP1_ReleaseReset\n
  667.   *         APB1RSTR     WWDGRST       LL_APB1_GRP1_ReleaseReset
  668.   * @param  Periphs This parameter can be a combination of the following values:
  669.   *         @arg @ref LL_APB1_GRP1_PERIPH_ALL
  670.   *         @arg @ref LL_APB1_GRP1_PERIPH_BKP
  671.   *         @arg @ref LL_APB1_GRP1_PERIPH_CAN1 (*)
  672.   *         @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*)
  673.   *         @arg @ref LL_APB1_GRP1_PERIPH_CEC (*)
  674.   *         @arg @ref LL_APB1_GRP1_PERIPH_DAC1 (*)
  675.   *         @arg @ref LL_APB1_GRP1_PERIPH_I2C1
  676.   *         @arg @ref LL_APB1_GRP1_PERIPH_I2C2 (*)
  677.   *         @arg @ref LL_APB1_GRP1_PERIPH_PWR
  678.   *         @arg @ref LL_APB1_GRP1_PERIPH_SPI2 (*)
  679.   *         @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (*)
  680.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM12 (*)
  681.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM13 (*)
  682.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM14 (*)
  683.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM2
  684.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM3
  685.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (*)
  686.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*)
  687.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM6 (*)
  688.   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM7 (*)
  689.   *         @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*)
  690.   *         @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*)
  691.   *         @arg @ref LL_APB1_GRP1_PERIPH_USART2
  692.   *         @arg @ref LL_APB1_GRP1_PERIPH_USART3 (*)
  693.   *         @arg @ref LL_APB1_GRP1_PERIPH_USB (*)
  694.   *         @arg @ref LL_APB1_GRP1_PERIPH_WWDG
  695.   *
  696.   *         (*) value not defined in all devices.
  697.   * @retval None
  698. */
  699. __STATIC_INLINE void LL_APB1_GRP1_ReleaseReset(uint32_t Periphs)
  700. {
  701.   CLEAR_BIT(RCC->APB1RSTR, Periphs);
  702. }
  703.  
  704. /**
  705.   * @}
  706.   */
  707.  
  708. /** @defgroup BUS_LL_EF_APB2 APB2
  709.   * @{
  710.   */
  711.  
  712. /**
  713.   * @brief  Enable APB2 peripherals clock.
  714.   * @rmtoll APB2ENR      ADC1EN        LL_APB2_GRP1_EnableClock\n
  715.   *         APB2ENR      ADC2EN        LL_APB2_GRP1_EnableClock\n
  716.   *         APB2ENR      ADC3EN        LL_APB2_GRP1_EnableClock\n
  717.   *         APB2ENR      AFIOEN        LL_APB2_GRP1_EnableClock\n
  718.   *         APB2ENR      IOPAEN        LL_APB2_GRP1_EnableClock\n
  719.   *         APB2ENR      IOPBEN        LL_APB2_GRP1_EnableClock\n
  720.   *         APB2ENR      IOPCEN        LL_APB2_GRP1_EnableClock\n
  721.   *         APB2ENR      IOPDEN        LL_APB2_GRP1_EnableClock\n
  722.   *         APB2ENR      IOPEEN        LL_APB2_GRP1_EnableClock\n
  723.   *         APB2ENR      IOPFEN        LL_APB2_GRP1_EnableClock\n
  724.   *         APB2ENR      IOPGEN        LL_APB2_GRP1_EnableClock\n
  725.   *         APB2ENR      SPI1EN        LL_APB2_GRP1_EnableClock\n
  726.   *         APB2ENR      TIM10EN       LL_APB2_GRP1_EnableClock\n
  727.   *         APB2ENR      TIM11EN       LL_APB2_GRP1_EnableClock\n
  728.   *         APB2ENR      TIM15EN       LL_APB2_GRP1_EnableClock\n
  729.   *         APB2ENR      TIM16EN       LL_APB2_GRP1_EnableClock\n
  730.   *         APB2ENR      TIM17EN       LL_APB2_GRP1_EnableClock\n
  731.   *         APB2ENR      TIM1EN        LL_APB2_GRP1_EnableClock\n
  732.   *         APB2ENR      TIM8EN        LL_APB2_GRP1_EnableClock\n
  733.   *         APB2ENR      TIM9EN        LL_APB2_GRP1_EnableClock\n
  734.   *         APB2ENR      USART1EN      LL_APB2_GRP1_EnableClock
  735.   * @param  Periphs This parameter can be a combination of the following values:
  736.   *         @arg @ref LL_APB2_GRP1_PERIPH_ADC1
  737.   *         @arg @ref LL_APB2_GRP1_PERIPH_ADC2 (*)
  738.   *         @arg @ref LL_APB2_GRP1_PERIPH_ADC3 (*)
  739.   *         @arg @ref LL_APB2_GRP1_PERIPH_AFIO
  740.   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOA
  741.   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOB
  742.   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOC
  743.   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOD
  744.   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOE (*)
  745.   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOF (*)
  746.   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOG (*)
  747.   *         @arg @ref LL_APB2_GRP1_PERIPH_SPI1
  748.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM10 (*)
  749.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM11 (*)
  750.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM15 (*)
  751.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM16 (*)
  752.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*)
  753.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM1
  754.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM8 (*)
  755.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM9 (*)
  756.   *         @arg @ref LL_APB2_GRP1_PERIPH_USART1
  757.   *
  758.   *         (*) value not defined in all devices.
  759.   * @retval None
  760. */
  761. __STATIC_INLINE void LL_APB2_GRP1_EnableClock(uint32_t Periphs)
  762. {
  763.   __IO uint32_t tmpreg;
  764.   SET_BIT(RCC->APB2ENR, Periphs);
  765.   /* Delay after an RCC peripheral clock enabling */
  766.   tmpreg = READ_BIT(RCC->APB2ENR, Periphs);
  767.   (void)tmpreg;
  768. }
  769.  
  770. /**
  771.   * @brief  Check if APB2 peripheral clock is enabled or not
  772.   * @rmtoll APB2ENR      ADC1EN        LL_APB2_GRP1_IsEnabledClock\n
  773.   *         APB2ENR      ADC2EN        LL_APB2_GRP1_IsEnabledClock\n
  774.   *         APB2ENR      ADC3EN        LL_APB2_GRP1_IsEnabledClock\n
  775.   *         APB2ENR      AFIOEN        LL_APB2_GRP1_IsEnabledClock\n
  776.   *         APB2ENR      IOPAEN        LL_APB2_GRP1_IsEnabledClock\n
  777.   *         APB2ENR      IOPBEN        LL_APB2_GRP1_IsEnabledClock\n
  778.   *         APB2ENR      IOPCEN        LL_APB2_GRP1_IsEnabledClock\n
  779.   *         APB2ENR      IOPDEN        LL_APB2_GRP1_IsEnabledClock\n
  780.   *         APB2ENR      IOPEEN        LL_APB2_GRP1_IsEnabledClock\n
  781.   *         APB2ENR      IOPFEN        LL_APB2_GRP1_IsEnabledClock\n
  782.   *         APB2ENR      IOPGEN        LL_APB2_GRP1_IsEnabledClock\n
  783.   *         APB2ENR      SPI1EN        LL_APB2_GRP1_IsEnabledClock\n
  784.   *         APB2ENR      TIM10EN       LL_APB2_GRP1_IsEnabledClock\n
  785.   *         APB2ENR      TIM11EN       LL_APB2_GRP1_IsEnabledClock\n
  786.   *         APB2ENR      TIM15EN       LL_APB2_GRP1_IsEnabledClock\n
  787.   *         APB2ENR      TIM16EN       LL_APB2_GRP1_IsEnabledClock\n
  788.   *         APB2ENR      TIM17EN       LL_APB2_GRP1_IsEnabledClock\n
  789.   *         APB2ENR      TIM1EN        LL_APB2_GRP1_IsEnabledClock\n
  790.   *         APB2ENR      TIM8EN        LL_APB2_GRP1_IsEnabledClock\n
  791.   *         APB2ENR      TIM9EN        LL_APB2_GRP1_IsEnabledClock\n
  792.   *         APB2ENR      USART1EN      LL_APB2_GRP1_IsEnabledClock
  793.   * @param  Periphs This parameter can be a combination of the following values:
  794.   *         @arg @ref LL_APB2_GRP1_PERIPH_ADC1
  795.   *         @arg @ref LL_APB2_GRP1_PERIPH_ADC2 (*)
  796.   *         @arg @ref LL_APB2_GRP1_PERIPH_ADC3 (*)
  797.   *         @arg @ref LL_APB2_GRP1_PERIPH_AFIO
  798.   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOA
  799.   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOB
  800.   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOC
  801.   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOD
  802.   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOE (*)
  803.   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOF (*)
  804.   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOG (*)
  805.   *         @arg @ref LL_APB2_GRP1_PERIPH_SPI1
  806.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM10 (*)
  807.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM11 (*)
  808.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM15 (*)
  809.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM16 (*)
  810.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*)
  811.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM1
  812.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM8 (*)
  813.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM9 (*)
  814.   *         @arg @ref LL_APB2_GRP1_PERIPH_USART1
  815.   *
  816.   *         (*) value not defined in all devices.
  817.   * @retval State of Periphs (1 or 0).
  818. */
  819. __STATIC_INLINE uint32_t LL_APB2_GRP1_IsEnabledClock(uint32_t Periphs)
  820. {
  821.   return (READ_BIT(RCC->APB2ENR, Periphs) == Periphs);
  822. }
  823.  
  824. /**
  825.   * @brief  Disable APB2 peripherals clock.
  826.   * @rmtoll APB2ENR      ADC1EN        LL_APB2_GRP1_DisableClock\n
  827.   *         APB2ENR      ADC2EN        LL_APB2_GRP1_DisableClock\n
  828.   *         APB2ENR      ADC3EN        LL_APB2_GRP1_DisableClock\n
  829.   *         APB2ENR      AFIOEN        LL_APB2_GRP1_DisableClock\n
  830.   *         APB2ENR      IOPAEN        LL_APB2_GRP1_DisableClock\n
  831.   *         APB2ENR      IOPBEN        LL_APB2_GRP1_DisableClock\n
  832.   *         APB2ENR      IOPCEN        LL_APB2_GRP1_DisableClock\n
  833.   *         APB2ENR      IOPDEN        LL_APB2_GRP1_DisableClock\n
  834.   *         APB2ENR      IOPEEN        LL_APB2_GRP1_DisableClock\n
  835.   *         APB2ENR      IOPFEN        LL_APB2_GRP1_DisableClock\n
  836.   *         APB2ENR      IOPGEN        LL_APB2_GRP1_DisableClock\n
  837.   *         APB2ENR      SPI1EN        LL_APB2_GRP1_DisableClock\n
  838.   *         APB2ENR      TIM10EN       LL_APB2_GRP1_DisableClock\n
  839.   *         APB2ENR      TIM11EN       LL_APB2_GRP1_DisableClock\n
  840.   *         APB2ENR      TIM15EN       LL_APB2_GRP1_DisableClock\n
  841.   *         APB2ENR      TIM16EN       LL_APB2_GRP1_DisableClock\n
  842.   *         APB2ENR      TIM17EN       LL_APB2_GRP1_DisableClock\n
  843.   *         APB2ENR      TIM1EN        LL_APB2_GRP1_DisableClock\n
  844.   *         APB2ENR      TIM8EN        LL_APB2_GRP1_DisableClock\n
  845.   *         APB2ENR      TIM9EN        LL_APB2_GRP1_DisableClock\n
  846.   *         APB2ENR      USART1EN      LL_APB2_GRP1_DisableClock
  847.   * @param  Periphs This parameter can be a combination of the following values:
  848.   *         @arg @ref LL_APB2_GRP1_PERIPH_ADC1
  849.   *         @arg @ref LL_APB2_GRP1_PERIPH_ADC2 (*)
  850.   *         @arg @ref LL_APB2_GRP1_PERIPH_ADC3 (*)
  851.   *         @arg @ref LL_APB2_GRP1_PERIPH_AFIO
  852.   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOA
  853.   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOB
  854.   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOC
  855.   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOD
  856.   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOE (*)
  857.   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOF (*)
  858.   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOG (*)
  859.   *         @arg @ref LL_APB2_GRP1_PERIPH_SPI1
  860.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM10 (*)
  861.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM11 (*)
  862.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM15 (*)
  863.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM16 (*)
  864.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*)
  865.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM1
  866.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM8 (*)
  867.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM9 (*)
  868.   *         @arg @ref LL_APB2_GRP1_PERIPH_USART1
  869.   *
  870.   *         (*) value not defined in all devices.
  871.   * @retval None
  872. */
  873. __STATIC_INLINE void LL_APB2_GRP1_DisableClock(uint32_t Periphs)
  874. {
  875.   CLEAR_BIT(RCC->APB2ENR, Periphs);
  876. }
  877.  
  878. /**
  879.   * @brief  Force APB2 peripherals reset.
  880.   * @rmtoll APB2RSTR     ADC1RST       LL_APB2_GRP1_ForceReset\n
  881.   *         APB2RSTR     ADC2RST       LL_APB2_GRP1_ForceReset\n
  882.   *         APB2RSTR     ADC3RST       LL_APB2_GRP1_ForceReset\n
  883.   *         APB2RSTR     AFIORST       LL_APB2_GRP1_ForceReset\n
  884.   *         APB2RSTR     IOPARST       LL_APB2_GRP1_ForceReset\n
  885.   *         APB2RSTR     IOPBRST       LL_APB2_GRP1_ForceReset\n
  886.   *         APB2RSTR     IOPCRST       LL_APB2_GRP1_ForceReset\n
  887.   *         APB2RSTR     IOPDRST       LL_APB2_GRP1_ForceReset\n
  888.   *         APB2RSTR     IOPERST       LL_APB2_GRP1_ForceReset\n
  889.   *         APB2RSTR     IOPFRST       LL_APB2_GRP1_ForceReset\n
  890.   *         APB2RSTR     IOPGRST       LL_APB2_GRP1_ForceReset\n
  891.   *         APB2RSTR     SPI1RST       LL_APB2_GRP1_ForceReset\n
  892.   *         APB2RSTR     TIM10RST      LL_APB2_GRP1_ForceReset\n
  893.   *         APB2RSTR     TIM11RST      LL_APB2_GRP1_ForceReset\n
  894.   *         APB2RSTR     TIM15RST      LL_APB2_GRP1_ForceReset\n
  895.   *         APB2RSTR     TIM16RST      LL_APB2_GRP1_ForceReset\n
  896.   *         APB2RSTR     TIM17RST      LL_APB2_GRP1_ForceReset\n
  897.   *         APB2RSTR     TIM1RST       LL_APB2_GRP1_ForceReset\n
  898.   *         APB2RSTR     TIM8RST       LL_APB2_GRP1_ForceReset\n
  899.   *         APB2RSTR     TIM9RST       LL_APB2_GRP1_ForceReset\n
  900.   *         APB2RSTR     USART1RST     LL_APB2_GRP1_ForceReset
  901.   * @param  Periphs This parameter can be a combination of the following values:
  902.   *         @arg @ref LL_APB2_GRP1_PERIPH_ALL
  903.   *         @arg @ref LL_APB2_GRP1_PERIPH_ADC1
  904.   *         @arg @ref LL_APB2_GRP1_PERIPH_ADC2 (*)
  905.   *         @arg @ref LL_APB2_GRP1_PERIPH_ADC3 (*)
  906.   *         @arg @ref LL_APB2_GRP1_PERIPH_AFIO
  907.   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOA
  908.   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOB
  909.   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOC
  910.   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOD
  911.   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOE (*)
  912.   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOF (*)
  913.   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOG (*)
  914.   *         @arg @ref LL_APB2_GRP1_PERIPH_SPI1
  915.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM10 (*)
  916.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM11 (*)
  917.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM15 (*)
  918.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM16 (*)
  919.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*)
  920.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM1
  921.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM8 (*)
  922.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM9 (*)
  923.   *         @arg @ref LL_APB2_GRP1_PERIPH_USART1
  924.   *
  925.   *         (*) value not defined in all devices.
  926.   * @retval None
  927. */
  928. __STATIC_INLINE void LL_APB2_GRP1_ForceReset(uint32_t Periphs)
  929. {
  930.   SET_BIT(RCC->APB2RSTR, Periphs);
  931. }
  932.  
  933. /**
  934.   * @brief  Release APB2 peripherals reset.
  935.   * @rmtoll APB2RSTR     ADC1RST       LL_APB2_GRP1_ReleaseReset\n
  936.   *         APB2RSTR     ADC2RST       LL_APB2_GRP1_ReleaseReset\n
  937.   *         APB2RSTR     ADC3RST       LL_APB2_GRP1_ReleaseReset\n
  938.   *         APB2RSTR     AFIORST       LL_APB2_GRP1_ReleaseReset\n
  939.   *         APB2RSTR     IOPARST       LL_APB2_GRP1_ReleaseReset\n
  940.   *         APB2RSTR     IOPBRST       LL_APB2_GRP1_ReleaseReset\n
  941.   *         APB2RSTR     IOPCRST       LL_APB2_GRP1_ReleaseReset\n
  942.   *         APB2RSTR     IOPDRST       LL_APB2_GRP1_ReleaseReset\n
  943.   *         APB2RSTR     IOPERST       LL_APB2_GRP1_ReleaseReset\n
  944.   *         APB2RSTR     IOPFRST       LL_APB2_GRP1_ReleaseReset\n
  945.   *         APB2RSTR     IOPGRST       LL_APB2_GRP1_ReleaseReset\n
  946.   *         APB2RSTR     SPI1RST       LL_APB2_GRP1_ReleaseReset\n
  947.   *         APB2RSTR     TIM10RST      LL_APB2_GRP1_ReleaseReset\n
  948.   *         APB2RSTR     TIM11RST      LL_APB2_GRP1_ReleaseReset\n
  949.   *         APB2RSTR     TIM15RST      LL_APB2_GRP1_ReleaseReset\n
  950.   *         APB2RSTR     TIM16RST      LL_APB2_GRP1_ReleaseReset\n
  951.   *         APB2RSTR     TIM17RST      LL_APB2_GRP1_ReleaseReset\n
  952.   *         APB2RSTR     TIM1RST       LL_APB2_GRP1_ReleaseReset\n
  953.   *         APB2RSTR     TIM8RST       LL_APB2_GRP1_ReleaseReset\n
  954.   *         APB2RSTR     TIM9RST       LL_APB2_GRP1_ReleaseReset\n
  955.   *         APB2RSTR     USART1RST     LL_APB2_GRP1_ReleaseReset
  956.   * @param  Periphs This parameter can be a combination of the following values:
  957.   *         @arg @ref LL_APB2_GRP1_PERIPH_ALL
  958.   *         @arg @ref LL_APB2_GRP1_PERIPH_ADC1
  959.   *         @arg @ref LL_APB2_GRP1_PERIPH_ADC2 (*)
  960.   *         @arg @ref LL_APB2_GRP1_PERIPH_ADC3 (*)
  961.   *         @arg @ref LL_APB2_GRP1_PERIPH_AFIO
  962.   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOA
  963.   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOB
  964.   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOC
  965.   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOD
  966.   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOE (*)
  967.   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOF (*)
  968.   *         @arg @ref LL_APB2_GRP1_PERIPH_GPIOG (*)
  969.   *         @arg @ref LL_APB2_GRP1_PERIPH_SPI1
  970.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM10 (*)
  971.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM11 (*)
  972.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM15 (*)
  973.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM16 (*)
  974.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*)
  975.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM1
  976.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM8 (*)
  977.   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM9 (*)
  978.   *         @arg @ref LL_APB2_GRP1_PERIPH_USART1
  979.   *
  980.   *         (*) value not defined in all devices.
  981.   * @retval None
  982. */
  983. __STATIC_INLINE void LL_APB2_GRP1_ReleaseReset(uint32_t Periphs)
  984. {
  985.   CLEAR_BIT(RCC->APB2RSTR, Periphs);
  986. }
  987.  
  988. /**
  989.   * @}
  990.   */
  991.  
  992.  
  993. /**
  994.   * @}
  995.   */
  996.  
  997. /**
  998.   * @}
  999.   */
  1000.  
  1001. #endif /* defined(RCC) */
  1002.  
  1003. /**
  1004.   * @}
  1005.   */
  1006.  
  1007. #ifdef __cplusplus
  1008. }
  1009. #endif
  1010.  
  1011. #endif /* __STM32F1xx_LL_BUS_H */
  1012.  
  1013.