Subversion Repositories dashGPS

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