DIY Logging Volt/Ampmeter
stm32f1xx_ll_bus.h
Go to the documentation of this file.
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****/
READ_BIT
#define READ_BIT(REG, BIT)
Definition: stm32f1xx.h:182
__STATIC_INLINE
#define __STATIC_INLINE
Definition: cmsis_armcc.h:59
RCC
#define RCC
Definition: stm32f103xb.h:684
stm32f1xx.h
CMSIS STM32F1xx Device Peripheral Access Layer Header File.
__IO
#define __IO
Definition: core_armv8mbl.h:196
SET_BIT
#define SET_BIT(REG, BIT)
Definition: stm32f1xx.h:178
CLEAR_BIT
#define CLEAR_BIT(REG, BIT)
Definition: stm32f1xx.h:180