1 /**
2 ******************************************************************************
3 * @file stm32l1xx_ll_bus.h
4 * @author MCD Application Team
5 * @brief Header file of BUS LL module.
6
7 @verbatim
8 ##### RCC Limitations #####
9 ==============================================================================
10 [..]
11 A delay between an RCC peripheral clock enable and the effective peripheral
12 enabling should be taken into account in order to manage the peripheral read/write
13 from/to registers.
14 (+) This delay depends on the peripheral mapping.
15 (++) AHB & APB peripherals, 1 dummy read is necessary
16
17 [..]
18 Workarounds:
19 (#) For AHB & APB peripherals, a dummy read to the peripheral register has been
20 inserted in each LL_{BUS}_GRP{x}_EnableClock() function.
21
22 @endverbatim
23 ******************************************************************************
24 * @attention
25 *
26 * Copyright (c) 2017 STMicroelectronics.
27 * All rights reserved.
28 *
29 * This software is licensed under terms that can be found in the LICENSE file in
30 * the root directory of this software component.
31 * If no LICENSE file comes with this software, it is provided AS-IS.
32 ******************************************************************************
33 */
34
35 /* Define to prevent recursive inclusion -------------------------------------*/
36 #ifndef __STM32L1xx_LL_BUS_H
37 #define __STM32L1xx_LL_BUS_H
38
39 #ifdef __cplusplus
40 extern "C" {
41 #endif
42
43 /* Includes ------------------------------------------------------------------*/
44 #include "stm32l1xx.h"
45
46 /** @addtogroup STM32L1xx_LL_Driver
47 * @{
48 */
49
50 #if defined(RCC)
51
52 /** @defgroup BUS_LL BUS
53 * @{
54 */
55
56 /* Private types -------------------------------------------------------------*/
57 /* Private variables ---------------------------------------------------------*/
58
59 /* Private constants ---------------------------------------------------------*/
60
61 /* Private macros ------------------------------------------------------------*/
62
63 /* Exported types ------------------------------------------------------------*/
64 /* Exported constants --------------------------------------------------------*/
65 /** @defgroup BUS_LL_Exported_Constants BUS Exported Constants
66 * @{
67 */
68
69 /** @defgroup BUS_LL_EC_AHB1_GRP1_PERIPH AHB1 GRP1 PERIPH
70 * @{
71 */
72 #define LL_AHB1_GRP1_PERIPH_ALL 0xFFFFFFFFU
73 #define LL_AHB1_GRP1_PERIPH_GPIOA RCC_AHBENR_GPIOAEN
74 #define LL_AHB1_GRP1_PERIPH_GPIOB RCC_AHBENR_GPIOBEN
75 #define LL_AHB1_GRP1_PERIPH_GPIOC RCC_AHBENR_GPIOCEN
76 #define LL_AHB1_GRP1_PERIPH_GPIOD RCC_AHBENR_GPIODEN
77 #if defined(GPIOE)
78 #define LL_AHB1_GRP1_PERIPH_GPIOE RCC_AHBENR_GPIOEEN
79 #endif/*GPIOE*/
80 #define LL_AHB1_GRP1_PERIPH_GPIOH RCC_AHBENR_GPIOHEN
81 #if defined(GPIOF)
82 #define LL_AHB1_GRP1_PERIPH_GPIOF RCC_AHBENR_GPIOFEN
83 #endif/*GPIOF*/
84 #if defined(GPIOG)
85 #define LL_AHB1_GRP1_PERIPH_GPIOG RCC_AHBENR_GPIOGEN
86 #endif/*GPIOG*/
87 #define LL_AHB1_GRP1_PERIPH_SRAM RCC_AHBLPENR_SRAMLPEN
88 #define LL_AHB1_GRP1_PERIPH_CRC RCC_AHBENR_CRCEN
89 #define LL_AHB1_GRP1_PERIPH_FLASH RCC_AHBENR_FLITFEN
90 #define LL_AHB1_GRP1_PERIPH_DMA1 RCC_AHBENR_DMA1EN
91 #if defined(DMA2)
92 #define LL_AHB1_GRP1_PERIPH_DMA2 RCC_AHBENR_DMA2EN
93 #endif/*DMA2*/
94 #if defined(AES)
95 #define LL_AHB1_GRP1_PERIPH_CRYP RCC_AHBENR_AESEN
96 #endif/*AES*/
97 #if defined(FSMC_Bank1)
98 #define LL_AHB1_GRP1_PERIPH_FSMC RCC_AHBENR_FSMCEN
99 #endif/*FSMC_Bank1*/
100 /**
101 * @}
102 */
103
104 /** @defgroup BUS_LL_EC_APB1_GRP1_PERIPH APB1 GRP1 PERIPH
105 * @{
106 */
107 #define LL_APB1_GRP1_PERIPH_ALL 0xFFFFFFFFU
108 #define LL_APB1_GRP1_PERIPH_TIM2 RCC_APB1ENR_TIM2EN
109 #define LL_APB1_GRP1_PERIPH_TIM3 RCC_APB1ENR_TIM3EN
110 #define LL_APB1_GRP1_PERIPH_TIM4 RCC_APB1ENR_TIM4EN
111 #if defined(TIM5)
112 #define LL_APB1_GRP1_PERIPH_TIM5 RCC_APB1ENR_TIM5EN
113 #endif /*TIM5*/
114 #define LL_APB1_GRP1_PERIPH_TIM6 RCC_APB1ENR_TIM6EN
115 #define LL_APB1_GRP1_PERIPH_TIM7 RCC_APB1ENR_TIM7EN
116 #if defined(LCD)
117 #define LL_APB1_GRP1_PERIPH_LCD RCC_APB1ENR_LCDEN
118 #endif /*LCD*/
119 #define LL_APB1_GRP1_PERIPH_WWDG RCC_APB1ENR_WWDGEN
120 #define LL_APB1_GRP1_PERIPH_SPI2 RCC_APB1ENR_SPI2EN
121 #if defined(SPI3)
122 #define LL_APB1_GRP1_PERIPH_SPI3 RCC_APB1ENR_SPI3EN
123 #endif /*SPI3*/
124 #define LL_APB1_GRP1_PERIPH_USART2 RCC_APB1ENR_USART2EN
125 #define LL_APB1_GRP1_PERIPH_USART3 RCC_APB1ENR_USART3EN
126 #if defined(UART4)
127 #define LL_APB1_GRP1_PERIPH_UART4 RCC_APB1ENR_UART4EN
128 #endif /*UART4*/
129 #if defined(UART5)
130 #define LL_APB1_GRP1_PERIPH_UART5 RCC_APB1ENR_UART5EN
131 #endif /*UART5*/
132 #define LL_APB1_GRP1_PERIPH_I2C1 RCC_APB1ENR_I2C1EN
133 #define LL_APB1_GRP1_PERIPH_I2C2 RCC_APB1ENR_I2C2EN
134 #define LL_APB1_GRP1_PERIPH_USB RCC_APB1ENR_USBEN
135 #define LL_APB1_GRP1_PERIPH_PWR RCC_APB1ENR_PWREN
136 #define LL_APB1_GRP1_PERIPH_DAC1 RCC_APB1ENR_DACEN
137 #define LL_APB1_GRP1_PERIPH_COMP RCC_APB1ENR_COMPEN
138 #if defined(OPAMP)
139 /* Note: Peripherals COMP and OPAMP share the same clock domain */
140 #define LL_APB1_GRP1_PERIPH_OPAMP LL_APB1_GRP1_PERIPH_COMP
141 #endif
142 /**
143 * @}
144 */
145
146 /** @defgroup BUS_LL_EC_APB2_GRP1_PERIPH APB2 GRP1 PERIPH
147 * @{
148 */
149 #define LL_APB2_GRP1_PERIPH_ALL 0xFFFFFFFFU
150 #define LL_APB2_GRP1_PERIPH_SYSCFG RCC_APB2ENR_SYSCFGEN
151 #define LL_APB2_GRP1_PERIPH_TIM9 RCC_APB2ENR_TIM9EN
152 #define LL_APB2_GRP1_PERIPH_TIM10 RCC_APB2ENR_TIM10EN
153 #define LL_APB2_GRP1_PERIPH_TIM11 RCC_APB2ENR_TIM11EN
154 #define LL_APB2_GRP1_PERIPH_ADC1 RCC_APB2ENR_ADC1EN
155 #if defined(SDIO)
156 #define LL_APB2_GRP1_PERIPH_SDIO RCC_APB2ENR_SDIOEN
157 #endif /*SDIO*/
158 #define LL_APB2_GRP1_PERIPH_SPI1 RCC_APB2ENR_SPI1EN
159 #define LL_APB2_GRP1_PERIPH_USART1 RCC_APB2ENR_USART1EN
160 /**
161 * @}
162 */
163
164 /**
165 * @}
166 */
167
168 /* Exported macro ------------------------------------------------------------*/
169
170 /* Exported functions --------------------------------------------------------*/
171 /** @defgroup BUS_LL_Exported_Functions BUS Exported Functions
172 * @{
173 */
174
175 /** @defgroup BUS_LL_EF_AHB1 AHB1
176 * @{
177 */
178
179 /**
180 * @brief Enable AHB1 peripherals clock.
181 * @rmtoll AHBENR GPIOAEN LL_AHB1_GRP1_EnableClock\n
182 * AHBENR GPIOBEN LL_AHB1_GRP1_EnableClock\n
183 * AHBENR GPIOCEN LL_AHB1_GRP1_EnableClock\n
184 * AHBENR GPIODEN LL_AHB1_GRP1_EnableClock\n
185 * AHBENR GPIOEEN LL_AHB1_GRP1_EnableClock\n
186 * AHBENR GPIOHEN LL_AHB1_GRP1_EnableClock\n
187 * AHBENR GPIOFEN LL_AHB1_GRP1_EnableClock\n
188 * AHBENR GPIOGEN LL_AHB1_GRP1_EnableClock\n
189 * AHBENR CRCEN LL_AHB1_GRP1_EnableClock\n
190 * AHBENR FLITFEN LL_AHB1_GRP1_EnableClock\n
191 * AHBENR DMA1EN LL_AHB1_GRP1_EnableClock\n
192 * AHBENR DMA2EN LL_AHB1_GRP1_EnableClock\n
193 * AHBENR AESEN LL_AHB1_GRP1_EnableClock\n
194 * AHBENR FSMCEN LL_AHB1_GRP1_EnableClock
195 * @param Periphs This parameter can be a combination of the following values:
196 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA
197 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB
198 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC
199 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD
200 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE (*)
201 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH
202 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF (*)
203 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG (*)
204 * @arg @ref LL_AHB1_GRP1_PERIPH_CRC
205 * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
206 * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1
207 * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 (*)
208 * @arg @ref LL_AHB1_GRP1_PERIPH_CRYP (*)
209 * @arg @ref LL_AHB1_GRP1_PERIPH_FSMC (*)
210 *
211 * (*) value not defined in all devices.
212 * @retval None
213 */
LL_AHB1_GRP1_EnableClock(uint32_t Periphs)214 __STATIC_INLINE void LL_AHB1_GRP1_EnableClock(uint32_t Periphs)
215 {
216 __IO uint32_t tmpreg;
217 SET_BIT(RCC->AHBENR, Periphs);
218 /* Delay after an RCC peripheral clock enabling */
219 tmpreg = READ_BIT(RCC->AHBENR, Periphs);
220 (void)tmpreg;
221 }
222
223 /**
224 * @brief Check if AHB1 peripheral clock is enabled or not
225 * @rmtoll AHBENR GPIOAEN LL_AHB1_GRP1_IsEnabledClock\n
226 * AHBENR GPIOBEN LL_AHB1_GRP1_IsEnabledClock\n
227 * AHBENR GPIOCEN LL_AHB1_GRP1_IsEnabledClock\n
228 * AHBENR GPIODEN LL_AHB1_GRP1_IsEnabledClock\n
229 * AHBENR GPIOEEN LL_AHB1_GRP1_IsEnabledClock\n
230 * AHBENR GPIOHEN LL_AHB1_GRP1_IsEnabledClock\n
231 * AHBENR GPIOFEN LL_AHB1_GRP1_IsEnabledClock\n
232 * AHBENR GPIOGEN LL_AHB1_GRP1_IsEnabledClock\n
233 * AHBENR CRCEN LL_AHB1_GRP1_IsEnabledClock\n
234 * AHBENR FLITFEN LL_AHB1_GRP1_IsEnabledClock\n
235 * AHBENR DMA1EN LL_AHB1_GRP1_IsEnabledClock\n
236 * AHBENR DMA2EN LL_AHB1_GRP1_IsEnabledClock\n
237 * AHBENR AESEN LL_AHB1_GRP1_IsEnabledClock\n
238 * AHBENR FSMCEN LL_AHB1_GRP1_IsEnabledClock
239 * @param Periphs This parameter can be a combination of the following values:
240 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA
241 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB
242 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC
243 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD
244 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE (*)
245 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH
246 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF (*)
247 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG (*)
248 * @arg @ref LL_AHB1_GRP1_PERIPH_CRC
249 * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
250 * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1
251 * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 (*)
252 * @arg @ref LL_AHB1_GRP1_PERIPH_CRYP (*)
253 * @arg @ref LL_AHB1_GRP1_PERIPH_FSMC (*)
254 *
255 * (*) value not defined in all devices.
256 * @retval State of Periphs (1 or 0).
257 */
LL_AHB1_GRP1_IsEnabledClock(uint32_t Periphs)258 __STATIC_INLINE uint32_t LL_AHB1_GRP1_IsEnabledClock(uint32_t Periphs)
259 {
260 return ((READ_BIT(RCC->AHBENR, Periphs) == (Periphs)) ? 1UL : 0UL);
261 }
262
263 /**
264 * @brief Disable AHB1 peripherals clock.
265 * @rmtoll AHBENR GPIOAEN LL_AHB1_GRP1_DisableClock\n
266 * AHBENR GPIOBEN LL_AHB1_GRP1_DisableClock\n
267 * AHBENR GPIOCEN LL_AHB1_GRP1_DisableClock\n
268 * AHBENR GPIODEN LL_AHB1_GRP1_DisableClock\n
269 * AHBENR GPIOEEN LL_AHB1_GRP1_DisableClock\n
270 * AHBENR GPIOHEN LL_AHB1_GRP1_DisableClock\n
271 * AHBENR GPIOFEN LL_AHB1_GRP1_DisableClock\n
272 * AHBENR GPIOGEN LL_AHB1_GRP1_DisableClock\n
273 * AHBENR CRCEN LL_AHB1_GRP1_DisableClock\n
274 * AHBENR FLITFEN LL_AHB1_GRP1_DisableClock\n
275 * AHBENR DMA1EN LL_AHB1_GRP1_DisableClock\n
276 * AHBENR DMA2EN LL_AHB1_GRP1_DisableClock\n
277 * AHBENR AESEN LL_AHB1_GRP1_DisableClock\n
278 * AHBENR FSMCEN LL_AHB1_GRP1_DisableClock
279 * @param Periphs This parameter can be a combination of the following values:
280 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA
281 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB
282 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC
283 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD
284 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE (*)
285 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH
286 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF (*)
287 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG (*)
288 * @arg @ref LL_AHB1_GRP1_PERIPH_CRC
289 * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
290 * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1
291 * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 (*)
292 * @arg @ref LL_AHB1_GRP1_PERIPH_CRYP (*)
293 * @arg @ref LL_AHB1_GRP1_PERIPH_FSMC (*)
294 *
295 * (*) value not defined in all devices.
296 * @retval None
297 */
LL_AHB1_GRP1_DisableClock(uint32_t Periphs)298 __STATIC_INLINE void LL_AHB1_GRP1_DisableClock(uint32_t Periphs)
299 {
300 CLEAR_BIT(RCC->AHBENR, Periphs);
301 }
302
303 /**
304 * @brief Force AHB1 peripherals reset.
305 * @rmtoll AHBRSTR GPIOARST LL_AHB1_GRP1_ForceReset\n
306 * AHBRSTR GPIOBRST LL_AHB1_GRP1_ForceReset\n
307 * AHBRSTR GPIOCRST LL_AHB1_GRP1_ForceReset\n
308 * AHBRSTR GPIODRST LL_AHB1_GRP1_ForceReset\n
309 * AHBRSTR GPIOERST LL_AHB1_GRP1_ForceReset\n
310 * AHBRSTR GPIOHRST LL_AHB1_GRP1_ForceReset\n
311 * AHBRSTR GPIOFRST LL_AHB1_GRP1_ForceReset\n
312 * AHBRSTR GPIOGRST LL_AHB1_GRP1_ForceReset\n
313 * AHBRSTR CRCRST LL_AHB1_GRP1_ForceReset\n
314 * AHBRSTR FLITFRST LL_AHB1_GRP1_ForceReset\n
315 * AHBRSTR DMA1RST LL_AHB1_GRP1_ForceReset\n
316 * AHBRSTR DMA2RST LL_AHB1_GRP1_ForceReset\n
317 * AHBRSTR AESRST LL_AHB1_GRP1_ForceReset\n
318 * AHBRSTR FSMCRST LL_AHB1_GRP1_ForceReset
319 * @param Periphs This parameter can be a combination of the following values:
320 * @arg @ref LL_AHB1_GRP1_PERIPH_ALL
321 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA
322 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB
323 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC
324 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD
325 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE (*)
326 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH
327 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF (*)
328 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG (*)
329 * @arg @ref LL_AHB1_GRP1_PERIPH_CRC
330 * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
331 * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1
332 * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 (*)
333 * @arg @ref LL_AHB1_GRP1_PERIPH_CRYP (*)
334 * @arg @ref LL_AHB1_GRP1_PERIPH_FSMC (*)
335 *
336 * (*) value not defined in all devices.
337 * @retval None
338 */
LL_AHB1_GRP1_ForceReset(uint32_t Periphs)339 __STATIC_INLINE void LL_AHB1_GRP1_ForceReset(uint32_t Periphs)
340 {
341 SET_BIT(RCC->AHBRSTR, Periphs);
342 }
343
344 /**
345 * @brief Release AHB1 peripherals reset.
346 * @rmtoll AHBRSTR GPIOARST LL_AHB1_GRP1_ReleaseReset\n
347 * AHBRSTR GPIOBRST LL_AHB1_GRP1_ReleaseReset\n
348 * AHBRSTR GPIOCRST LL_AHB1_GRP1_ReleaseReset\n
349 * AHBRSTR GPIODRST LL_AHB1_GRP1_ReleaseReset\n
350 * AHBRSTR GPIOERST LL_AHB1_GRP1_ReleaseReset\n
351 * AHBRSTR GPIOHRST LL_AHB1_GRP1_ReleaseReset\n
352 * AHBRSTR GPIOFRST LL_AHB1_GRP1_ReleaseReset\n
353 * AHBRSTR GPIOGRST LL_AHB1_GRP1_ReleaseReset\n
354 * AHBRSTR CRCRST LL_AHB1_GRP1_ReleaseReset\n
355 * AHBRSTR FLITFRST LL_AHB1_GRP1_ReleaseReset\n
356 * AHBRSTR DMA1RST LL_AHB1_GRP1_ReleaseReset\n
357 * AHBRSTR DMA2RST LL_AHB1_GRP1_ReleaseReset\n
358 * AHBRSTR AESRST LL_AHB1_GRP1_ReleaseReset\n
359 * AHBRSTR FSMCRST LL_AHB1_GRP1_ReleaseReset
360 * @param Periphs This parameter can be a combination of the following values:
361 * @arg @ref LL_AHB1_GRP1_PERIPH_ALL
362 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA
363 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB
364 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC
365 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD
366 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE (*)
367 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH
368 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF (*)
369 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG (*)
370 * @arg @ref LL_AHB1_GRP1_PERIPH_CRC
371 * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
372 * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1
373 * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 (*)
374 * @arg @ref LL_AHB1_GRP1_PERIPH_CRYP (*)
375 * @arg @ref LL_AHB1_GRP1_PERIPH_FSMC (*)
376 *
377 * (*) value not defined in all devices.
378 * @retval None
379 */
LL_AHB1_GRP1_ReleaseReset(uint32_t Periphs)380 __STATIC_INLINE void LL_AHB1_GRP1_ReleaseReset(uint32_t Periphs)
381 {
382 CLEAR_BIT(RCC->AHBRSTR, Periphs);
383 }
384
385 /**
386 * @brief Enable AHB1 peripherals clock during Low Power (Sleep) mode.
387 * @rmtoll AHBLPENR GPIOALPEN LL_AHB1_GRP1_EnableClockSleep\n
388 * AHBLPENR GPIOBLPEN LL_AHB1_GRP1_EnableClockSleep\n
389 * AHBLPENR GPIOCLPEN LL_AHB1_GRP1_EnableClockSleep\n
390 * AHBLPENR GPIODLPEN LL_AHB1_GRP1_EnableClockSleep\n
391 * AHBLPENR GPIOELPEN LL_AHB1_GRP1_EnableClockSleep\n
392 * AHBLPENR GPIOHLPEN LL_AHB1_GRP1_EnableClockSleep\n
393 * AHBLPENR GPIOFLPEN LL_AHB1_GRP1_EnableClockSleep\n
394 * AHBLPENR GPIOGLPEN LL_AHB1_GRP1_EnableClockSleep\n
395 * AHBLPENR CRCLPEN LL_AHB1_GRP1_EnableClockSleep\n
396 * AHBLPENR FLITFLPEN LL_AHB1_GRP1_EnableClockSleep\n
397 * AHBLPENR SRAMLPEN LL_AHB1_GRP1_EnableClockSleep\n
398 * AHBLPENR DMA1LPEN LL_AHB1_GRP1_EnableClockSleep\n
399 * AHBLPENR DMA2LPEN LL_AHB1_GRP1_EnableClockSleep\n
400 * AHBLPENR AESLPEN LL_AHB1_GRP1_EnableClockSleep\n
401 * AHBLPENR FSMCLPEN LL_AHB1_GRP1_EnableClockSleep
402 * @param Periphs This parameter can be a combination of the following values:
403 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA
404 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB
405 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC
406 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD
407 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE (*)
408 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH
409 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF (*)
410 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG (*)
411 * @arg @ref LL_AHB1_GRP1_PERIPH_CRC
412 * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
413 * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM
414 * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1
415 * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 (*)
416 * @arg @ref LL_AHB1_GRP1_PERIPH_CRYP (*)
417 * @arg @ref LL_AHB1_GRP1_PERIPH_FSMC (*)
418 *
419 * (*) value not defined in all devices.
420 * @retval None
421 */
LL_AHB1_GRP1_EnableClockSleep(uint32_t Periphs)422 __STATIC_INLINE void LL_AHB1_GRP1_EnableClockSleep(uint32_t Periphs)
423 {
424 __IO uint32_t tmpreg;
425 SET_BIT(RCC->AHBLPENR, Periphs);
426 /* Delay after an RCC peripheral clock enabling */
427 tmpreg = READ_BIT(RCC->AHBLPENR, Periphs);
428 (void)tmpreg;
429 }
430
431 /**
432 * @brief Disable AHB1 peripherals clock during Low Power (Sleep) mode.
433 * @rmtoll AHBLPENR GPIOALPEN LL_AHB1_GRP1_DisableClockSleep\n
434 * AHBLPENR GPIOBLPEN LL_AHB1_GRP1_DisableClockSleep\n
435 * AHBLPENR GPIOCLPEN LL_AHB1_GRP1_DisableClockSleep\n
436 * AHBLPENR GPIODLPEN LL_AHB1_GRP1_DisableClockSleep\n
437 * AHBLPENR GPIOELPEN LL_AHB1_GRP1_DisableClockSleep\n
438 * AHBLPENR GPIOHLPEN LL_AHB1_GRP1_DisableClockSleep\n
439 * AHBLPENR GPIOFLPEN LL_AHB1_GRP1_DisableClockSleep\n
440 * AHBLPENR GPIOGLPEN LL_AHB1_GRP1_DisableClockSleep\n
441 * AHBLPENR CRCLPEN LL_AHB1_GRP1_DisableClockSleep\n
442 * AHBLPENR FLITFLPEN LL_AHB1_GRP1_DisableClockSleep\n
443 * AHBLPENR SRAMLPEN LL_AHB1_GRP1_DisableClockSleep\n
444 * AHBLPENR DMA1LPEN LL_AHB1_GRP1_DisableClockSleep\n
445 * AHBLPENR DMA2LPEN LL_AHB1_GRP1_DisableClockSleep\n
446 * AHBLPENR AESLPEN LL_AHB1_GRP1_DisableClockSleep\n
447 * AHBLPENR FSMCLPEN LL_AHB1_GRP1_DisableClockSleep
448 * @param Periphs This parameter can be a combination of the following values:
449 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOA
450 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOB
451 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOC
452 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOD
453 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOE (*)
454 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOH
455 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOF (*)
456 * @arg @ref LL_AHB1_GRP1_PERIPH_GPIOG (*)
457 * @arg @ref LL_AHB1_GRP1_PERIPH_CRC
458 * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
459 * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM
460 * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1
461 * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 (*)
462 * @arg @ref LL_AHB1_GRP1_PERIPH_CRYP (*)
463 * @arg @ref LL_AHB1_GRP1_PERIPH_FSMC (*)
464 *
465 * (*) value not defined in all devices.
466 * @retval None
467 */
LL_AHB1_GRP1_DisableClockSleep(uint32_t Periphs)468 __STATIC_INLINE void LL_AHB1_GRP1_DisableClockSleep(uint32_t Periphs)
469 {
470 CLEAR_BIT(RCC->AHBLPENR, Periphs);
471 }
472
473 /**
474 * @}
475 */
476
477 /** @defgroup BUS_LL_EF_APB1 APB1
478 * @{
479 */
480
481 /**
482 * @brief Enable APB1 peripherals clock.
483 * @rmtoll APB1ENR TIM2EN LL_APB1_GRP1_EnableClock\n
484 * APB1ENR TIM3EN LL_APB1_GRP1_EnableClock\n
485 * APB1ENR TIM4EN LL_APB1_GRP1_EnableClock\n
486 * APB1ENR TIM5EN LL_APB1_GRP1_EnableClock\n
487 * APB1ENR TIM6EN LL_APB1_GRP1_EnableClock\n
488 * APB1ENR TIM7EN LL_APB1_GRP1_EnableClock\n
489 * APB1ENR LCDEN LL_APB1_GRP1_EnableClock\n
490 * APB1ENR WWDGEN LL_APB1_GRP1_EnableClock\n
491 * APB1ENR SPI2EN LL_APB1_GRP1_EnableClock\n
492 * APB1ENR SPI3EN LL_APB1_GRP1_EnableClock\n
493 * APB1ENR USART2EN LL_APB1_GRP1_EnableClock\n
494 * APB1ENR USART3EN LL_APB1_GRP1_EnableClock\n
495 * APB1ENR UART4EN LL_APB1_GRP1_EnableClock\n
496 * APB1ENR UART5EN LL_APB1_GRP1_EnableClock\n
497 * APB1ENR I2C1EN LL_APB1_GRP1_EnableClock\n
498 * APB1ENR I2C2EN LL_APB1_GRP1_EnableClock\n
499 * APB1ENR USBEN LL_APB1_GRP1_EnableClock\n
500 * APB1ENR PWREN LL_APB1_GRP1_EnableClock\n
501 * APB1ENR DACEN LL_APB1_GRP1_EnableClock\n
502 * APB1ENR COMPEN LL_APB1_GRP1_EnableClock
503 * @param Periphs This parameter can be a combination of the following values:
504 * @arg @ref LL_APB1_GRP1_PERIPH_TIM2
505 * @arg @ref LL_APB1_GRP1_PERIPH_TIM3
506 * @arg @ref LL_APB1_GRP1_PERIPH_TIM4
507 * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*)
508 * @arg @ref LL_APB1_GRP1_PERIPH_TIM6
509 * @arg @ref LL_APB1_GRP1_PERIPH_TIM7
510 * @arg @ref LL_APB1_GRP1_PERIPH_LCD (*)
511 * @arg @ref LL_APB1_GRP1_PERIPH_WWDG
512 * @arg @ref LL_APB1_GRP1_PERIPH_SPI2
513 * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (*)
514 * @arg @ref LL_APB1_GRP1_PERIPH_USART2
515 * @arg @ref LL_APB1_GRP1_PERIPH_USART3
516 * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*)
517 * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*)
518 * @arg @ref LL_APB1_GRP1_PERIPH_I2C1
519 * @arg @ref LL_APB1_GRP1_PERIPH_I2C2
520 * @arg @ref LL_APB1_GRP1_PERIPH_USB
521 * @arg @ref LL_APB1_GRP1_PERIPH_PWR
522 * @arg @ref LL_APB1_GRP1_PERIPH_DAC1
523 * @arg @ref LL_APB1_GRP1_PERIPH_COMP
524 * @arg @ref LL_APB1_GRP1_PERIPH_OPAMP (*)
525 *
526 * (*) value not defined in all devices.
527 * @retval None
528 */
LL_APB1_GRP1_EnableClock(uint32_t Periphs)529 __STATIC_INLINE void LL_APB1_GRP1_EnableClock(uint32_t Periphs)
530 {
531 __IO uint32_t tmpreg;
532 SET_BIT(RCC->APB1ENR, Periphs);
533 /* Delay after an RCC peripheral clock enabling */
534 tmpreg = READ_BIT(RCC->APB1ENR, Periphs);
535 (void)tmpreg;
536 }
537
538 /**
539 * @brief Check if APB1 peripheral clock is enabled or not
540 * @rmtoll APB1ENR TIM2EN LL_APB1_GRP1_IsEnabledClock\n
541 * APB1ENR TIM3EN LL_APB1_GRP1_IsEnabledClock\n
542 * APB1ENR TIM4EN LL_APB1_GRP1_IsEnabledClock\n
543 * APB1ENR TIM5EN LL_APB1_GRP1_IsEnabledClock\n
544 * APB1ENR TIM6EN LL_APB1_GRP1_IsEnabledClock\n
545 * APB1ENR TIM7EN LL_APB1_GRP1_IsEnabledClock\n
546 * APB1ENR LCDEN LL_APB1_GRP1_IsEnabledClock\n
547 * APB1ENR WWDGEN LL_APB1_GRP1_IsEnabledClock\n
548 * APB1ENR SPI2EN LL_APB1_GRP1_IsEnabledClock\n
549 * APB1ENR SPI3EN LL_APB1_GRP1_IsEnabledClock\n
550 * APB1ENR USART2EN LL_APB1_GRP1_IsEnabledClock\n
551 * APB1ENR USART3EN LL_APB1_GRP1_IsEnabledClock\n
552 * APB1ENR UART4EN LL_APB1_GRP1_IsEnabledClock\n
553 * APB1ENR UART5EN LL_APB1_GRP1_IsEnabledClock\n
554 * APB1ENR I2C1EN LL_APB1_GRP1_IsEnabledClock\n
555 * APB1ENR I2C2EN LL_APB1_GRP1_IsEnabledClock\n
556 * APB1ENR USBEN LL_APB1_GRP1_IsEnabledClock\n
557 * APB1ENR PWREN LL_APB1_GRP1_IsEnabledClock\n
558 * APB1ENR DACEN LL_APB1_GRP1_IsEnabledClock\n
559 * APB1ENR COMPEN LL_APB1_GRP1_IsEnabledClock
560 * @param Periphs This parameter can be a combination of the following values:
561 * @arg @ref LL_APB1_GRP1_PERIPH_TIM2
562 * @arg @ref LL_APB1_GRP1_PERIPH_TIM3
563 * @arg @ref LL_APB1_GRP1_PERIPH_TIM4
564 * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*)
565 * @arg @ref LL_APB1_GRP1_PERIPH_TIM6
566 * @arg @ref LL_APB1_GRP1_PERIPH_TIM7
567 * @arg @ref LL_APB1_GRP1_PERIPH_LCD (*)
568 * @arg @ref LL_APB1_GRP1_PERIPH_WWDG
569 * @arg @ref LL_APB1_GRP1_PERIPH_SPI2
570 * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (*)
571 * @arg @ref LL_APB1_GRP1_PERIPH_USART2
572 * @arg @ref LL_APB1_GRP1_PERIPH_USART3
573 * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*)
574 * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*)
575 * @arg @ref LL_APB1_GRP1_PERIPH_I2C1
576 * @arg @ref LL_APB1_GRP1_PERIPH_I2C2
577 * @arg @ref LL_APB1_GRP1_PERIPH_USB
578 * @arg @ref LL_APB1_GRP1_PERIPH_PWR
579 * @arg @ref LL_APB1_GRP1_PERIPH_DAC1
580 * @arg @ref LL_APB1_GRP1_PERIPH_COMP
581 * @arg @ref LL_APB1_GRP1_PERIPH_OPAMP (*)
582 *
583 * (*) value not defined in all devices.
584 * @retval State of Periphs (1 or 0).
585 */
LL_APB1_GRP1_IsEnabledClock(uint32_t Periphs)586 __STATIC_INLINE uint32_t LL_APB1_GRP1_IsEnabledClock(uint32_t Periphs)
587 {
588 return ((READ_BIT(RCC->APB1ENR, Periphs) == (Periphs)) ? 1UL : 0UL);
589 }
590
591 /**
592 * @brief Disable APB1 peripherals clock.
593 * @rmtoll APB1ENR TIM2EN LL_APB1_GRP1_DisableClock\n
594 * APB1ENR TIM3EN LL_APB1_GRP1_DisableClock\n
595 * APB1ENR TIM4EN LL_APB1_GRP1_DisableClock\n
596 * APB1ENR TIM5EN LL_APB1_GRP1_DisableClock\n
597 * APB1ENR TIM6EN LL_APB1_GRP1_DisableClock\n
598 * APB1ENR TIM7EN LL_APB1_GRP1_DisableClock\n
599 * APB1ENR LCDEN LL_APB1_GRP1_DisableClock\n
600 * APB1ENR WWDGEN LL_APB1_GRP1_DisableClock\n
601 * APB1ENR SPI2EN LL_APB1_GRP1_DisableClock\n
602 * APB1ENR SPI3EN LL_APB1_GRP1_DisableClock\n
603 * APB1ENR USART2EN LL_APB1_GRP1_DisableClock\n
604 * APB1ENR USART3EN LL_APB1_GRP1_DisableClock\n
605 * APB1ENR UART4EN LL_APB1_GRP1_DisableClock\n
606 * APB1ENR UART5EN LL_APB1_GRP1_DisableClock\n
607 * APB1ENR I2C1EN LL_APB1_GRP1_DisableClock\n
608 * APB1ENR I2C2EN LL_APB1_GRP1_DisableClock\n
609 * APB1ENR USBEN LL_APB1_GRP1_DisableClock\n
610 * APB1ENR PWREN LL_APB1_GRP1_DisableClock\n
611 * APB1ENR DACEN LL_APB1_GRP1_DisableClock\n
612 * APB1ENR COMPEN LL_APB1_GRP1_DisableClock
613 * @param Periphs This parameter can be a combination of the following values:
614 * @arg @ref LL_APB1_GRP1_PERIPH_TIM2
615 * @arg @ref LL_APB1_GRP1_PERIPH_TIM3
616 * @arg @ref LL_APB1_GRP1_PERIPH_TIM4
617 * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*)
618 * @arg @ref LL_APB1_GRP1_PERIPH_TIM6
619 * @arg @ref LL_APB1_GRP1_PERIPH_TIM7
620 * @arg @ref LL_APB1_GRP1_PERIPH_LCD (*)
621 * @arg @ref LL_APB1_GRP1_PERIPH_WWDG
622 * @arg @ref LL_APB1_GRP1_PERIPH_SPI2
623 * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (*)
624 * @arg @ref LL_APB1_GRP1_PERIPH_USART2
625 * @arg @ref LL_APB1_GRP1_PERIPH_USART3
626 * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*)
627 * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*)
628 * @arg @ref LL_APB1_GRP1_PERIPH_I2C1
629 * @arg @ref LL_APB1_GRP1_PERIPH_I2C2
630 * @arg @ref LL_APB1_GRP1_PERIPH_USB
631 * @arg @ref LL_APB1_GRP1_PERIPH_PWR
632 * @arg @ref LL_APB1_GRP1_PERIPH_DAC1
633 * @arg @ref LL_APB1_GRP1_PERIPH_COMP
634 * @arg @ref LL_APB1_GRP1_PERIPH_OPAMP (*)
635 *
636 * (*) value not defined in all devices.
637 * @retval None
638 */
LL_APB1_GRP1_DisableClock(uint32_t Periphs)639 __STATIC_INLINE void LL_APB1_GRP1_DisableClock(uint32_t Periphs)
640 {
641 CLEAR_BIT(RCC->APB1ENR, Periphs);
642 }
643
644 /**
645 * @brief Force APB1 peripherals reset.
646 * @rmtoll APB1RSTR TIM2RST LL_APB1_GRP1_ForceReset\n
647 * APB1RSTR TIM3RST LL_APB1_GRP1_ForceReset\n
648 * APB1RSTR TIM4RST LL_APB1_GRP1_ForceReset\n
649 * APB1RSTR TIM5RST LL_APB1_GRP1_ForceReset\n
650 * APB1RSTR TIM6RST LL_APB1_GRP1_ForceReset\n
651 * APB1RSTR TIM7RST LL_APB1_GRP1_ForceReset\n
652 * APB1RSTR LCDRST LL_APB1_GRP1_ForceReset\n
653 * APB1RSTR WWDGRST LL_APB1_GRP1_ForceReset\n
654 * APB1RSTR SPI2RST LL_APB1_GRP1_ForceReset\n
655 * APB1RSTR SPI3RST LL_APB1_GRP1_ForceReset\n
656 * APB1RSTR USART2RST LL_APB1_GRP1_ForceReset\n
657 * APB1RSTR USART3RST LL_APB1_GRP1_ForceReset\n
658 * APB1RSTR UART4RST LL_APB1_GRP1_ForceReset\n
659 * APB1RSTR UART5RST LL_APB1_GRP1_ForceReset\n
660 * APB1RSTR I2C1RST LL_APB1_GRP1_ForceReset\n
661 * APB1RSTR I2C2RST LL_APB1_GRP1_ForceReset\n
662 * APB1RSTR USBRST LL_APB1_GRP1_ForceReset\n
663 * APB1RSTR PWRRST LL_APB1_GRP1_ForceReset\n
664 * APB1RSTR DACRST LL_APB1_GRP1_ForceReset\n
665 * APB1RSTR COMPRST LL_APB1_GRP1_ForceReset
666 * @param Periphs This parameter can be a combination of the following values:
667 * @arg @ref LL_APB1_GRP1_PERIPH_ALL
668 * @arg @ref LL_APB1_GRP1_PERIPH_TIM2
669 * @arg @ref LL_APB1_GRP1_PERIPH_TIM3
670 * @arg @ref LL_APB1_GRP1_PERIPH_TIM4
671 * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*)
672 * @arg @ref LL_APB1_GRP1_PERIPH_TIM6
673 * @arg @ref LL_APB1_GRP1_PERIPH_TIM7
674 * @arg @ref LL_APB1_GRP1_PERIPH_LCD (*)
675 * @arg @ref LL_APB1_GRP1_PERIPH_WWDG
676 * @arg @ref LL_APB1_GRP1_PERIPH_SPI2
677 * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (*)
678 * @arg @ref LL_APB1_GRP1_PERIPH_USART2
679 * @arg @ref LL_APB1_GRP1_PERIPH_USART3
680 * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*)
681 * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*)
682 * @arg @ref LL_APB1_GRP1_PERIPH_I2C1
683 * @arg @ref LL_APB1_GRP1_PERIPH_I2C2
684 * @arg @ref LL_APB1_GRP1_PERIPH_USB
685 * @arg @ref LL_APB1_GRP1_PERIPH_PWR
686 * @arg @ref LL_APB1_GRP1_PERIPH_DAC1
687 * @arg @ref LL_APB1_GRP1_PERIPH_COMP
688 * @arg @ref LL_APB1_GRP1_PERIPH_OPAMP (*)
689 *
690 * (*) value not defined in all devices.
691 * @retval None
692 */
LL_APB1_GRP1_ForceReset(uint32_t Periphs)693 __STATIC_INLINE void LL_APB1_GRP1_ForceReset(uint32_t Periphs)
694 {
695 SET_BIT(RCC->APB1RSTR, Periphs);
696 }
697
698 /**
699 * @brief Release APB1 peripherals reset.
700 * @rmtoll APB1RSTR TIM2RST LL_APB1_GRP1_ReleaseReset\n
701 * APB1RSTR TIM3RST LL_APB1_GRP1_ReleaseReset\n
702 * APB1RSTR TIM4RST LL_APB1_GRP1_ReleaseReset\n
703 * APB1RSTR TIM5RST LL_APB1_GRP1_ReleaseReset\n
704 * APB1RSTR TIM6RST LL_APB1_GRP1_ReleaseReset\n
705 * APB1RSTR TIM7RST LL_APB1_GRP1_ReleaseReset\n
706 * APB1RSTR LCDRST LL_APB1_GRP1_ReleaseReset\n
707 * APB1RSTR WWDGRST LL_APB1_GRP1_ReleaseReset\n
708 * APB1RSTR SPI2RST LL_APB1_GRP1_ReleaseReset\n
709 * APB1RSTR SPI3RST LL_APB1_GRP1_ReleaseReset\n
710 * APB1RSTR USART2RST LL_APB1_GRP1_ReleaseReset\n
711 * APB1RSTR USART3RST LL_APB1_GRP1_ReleaseReset\n
712 * APB1RSTR UART4RST LL_APB1_GRP1_ReleaseReset\n
713 * APB1RSTR UART5RST LL_APB1_GRP1_ReleaseReset\n
714 * APB1RSTR I2C1RST LL_APB1_GRP1_ReleaseReset\n
715 * APB1RSTR I2C2RST LL_APB1_GRP1_ReleaseReset\n
716 * APB1RSTR USBRST LL_APB1_GRP1_ReleaseReset\n
717 * APB1RSTR PWRRST LL_APB1_GRP1_ReleaseReset\n
718 * APB1RSTR DACRST LL_APB1_GRP1_ReleaseReset\n
719 * APB1RSTR COMPRST LL_APB1_GRP1_ReleaseReset
720 * @param Periphs This parameter can be a combination of the following values:
721 * @arg @ref LL_APB1_GRP1_PERIPH_ALL
722 * @arg @ref LL_APB1_GRP1_PERIPH_TIM2
723 * @arg @ref LL_APB1_GRP1_PERIPH_TIM3
724 * @arg @ref LL_APB1_GRP1_PERIPH_TIM4
725 * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*)
726 * @arg @ref LL_APB1_GRP1_PERIPH_TIM6
727 * @arg @ref LL_APB1_GRP1_PERIPH_TIM7
728 * @arg @ref LL_APB1_GRP1_PERIPH_LCD (*)
729 * @arg @ref LL_APB1_GRP1_PERIPH_WWDG
730 * @arg @ref LL_APB1_GRP1_PERIPH_SPI2
731 * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (*)
732 * @arg @ref LL_APB1_GRP1_PERIPH_USART2
733 * @arg @ref LL_APB1_GRP1_PERIPH_USART3
734 * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*)
735 * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*)
736 * @arg @ref LL_APB1_GRP1_PERIPH_I2C1
737 * @arg @ref LL_APB1_GRP1_PERIPH_I2C2
738 * @arg @ref LL_APB1_GRP1_PERIPH_USB
739 * @arg @ref LL_APB1_GRP1_PERIPH_PWR
740 * @arg @ref LL_APB1_GRP1_PERIPH_DAC1
741 * @arg @ref LL_APB1_GRP1_PERIPH_COMP
742 * @arg @ref LL_APB1_GRP1_PERIPH_OPAMP (*)
743 *
744 * (*) value not defined in all devices.
745 * @retval None
746 */
LL_APB1_GRP1_ReleaseReset(uint32_t Periphs)747 __STATIC_INLINE void LL_APB1_GRP1_ReleaseReset(uint32_t Periphs)
748 {
749 CLEAR_BIT(RCC->APB1RSTR, Periphs);
750 }
751
752 /**
753 * @brief Enable APB1 peripherals clock during Low Power (Sleep) mode.
754 * @rmtoll APB1LPENR TIM2LPEN LL_APB1_GRP1_EnableClockSleep\n
755 * APB1LPENR TIM3LPEN LL_APB1_GRP1_EnableClockSleep\n
756 * APB1LPENR TIM4LPEN LL_APB1_GRP1_EnableClockSleep\n
757 * APB1LPENR TIM5LPEN LL_APB1_GRP1_EnableClockSleep\n
758 * APB1LPENR TIM6LPEN LL_APB1_GRP1_EnableClockSleep\n
759 * APB1LPENR TIM7LPEN LL_APB1_GRP1_EnableClockSleep\n
760 * APB1LPENR LCDLPEN LL_APB1_GRP1_EnableClockSleep\n
761 * APB1LPENR WWDGLPEN LL_APB1_GRP1_EnableClockSleep\n
762 * APB1LPENR SPI2LPEN LL_APB1_GRP1_EnableClockSleep\n
763 * APB1LPENR SPI3LPEN LL_APB1_GRP1_EnableClockSleep\n
764 * APB1LPENR USART2LPEN LL_APB1_GRP1_EnableClockSleep\n
765 * APB1LPENR USART3LPEN LL_APB1_GRP1_EnableClockSleep\n
766 * APB1LPENR UART4LPEN LL_APB1_GRP1_EnableClockSleep\n
767 * APB1LPENR UART5LPEN LL_APB1_GRP1_EnableClockSleep\n
768 * APB1LPENR I2C1LPEN LL_APB1_GRP1_EnableClockSleep\n
769 * APB1LPENR I2C2LPEN LL_APB1_GRP1_EnableClockSleep\n
770 * APB1LPENR USBLPEN LL_APB1_GRP1_EnableClockSleep\n
771 * APB1LPENR PWRLPEN LL_APB1_GRP1_EnableClockSleep\n
772 * APB1LPENR DACLPEN LL_APB1_GRP1_EnableClockSleep\n
773 * APB1LPENR COMPLPEN LL_APB1_GRP1_EnableClockSleep
774 * @param Periphs This parameter can be a combination of the following values:
775 * @arg @ref LL_APB1_GRP1_PERIPH_TIM2
776 * @arg @ref LL_APB1_GRP1_PERIPH_TIM3
777 * @arg @ref LL_APB1_GRP1_PERIPH_TIM4
778 * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*)
779 * @arg @ref LL_APB1_GRP1_PERIPH_TIM6
780 * @arg @ref LL_APB1_GRP1_PERIPH_TIM7
781 * @arg @ref LL_APB1_GRP1_PERIPH_LCD (*)
782 * @arg @ref LL_APB1_GRP1_PERIPH_WWDG
783 * @arg @ref LL_APB1_GRP1_PERIPH_SPI2
784 * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (*)
785 * @arg @ref LL_APB1_GRP1_PERIPH_USART2
786 * @arg @ref LL_APB1_GRP1_PERIPH_USART3
787 * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*)
788 * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*)
789 * @arg @ref LL_APB1_GRP1_PERIPH_I2C1
790 * @arg @ref LL_APB1_GRP1_PERIPH_I2C2
791 * @arg @ref LL_APB1_GRP1_PERIPH_USB
792 * @arg @ref LL_APB1_GRP1_PERIPH_PWR
793 * @arg @ref LL_APB1_GRP1_PERIPH_DAC1
794 * @arg @ref LL_APB1_GRP1_PERIPH_COMP
795 * @arg @ref LL_APB1_GRP1_PERIPH_OPAMP (*)
796 *
797 * (*) value not defined in all devices.
798 * @retval None
799 */
LL_APB1_GRP1_EnableClockSleep(uint32_t Periphs)800 __STATIC_INLINE void LL_APB1_GRP1_EnableClockSleep(uint32_t Periphs)
801 {
802 __IO uint32_t tmpreg;
803 SET_BIT(RCC->APB1LPENR, Periphs);
804 /* Delay after an RCC peripheral clock enabling */
805 tmpreg = READ_BIT(RCC->APB1LPENR, Periphs);
806 (void)tmpreg;
807 }
808
809 /**
810 * @brief Disable APB1 peripherals clock during Low Power (Sleep) mode.
811 * @rmtoll APB1LPENR TIM2LPEN LL_APB1_GRP1_DisableClockSleep\n
812 * APB1LPENR TIM3LPEN LL_APB1_GRP1_DisableClockSleep\n
813 * APB1LPENR TIM4LPEN LL_APB1_GRP1_DisableClockSleep\n
814 * APB1LPENR TIM5LPEN LL_APB1_GRP1_DisableClockSleep\n
815 * APB1LPENR TIM6LPEN LL_APB1_GRP1_DisableClockSleep\n
816 * APB1LPENR TIM7LPEN LL_APB1_GRP1_DisableClockSleep\n
817 * APB1LPENR LCDLPEN LL_APB1_GRP1_DisableClockSleep\n
818 * APB1LPENR WWDGLPEN LL_APB1_GRP1_DisableClockSleep\n
819 * APB1LPENR SPI2LPEN LL_APB1_GRP1_DisableClockSleep\n
820 * APB1LPENR SPI3LPEN LL_APB1_GRP1_DisableClockSleep\n
821 * APB1LPENR USART2LPEN LL_APB1_GRP1_DisableClockSleep\n
822 * APB1LPENR USART3LPEN LL_APB1_GRP1_DisableClockSleep\n
823 * APB1LPENR UART4LPEN LL_APB1_GRP1_DisableClockSleep\n
824 * APB1LPENR UART5LPEN LL_APB1_GRP1_DisableClockSleep\n
825 * APB1LPENR I2C1LPEN LL_APB1_GRP1_DisableClockSleep\n
826 * APB1LPENR I2C2LPEN LL_APB1_GRP1_DisableClockSleep\n
827 * APB1LPENR USBLPEN LL_APB1_GRP1_DisableClockSleep\n
828 * APB1LPENR PWRLPEN LL_APB1_GRP1_DisableClockSleep\n
829 * APB1LPENR DACLPEN LL_APB1_GRP1_DisableClockSleep\n
830 * APB1LPENR COMPLPEN LL_APB1_GRP1_DisableClockSleep
831 * @param Periphs This parameter can be a combination of the following values:
832 * @arg @ref LL_APB1_GRP1_PERIPH_TIM2
833 * @arg @ref LL_APB1_GRP1_PERIPH_TIM3
834 * @arg @ref LL_APB1_GRP1_PERIPH_TIM4
835 * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*)
836 * @arg @ref LL_APB1_GRP1_PERIPH_TIM6
837 * @arg @ref LL_APB1_GRP1_PERIPH_TIM7
838 * @arg @ref LL_APB1_GRP1_PERIPH_LCD (*)
839 * @arg @ref LL_APB1_GRP1_PERIPH_WWDG
840 * @arg @ref LL_APB1_GRP1_PERIPH_SPI2
841 * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (*)
842 * @arg @ref LL_APB1_GRP1_PERIPH_USART2
843 * @arg @ref LL_APB1_GRP1_PERIPH_USART3
844 * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*)
845 * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*)
846 * @arg @ref LL_APB1_GRP1_PERIPH_I2C1
847 * @arg @ref LL_APB1_GRP1_PERIPH_I2C2
848 * @arg @ref LL_APB1_GRP1_PERIPH_USB
849 * @arg @ref LL_APB1_GRP1_PERIPH_PWR
850 * @arg @ref LL_APB1_GRP1_PERIPH_DAC1
851 * @arg @ref LL_APB1_GRP1_PERIPH_COMP
852 * @arg @ref LL_APB1_GRP1_PERIPH_OPAMP (*)
853 *
854 * (*) value not defined in all devices.
855 * @retval None
856 */
LL_APB1_GRP1_DisableClockSleep(uint32_t Periphs)857 __STATIC_INLINE void LL_APB1_GRP1_DisableClockSleep(uint32_t Periphs)
858 {
859 CLEAR_BIT(RCC->APB1LPENR, Periphs);
860 }
861
862 /**
863 * @}
864 */
865
866 /** @defgroup BUS_LL_EF_APB2 APB2
867 * @{
868 */
869
870 /**
871 * @brief Enable APB2 peripherals clock.
872 * @rmtoll APB2ENR SYSCFGEN LL_APB2_GRP1_EnableClock\n
873 * APB2ENR TIM9EN LL_APB2_GRP1_EnableClock\n
874 * APB2ENR TIM10EN LL_APB2_GRP1_EnableClock\n
875 * APB2ENR TIM11EN LL_APB2_GRP1_EnableClock\n
876 * APB2ENR ADC1EN LL_APB2_GRP1_EnableClock\n
877 * APB2ENR SDIOEN LL_APB2_GRP1_EnableClock\n
878 * APB2ENR SPI1EN LL_APB2_GRP1_EnableClock\n
879 * APB2ENR USART1EN LL_APB2_GRP1_EnableClock
880 * @param Periphs This parameter can be a combination of the following values:
881 * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG
882 * @arg @ref LL_APB2_GRP1_PERIPH_TIM9
883 * @arg @ref LL_APB2_GRP1_PERIPH_TIM10
884 * @arg @ref LL_APB2_GRP1_PERIPH_TIM11
885 * @arg @ref LL_APB2_GRP1_PERIPH_ADC1
886 * @arg @ref LL_APB2_GRP1_PERIPH_SDIO (*)
887 * @arg @ref LL_APB2_GRP1_PERIPH_SPI1
888 * @arg @ref LL_APB2_GRP1_PERIPH_USART1
889 *
890 * (*) value not defined in all devices.
891 * @retval None
892 */
LL_APB2_GRP1_EnableClock(uint32_t Periphs)893 __STATIC_INLINE void LL_APB2_GRP1_EnableClock(uint32_t Periphs)
894 {
895 __IO uint32_t tmpreg;
896 SET_BIT(RCC->APB2ENR, Periphs);
897 /* Delay after an RCC peripheral clock enabling */
898 tmpreg = READ_BIT(RCC->APB2ENR, Periphs);
899 (void)tmpreg;
900 }
901
902 /**
903 * @brief Check if APB2 peripheral clock is enabled or not
904 * @rmtoll APB2ENR SYSCFGEN LL_APB2_GRP1_IsEnabledClock\n
905 * APB2ENR TIM9EN LL_APB2_GRP1_IsEnabledClock\n
906 * APB2ENR TIM10EN LL_APB2_GRP1_IsEnabledClock\n
907 * APB2ENR TIM11EN LL_APB2_GRP1_IsEnabledClock\n
908 * APB2ENR ADC1EN LL_APB2_GRP1_IsEnabledClock\n
909 * APB2ENR SDIOEN LL_APB2_GRP1_IsEnabledClock\n
910 * APB2ENR SPI1EN LL_APB2_GRP1_IsEnabledClock\n
911 * APB2ENR USART1EN LL_APB2_GRP1_IsEnabledClock
912 * @param Periphs This parameter can be a combination of the following values:
913 * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG
914 * @arg @ref LL_APB2_GRP1_PERIPH_TIM9
915 * @arg @ref LL_APB2_GRP1_PERIPH_TIM10
916 * @arg @ref LL_APB2_GRP1_PERIPH_TIM11
917 * @arg @ref LL_APB2_GRP1_PERIPH_ADC1
918 * @arg @ref LL_APB2_GRP1_PERIPH_SDIO (*)
919 * @arg @ref LL_APB2_GRP1_PERIPH_SPI1
920 * @arg @ref LL_APB2_GRP1_PERIPH_USART1
921 *
922 * (*) value not defined in all devices.
923 * @retval State of Periphs (1 or 0).
924 */
LL_APB2_GRP1_IsEnabledClock(uint32_t Periphs)925 __STATIC_INLINE uint32_t LL_APB2_GRP1_IsEnabledClock(uint32_t Periphs)
926 {
927 return ((READ_BIT(RCC->APB2ENR, Periphs) == (Periphs)) ? 1UL : 0UL);
928 }
929
930 /**
931 * @brief Disable APB2 peripherals clock.
932 * @rmtoll APB2ENR SYSCFGEN LL_APB2_GRP1_DisableClock\n
933 * APB2ENR TIM9EN LL_APB2_GRP1_DisableClock\n
934 * APB2ENR TIM10EN LL_APB2_GRP1_DisableClock\n
935 * APB2ENR TIM11EN LL_APB2_GRP1_DisableClock\n
936 * APB2ENR ADC1EN LL_APB2_GRP1_DisableClock\n
937 * APB2ENR SDIOEN LL_APB2_GRP1_DisableClock\n
938 * APB2ENR SPI1EN LL_APB2_GRP1_DisableClock\n
939 * APB2ENR USART1EN LL_APB2_GRP1_DisableClock
940 * @param Periphs This parameter can be a combination of the following values:
941 * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG
942 * @arg @ref LL_APB2_GRP1_PERIPH_TIM9
943 * @arg @ref LL_APB2_GRP1_PERIPH_TIM10
944 * @arg @ref LL_APB2_GRP1_PERIPH_TIM11
945 * @arg @ref LL_APB2_GRP1_PERIPH_ADC1
946 * @arg @ref LL_APB2_GRP1_PERIPH_SDIO (*)
947 * @arg @ref LL_APB2_GRP1_PERIPH_SPI1
948 * @arg @ref LL_APB2_GRP1_PERIPH_USART1
949 *
950 * (*) value not defined in all devices.
951 * @retval None
952 */
LL_APB2_GRP1_DisableClock(uint32_t Periphs)953 __STATIC_INLINE void LL_APB2_GRP1_DisableClock(uint32_t Periphs)
954 {
955 CLEAR_BIT(RCC->APB2ENR, Periphs);
956 }
957
958 /**
959 * @brief Force APB2 peripherals reset.
960 * @rmtoll APB2RSTR SYSCFGRST LL_APB2_GRP1_ForceReset\n
961 * APB2RSTR TIM9RST LL_APB2_GRP1_ForceReset\n
962 * APB2RSTR TIM10RST LL_APB2_GRP1_ForceReset\n
963 * APB2RSTR TIM11RST LL_APB2_GRP1_ForceReset\n
964 * APB2RSTR ADC1RST LL_APB2_GRP1_ForceReset\n
965 * APB2RSTR SDIORST LL_APB2_GRP1_ForceReset\n
966 * APB2RSTR SPI1RST LL_APB2_GRP1_ForceReset\n
967 * APB2RSTR USART1RST LL_APB2_GRP1_ForceReset
968 * @param Periphs This parameter can be a combination of the following values:
969 * @arg @ref LL_APB2_GRP1_PERIPH_ALL
970 * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG
971 * @arg @ref LL_APB2_GRP1_PERIPH_TIM9
972 * @arg @ref LL_APB2_GRP1_PERIPH_TIM10
973 * @arg @ref LL_APB2_GRP1_PERIPH_TIM11
974 * @arg @ref LL_APB2_GRP1_PERIPH_ADC1
975 * @arg @ref LL_APB2_GRP1_PERIPH_SDIO (*)
976 * @arg @ref LL_APB2_GRP1_PERIPH_SPI1
977 * @arg @ref LL_APB2_GRP1_PERIPH_USART1
978 *
979 * (*) value not defined in all devices.
980 * @retval None
981 */
LL_APB2_GRP1_ForceReset(uint32_t Periphs)982 __STATIC_INLINE void LL_APB2_GRP1_ForceReset(uint32_t Periphs)
983 {
984 SET_BIT(RCC->APB2RSTR, Periphs);
985 }
986
987 /**
988 * @brief Release APB2 peripherals reset.
989 * @rmtoll APB2RSTR SYSCFGRST LL_APB2_GRP1_ReleaseReset\n
990 * APB2RSTR TIM9RST LL_APB2_GRP1_ReleaseReset\n
991 * APB2RSTR TIM10RST LL_APB2_GRP1_ReleaseReset\n
992 * APB2RSTR TIM11RST LL_APB2_GRP1_ReleaseReset\n
993 * APB2RSTR ADC1RST LL_APB2_GRP1_ReleaseReset\n
994 * APB2RSTR SDIORST LL_APB2_GRP1_ReleaseReset\n
995 * APB2RSTR SPI1RST LL_APB2_GRP1_ReleaseReset\n
996 * APB2RSTR USART1RST LL_APB2_GRP1_ReleaseReset
997 * @param Periphs This parameter can be a combination of the following values:
998 * @arg @ref LL_APB2_GRP1_PERIPH_ALL
999 * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG
1000 * @arg @ref LL_APB2_GRP1_PERIPH_TIM9
1001 * @arg @ref LL_APB2_GRP1_PERIPH_TIM10
1002 * @arg @ref LL_APB2_GRP1_PERIPH_TIM11
1003 * @arg @ref LL_APB2_GRP1_PERIPH_ADC1
1004 * @arg @ref LL_APB2_GRP1_PERIPH_SDIO (*)
1005 * @arg @ref LL_APB2_GRP1_PERIPH_SPI1
1006 * @arg @ref LL_APB2_GRP1_PERIPH_USART1
1007 *
1008 * (*) value not defined in all devices.
1009 * @retval None
1010 */
LL_APB2_GRP1_ReleaseReset(uint32_t Periphs)1011 __STATIC_INLINE void LL_APB2_GRP1_ReleaseReset(uint32_t Periphs)
1012 {
1013 CLEAR_BIT(RCC->APB2RSTR, Periphs);
1014 }
1015
1016 /**
1017 * @brief Enable APB2 peripherals clock during Low Power (Sleep) mode.
1018 * @rmtoll APB2LPENR SYSCFGLPEN LL_APB2_GRP1_EnableClockSleep\n
1019 * APB2LPENR TIM9LPEN LL_APB2_GRP1_EnableClockSleep\n
1020 * APB2LPENR TIM10LPEN LL_APB2_GRP1_EnableClockSleep\n
1021 * APB2LPENR TIM11LPEN LL_APB2_GRP1_EnableClockSleep\n
1022 * APB2LPENR ADC1LPEN LL_APB2_GRP1_EnableClockSleep\n
1023 * APB2LPENR SDIOLPEN LL_APB2_GRP1_EnableClockSleep\n
1024 * APB2LPENR SPI1LPEN LL_APB2_GRP1_EnableClockSleep\n
1025 * APB2LPENR USART1LPEN LL_APB2_GRP1_EnableClockSleep
1026 * @param Periphs This parameter can be a combination of the following values:
1027 * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG
1028 * @arg @ref LL_APB2_GRP1_PERIPH_TIM9
1029 * @arg @ref LL_APB2_GRP1_PERIPH_TIM10
1030 * @arg @ref LL_APB2_GRP1_PERIPH_TIM11
1031 * @arg @ref LL_APB2_GRP1_PERIPH_ADC1
1032 * @arg @ref LL_APB2_GRP1_PERIPH_SDIO (*)
1033 * @arg @ref LL_APB2_GRP1_PERIPH_SPI1
1034 * @arg @ref LL_APB2_GRP1_PERIPH_USART1
1035 *
1036 * (*) value not defined in all devices.
1037 * @retval None
1038 */
LL_APB2_GRP1_EnableClockSleep(uint32_t Periphs)1039 __STATIC_INLINE void LL_APB2_GRP1_EnableClockSleep(uint32_t Periphs)
1040 {
1041 __IO uint32_t tmpreg;
1042 SET_BIT(RCC->APB2LPENR, Periphs);
1043 /* Delay after an RCC peripheral clock enabling */
1044 tmpreg = READ_BIT(RCC->APB2LPENR, Periphs);
1045 (void)tmpreg;
1046 }
1047
1048 /**
1049 * @brief Disable APB2 peripherals clock during Low Power (Sleep) mode.
1050 * @rmtoll APB2LPENR SYSCFGLPEN LL_APB2_GRP1_DisableClockSleep\n
1051 * APB2LPENR TIM9LPEN LL_APB2_GRP1_DisableClockSleep\n
1052 * APB2LPENR TIM10LPEN LL_APB2_GRP1_DisableClockSleep\n
1053 * APB2LPENR TIM11LPEN LL_APB2_GRP1_DisableClockSleep\n
1054 * APB2LPENR ADC1LPEN LL_APB2_GRP1_DisableClockSleep\n
1055 * APB2LPENR SDIOLPEN LL_APB2_GRP1_DisableClockSleep\n
1056 * APB2LPENR SPI1LPEN LL_APB2_GRP1_DisableClockSleep\n
1057 * APB2LPENR USART1LPEN LL_APB2_GRP1_DisableClockSleep
1058 * @param Periphs This parameter can be a combination of the following values:
1059 * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG
1060 * @arg @ref LL_APB2_GRP1_PERIPH_TIM9
1061 * @arg @ref LL_APB2_GRP1_PERIPH_TIM10
1062 * @arg @ref LL_APB2_GRP1_PERIPH_TIM11
1063 * @arg @ref LL_APB2_GRP1_PERIPH_ADC1
1064 * @arg @ref LL_APB2_GRP1_PERIPH_SDIO (*)
1065 * @arg @ref LL_APB2_GRP1_PERIPH_SPI1
1066 * @arg @ref LL_APB2_GRP1_PERIPH_USART1
1067 *
1068 * (*) value not defined in all devices.
1069 * @retval None
1070 */
LL_APB2_GRP1_DisableClockSleep(uint32_t Periphs)1071 __STATIC_INLINE void LL_APB2_GRP1_DisableClockSleep(uint32_t Periphs)
1072 {
1073 CLEAR_BIT(RCC->APB2LPENR, Periphs);
1074 }
1075
1076 /**
1077 * @}
1078 */
1079
1080
1081 /**
1082 * @}
1083 */
1084
1085 /**
1086 * @}
1087 */
1088
1089 #endif /* defined(RCC) */
1090
1091 /**
1092 * @}
1093 */
1094
1095 #ifdef __cplusplus
1096 }
1097 #endif
1098
1099 #endif /* __STM32L1xx_LL_BUS_H */
1100
1101