1 /**
2 ******************************************************************************
3 * @file stm32u0xx_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) 2023 STMicroelectronics.
27 * All rights reserved.
28 *
29 * This software is licensed under terms that can be found in the LICENSE file
30 * in 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
36 /* Define to prevent recursive inclusion -------------------------------------*/
37 #ifndef __STM32U0xx_LL_BUS_H
38 #define __STM32U0xx_LL_BUS_H
39
40 #ifdef __cplusplus
41 extern "C" {
42 #endif
43
44 /* Includes ------------------------------------------------------------------*/
45 #include "stm32u0xx.h"
46
47 /** @addtogroup STM32U0xx_LL_Driver
48 * @{
49 */
50
51 #if defined(RCC)
52
53 /** @defgroup BUS_LL BUS
54 * @{
55 */
56
57 /* Private types -------------------------------------------------------------*/
58 /* Private variables ---------------------------------------------------------*/
59
60 /* Private constants ---------------------------------------------------------*/
61 /** @defgroup RCC_Peripheral_Memory_Mapping Peripheral Memory Mapping
62 * @{
63 */
64 #define RCC_MAP RCC /* Alias Legacy/Non-Secure periphal memory access */
65 /**
66 * @}
67 */
68
69 /* Private macros ------------------------------------------------------------*/
70
71 /* Exported types ------------------------------------------------------------*/
72 /* Exported constants --------------------------------------------------------*/
73 /** @defgroup BUS_LL_Exported_Constants BUS Exported Constants
74 * @{
75 */
76
77 /** @defgroup BUS_LL_EC_AHB1_GRP1_PERIPH AHB GRP1 PERIPH
78 * @{
79 */
80 #define LL_AHB1_GRP1_PERIPH_ALL 0xFFFFFFFFU
81 #define LL_AHB1_GRP1_PERIPH_DMA1 RCC_AHBENR_DMA1EN
82 #if defined (DMA2)
83 #define LL_AHB1_GRP1_PERIPH_DMA2 RCC_AHBENR_DMA2EN
84 #endif /* DMA2 */
85 #define LL_AHB1_GRP1_PERIPH_FLASH RCC_AHBENR_FLASHEN
86 #define LL_AHB1_GRP1_PERIPH_CRC RCC_AHBENR_CRCEN
87 #define LL_AHB1_GRP1_PERIPH_TSC RCC_AHBENR_TSCEN
88 #if defined (AES)
89 #define LL_AHB1_GRP1_PERIPH_AES RCC_AHBENR_AESEN
90 #endif /* AES */
91 #define LL_AHB1_GRP1_PERIPH_RNG RCC_AHBENR_RNGEN
92 #define LL_AHB1_GRP1_PERIPH_SRAM1 RCC_AHBSMENR_SRAM1SMEN
93 /**
94 * @}
95 */
96
97 /** @defgroup BUS_LL_EC_APB1_GRP1_PERIPH APB1 GRP1 PERIPH
98 * @{
99 */
100 #define LL_APB1_GRP1_PERIPH_ALL 0xFFFFFFFFU
101 #define LL_APB1_GRP1_PERIPH_TIM2 RCC_APBENR1_TIM2EN
102 #define LL_APB1_GRP1_PERIPH_TIM3 RCC_APBENR1_TIM3EN
103 #define LL_APB1_GRP1_PERIPH_TIM6 RCC_APBENR1_TIM6EN
104 #define LL_APB1_GRP1_PERIPH_TIM7 RCC_APBENR1_TIM7EN
105 #define LL_APB1_GRP1_PERIPH_LPUART2 RCC_APBENR1_LPUART2EN
106 #if defined (LCD)
107 #define LL_APB1_GRP1_PERIPH_LCD RCC_APBENR1_LCDEN
108 #endif /* LCD */
109 #define LL_APB1_GRP1_PERIPH_RTCAPB RCC_APBENR1_RTCAPBEN
110 #define LL_APB1_GRP1_PERIPH_WWDG RCC_APBENR1_WWDGEN
111 #if defined (LPUART3)
112 #define LL_APB1_GRP1_PERIPH_LPUART3 RCC_APBENR1_LPUART3EN
113 #endif /* LPUART3 */
114 #if defined (USB_DRD_FS)
115 #define LL_APB1_GRP1_PERIPH_USB RCC_APBENR1_USBEN
116 #endif /* USB_DRD_FS */
117 #define LL_APB1_GRP1_PERIPH_SPI2 RCC_APBENR1_SPI2EN
118 #define LL_APB1_GRP1_PERIPH_SPI3 RCC_APBENR1_SPI3EN
119 #define LL_APB1_GRP1_PERIPH_CRS RCC_APBENR1_CRSEN
120 #define LL_APB1_GRP1_PERIPH_USART2 RCC_APBENR1_USART2EN
121 #define LL_APB1_GRP1_PERIPH_USART3 RCC_APBENR1_USART3EN
122 #define LL_APB1_GRP1_PERIPH_USART4 RCC_APBENR1_USART4EN
123 #define LL_APB1_GRP1_PERIPH_LPUART1 RCC_APBENR1_LPUART1EN
124 #define LL_APB1_GRP1_PERIPH_I2C1 RCC_APBENR1_I2C1EN
125 #define LL_APB1_GRP1_PERIPH_I2C2 RCC_APBENR1_I2C2EN
126 #define LL_APB1_GRP1_PERIPH_I2C3 RCC_APBENR1_I2C3EN
127 #define LL_APB1_GRP1_PERIPH_OPAMP RCC_APBENR1_OPAMPEN
128 #define LL_APB1_GRP1_PERIPH_I2C4 RCC_APBENR1_I2C4EN
129 #if defined (LPTIM3)
130 #define LL_APB1_GRP1_PERIPH_LPTIM3 RCC_APBENR1_LPTIM3EN
131 #endif /* LPTIM3 */
132 #define LL_APB1_GRP1_PERIPH_PWR RCC_APBENR1_PWREN
133 #define LL_APB1_GRP1_PERIPH_DAC1 RCC_APBENR1_DAC1EN
134 #define LL_APB1_GRP1_PERIPH_LPTIM2 RCC_APBENR1_LPTIM2EN
135 #define LL_APB1_GRP1_PERIPH_LPTIM1 RCC_APBENR1_LPTIM1EN
136 /**
137 * @}
138 */
139
140 /** @defgroup BUS_LL_EC_APB1_GRP2_PERIPH APB1 GRP2 PERIPH
141 * @{
142 */
143 #define LL_APB1_GRP2_PERIPH_ALL 0xFFFFFFFFU
144 #define LL_APB1_GRP2_PERIPH_SYSCFG RCC_APBENR2_SYSCFGEN
145 #define LL_APB1_GRP2_PERIPH_COMP RCC_APBENR2_SYSCFGEN
146 #define LL_APB1_GRP2_PERIPH_VREFBUF RCC_APBENR2_SYSCFGEN
147 #define LL_APB1_GRP2_PERIPH_TIM1 RCC_APBENR2_TIM1EN
148 #define LL_APB1_GRP2_PERIPH_SPI1 RCC_APBENR2_SPI1EN
149 #define LL_APB1_GRP2_PERIPH_USART1 RCC_APBENR2_USART1EN
150 #define LL_APB1_GRP2_PERIPH_TIM15 RCC_APBENR2_TIM15EN
151 #define LL_APB1_GRP2_PERIPH_TIM16 RCC_APBENR2_TIM16EN
152 #define LL_APB1_GRP2_PERIPH_ADC RCC_APBENR2_ADCEN
153
154 /**
155 * @}
156 */
157
158 /** @defgroup BUS_LL_EC_IOP_GRP1_PERIPH IOP GRP1 PERIPH
159 * @{
160 */
161 #define LL_IOP_GRP1_PERIPH_ALL 0xFFFFFFFFU
162 #define LL_IOP_GRP1_PERIPH_GPIOA RCC_IOPENR_GPIOAEN
163 #define LL_IOP_GRP1_PERIPH_GPIOB RCC_IOPENR_GPIOBEN
164 #define LL_IOP_GRP1_PERIPH_GPIOC RCC_IOPENR_GPIOCEN
165 #define LL_IOP_GRP1_PERIPH_GPIOD RCC_IOPENR_GPIODEN
166 #if defined (GPIOE)
167 #define LL_IOP_GRP1_PERIPH_GPIOE RCC_IOPENR_GPIOEEN
168 #endif /* GPIOE */
169 #define LL_IOP_GRP1_PERIPH_GPIOF RCC_IOPENR_GPIOFEN
170
171 /**
172 * @}
173 */
174
175 /**
176 * @}
177 */
178
179 /* Exported macro ------------------------------------------------------------*/
180 /* Exported functions --------------------------------------------------------*/
181 /** @defgroup BUS_LL_Exported_Functions BUS Exported Functions
182 * @{
183 */
184
185 /** @defgroup BUS_LL_EF_AHB AHB
186 * @{
187 */
188
189 /**
190 * @brief Enable AHB1 peripherals clock.
191 * @rmtoll AHBENR DMA1EN LL_AHB1_GRP1_EnableClock\n
192 * AHBENR DMA2EN LL_AHB1_GRP1_EnableClock\n
193 * AHBENR FLASHEN LL_AHB1_GRP1_EnableClock\n
194 * AHBENR CRCEN LL_AHB1_GRP1_EnableClock\n
195 * AHBENR TSCEN LL_AHB1_GRP1_EnableClock\n
196 * AHBENR AESEN LL_AHB1_GRP1_EnableClock\n
197 * AHBENR RNGEN LL_AHB1_GRP1_EnableClock\n
198 * AHBENR SRAM1EN LL_AHB1_GRP1_EnableClock
199 * @param Periphs This parameter can be a combination of the following values:
200 * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1
201 * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2
202 * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
203 * @arg @ref LL_AHB1_GRP1_PERIPH_CRC
204 * @arg @ref LL_AHB1_GRP1_PERIPH_TSC
205 * @arg @ref LL_AHB1_GRP1_PERIPH_AES
206 * @arg @ref LL_AHB1_GRP1_PERIPH_RNG
207 * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM1
208 *
209 * @retval None
210 */
LL_AHB1_GRP1_EnableClock(uint32_t Periphs)211 __STATIC_INLINE void LL_AHB1_GRP1_EnableClock(uint32_t Periphs)
212 {
213 __IO uint32_t tmpreg;
214 SET_BIT(RCC->AHBENR, Periphs);
215 /* Delay after an RCC peripheral clock enabling */
216 tmpreg = READ_BIT(RCC->AHBENR, Periphs);
217 (void)tmpreg;
218 }
219
220 /**
221 * @brief Check if AHB1 peripheral clock is enabled or not
222 * @rmtoll AHBENR DMA1EN LL_AHB1_GRP1_IsEnabledClock\n
223 * AHBENR DMA2EN LL_AHB1_GRP1_IsEnabledClock\n
224 * AHBENR FLASHEN LL_AHB1_GRP1_IsEnabledClock\n
225 * AHBENR CRCEN LL_AHB1_GRP1_IsEnabledClock\n
226 * AHBENR TSCEN LL_AHB1_GRP1_IsEnabledClock\n
227 * AHBENR AESEN LL_AHB1_GRP1_IsEnabledClock\n
228 * AHBENR RNGEN LL_AHB1_GRP1_IsEnabledClock\n
229 * AHBENR SRAM1EN LL_AHB1_GRP1_IsEnabledClock
230 * @param Periphs This parameter can be a combination of the following values:
231 * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1
232 * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2
233 * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
234 * @arg @ref LL_AHB1_GRP1_PERIPH_CRC
235 * @arg @ref LL_AHB1_GRP1_PERIPH_TSC
236 * @arg @ref LL_AHB1_GRP1_PERIPH_AES
237 * @arg @ref LL_AHB1_GRP1_PERIPH_RNG
238 * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM1
239 *
240 * @retval State of Periphs (1 or 0).
241 */
LL_AHB1_GRP1_IsEnabledClock(uint32_t Periphs)242 __STATIC_INLINE uint32_t LL_AHB1_GRP1_IsEnabledClock(uint32_t Periphs)
243 {
244 return (READ_BIT(RCC->AHBENR, Periphs) == Periphs);
245 }
246
247 /**
248 * @brief Disable AHB1 peripherals clock.
249 * @rmtoll AHBENR DMA1EN LL_AHB1_GRP1_DisableClock\n
250 * AHBENR DMA2EN LL_AHB1_GRP1_DisableClock\n
251 * AHBENR FLASHEN LL_AHB1_GRP1_DisableClock\n
252 * AHBENR CRCEN LL_AHB1_GRP1_DisableClock\n
253 * AHBENR TSCEN LL_AHB1_GRP1_DisableClock\n
254 * AHBENR AESEN LL_AHB1_GRP1_DisableClock\n
255 * AHBENR RNGEN LL_AHB1_GRP1_DisableClock\n
256 * AHBENR SRAM1EN LL_AHB1_GRP1_DisableClock
257 * @param Periphs This parameter can be a combination of the following values:
258 * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1
259 * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2
260 * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
261 * @arg @ref LL_AHB1_GRP1_PERIPH_CRC
262 * @arg @ref LL_AHB1_GRP1_PERIPH_TSC
263 * @arg @ref LL_AHB1_GRP1_PERIPH_AES
264 * @arg @ref LL_AHB1_GRP1_PERIPH_RNG
265 * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM1
266 *
267 * @retval None
268 */
LL_AHB1_GRP1_DisableClock(uint32_t Periphs)269 __STATIC_INLINE void LL_AHB1_GRP1_DisableClock(uint32_t Periphs)
270 {
271 CLEAR_BIT(RCC->AHBENR, Periphs);
272 }
273
274 /**
275 * @brief Force AHB1 peripherals reset.
276 * @rmtoll AHBRSTR DMA1RST LL_AHB1_GRP1_ForceReset\n
277 * AHBRSTR DMA2RST LL_AHB1_GRP1_ForceReset\n
278 * AHBRSTR FLASHRST LL_AHB1_GRP1_ForceReset\n
279 * AHBRSTR CRCRST LL_AHB1_GRP1_ForceReset\n
280 * AHBRSTR TSCRST LL_AHB1_GRP1_ForceReset\n
281 * AHBRSTR AESRST LL_AHB1_GRP1_ForceReset\n
282 * AHBRSTR RNGRST LL_AHB1_GRP1_ForceReset\n
283 * AHBRSTR SRAM1RST LL_AHB1_GRP1_ForceReset
284 * @param Periphs This parameter can be a combination of the following values:
285 * @arg @ref LL_AHB1_GRP1_PERIPH_ALL
286 * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1
287 * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2
288 * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
289 * @arg @ref LL_AHB1_GRP1_PERIPH_CRC
290 * @arg @ref LL_AHB1_GRP1_PERIPH_TSC
291 * @arg @ref LL_AHB1_GRP1_PERIPH_AES
292 * @arg @ref LL_AHB1_GRP1_PERIPH_RNG
293 * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM1
294 *
295 * @retval None
296 */
LL_AHB1_GRP1_ForceReset(uint32_t Periphs)297 __STATIC_INLINE void LL_AHB1_GRP1_ForceReset(uint32_t Periphs)
298 {
299 SET_BIT(RCC->AHBRSTR, Periphs);
300 }
301
302 /**
303 * @brief Release AHB1 peripherals reset.
304 * @rmtoll AHBRSTR DMA1RST LL_AHB1_GRP1_ReleaseReset\n
305 * AHBRSTR DMA2RST LL_AHB1_GRP1_ReleaseReset\n
306 * AHBRSTR FLASHRST LL_AHB1_GRP1_ReleaseReset\n
307 * AHBRSTR CRCRST LL_AHB1_GRP1_ReleaseReset\n
308 * AHBRSTR TSCRST LL_AHB1_GRP1_ReleaseReset\n
309 * AHBRSTR AESRST LL_AHB1_GRP1_ReleaseReset\n
310 * AHBRSTR RNGRST LL_AHB1_GRP1_ReleaseReset\n
311 * AHBRSTR SRAM1RST LL_AHB1_GRP1_ReleaseReset
312 * @param Periphs This parameter can be a combination of the following values:
313 * @arg @ref LL_AHB1_GRP1_PERIPH_ALL
314 * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1
315 * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2
316 * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
317 * @arg @ref LL_AHB1_GRP1_PERIPH_CRC
318 * @arg @ref LL_AHB1_GRP1_PERIPH_TSC
319 * @arg @ref LL_AHB1_GRP1_PERIPH_AES
320 * @arg @ref LL_AHB1_GRP1_PERIPH_RNG
321 * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM1
322 *
323 * (*) value not defined in all devices.
324 * @retval None
325 */
LL_AHB1_GRP1_ReleaseReset(uint32_t Periphs)326 __STATIC_INLINE void LL_AHB1_GRP1_ReleaseReset(uint32_t Periphs)
327 {
328 CLEAR_BIT(RCC->AHBRSTR, Periphs);
329 }
330
331 /**
332 * @brief Enable AHB1 peripheral clocks in Sleep and Stop modes
333 * @rmtoll AHBSMENR DMA1SMEN LL_AHB1_GRP1_EnableClockStopSleep\n
334 * AHBSMENR DMA2SMEN LL_AHB1_GRP1_EnableClockStopSleep\n
335 * AHBSMENR FLASHSMEN LL_AHB1_GRP1_EnableClockStopSleep\n
336 * AHBSMENR SRAM1SMEN LL_AHB1_GRP1_EnableClockStopSleep\n
337 * AHBSMENR CRCSMEN LL_AHB1_GRP1_EnableClockStopSleep\n
338 * AHBSMENR TSCSMEN LL_AHB1_GRP1_EnableClockStopSleep\n
339 * AHBSMENR AESSMEN LL_AHB1_GRP1_EnableClockStopSleep\n
340 * AHBSMENR RNGSMEN LL_AHB1_GRP1_EnableClockStopSleep\n
341 * AHBSMENR SRAM1SMEN LL_AHB1_GRP1_EnableClockStopSleep
342 * @param Periphs This parameter can be a combination of the following values:
343 * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1
344 * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2
345 * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
346 * @arg @ref LL_AHB1_GRP1_PERIPH_CRC
347 * @arg @ref LL_AHB1_GRP1_PERIPH_TSC
348 * @arg @ref LL_AHB1_GRP1_PERIPH_AES
349 * @arg @ref LL_AHB1_GRP1_PERIPH_RNG
350 * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM1
351 *
352 * (*) value not defined in all devices.
353 * @retval None
354 */
LL_AHB1_GRP1_EnableClockStopSleep(uint32_t Periphs)355 __STATIC_INLINE void LL_AHB1_GRP1_EnableClockStopSleep(uint32_t Periphs)
356 {
357 __IO uint32_t tmpreg;
358 SET_BIT(RCC->AHBSMENR, Periphs);
359 /* Delay after an RCC peripheral clock enabling */
360 tmpreg = READ_BIT(RCC->AHBSMENR, Periphs);
361 (void)tmpreg;
362 }
363
364 /**
365 * @brief Disable AHB1 peripheral clocks in Sleep and Stop modes
366 * @rmtoll AHBSMENR DMA1SMEN LL_AHB1_GRP1_DisableClockStopSleep\n
367 * AHBSMENR DMA2SMEN LL_AHB1_GRP1_DisableClockStopSleep\n
368 * AHBSMENR FLASHSMEN LL_AHB1_GRP1_DisableClockStopSleep\n
369 * AHBSMENR SRAM1SMEN LL_AHB1_GRP1_DisableClockStopSleep\n
370 * AHBSMENR CRCSMEN LL_AHB1_GRP1_DisableClockStopSleep\n
371 * AHBSMENR TSCSMEN LL_AHB1_GRP1_DisableClockStopSleep\n
372 * AHBSMENR AESSMEN LL_AHB1_GRP1_DisableClockStopSleep\n
373 * AHBSMENR RNGSMEN LL_AHB1_GRP1_DisableClockStopSleep\n
374 * AHBSMENR SRAM1SMEN LL_AHB1_GRP1_DisableClockStopSleep
375 * @param Periphs This parameter can be a combination of the following values:
376 * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1
377 * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2
378 * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
379 * @arg @ref LL_AHB1_GRP1_PERIPH_CRC
380 * @arg @ref LL_AHB1_GRP1_PERIPH_TSC
381 * @arg @ref LL_AHB1_GRP1_PERIPH_AES
382 * @arg @ref LL_AHB1_GRP1_PERIPH_RNG
383 * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM1
384 *
385 * (*) value not defined in all devices.
386 * @retval None
387 */
LL_AHB1_GRP1_DisableClockStopSleep(uint32_t Periphs)388 __STATIC_INLINE void LL_AHB1_GRP1_DisableClockStopSleep(uint32_t Periphs)
389 {
390 CLEAR_BIT(RCC->AHBSMENR, Periphs);
391 }
392
393 /**
394 * @}
395 */
396
397 /** @defgroup BUS_LL_EF_APB1_GRP1 GRP1
398 * @{
399 */
400
401 /**
402 * @brief Enable APB1 GRP1 peripherals clock.
403 * @rmtoll APBENR1 TIM2EN LL_APB1_GRP1_EnableClock\n
404 * APBENR1 TIM3EN LL_APB1_GRP1_EnableClock\n
405 * APBENR1 TIM6EN LL_APB1_GRP1_EnableClock\n
406 * APBENR1 TIM7EN LL_APB1_GRP1_EnableClock\n
407 * APBENR1 LPUART2EN LL_APB1_GRP1_EnableClock\n
408 * APBENR1 LCDEN LL_APB1_GRP1_EnableClock\n
409 * APBENR1 RTCAPBEN LL_APB1_GRP1_EnableClock\n
410 * APBENR1 WWDGEN LL_APB1_GRP1_EnableClock\n
411 * APBENR1 LPUART3EN LL_APB1_GRP1_EnableClock\n
412 * APBENR1 USBFSEN LL_APB1_GRP1_EnableClock\n
413 * APBENR1 SPI2EN LL_APB1_GRP1_EnableClock\n
414 * APBENR1 SPI3EN LL_APB1_GRP1_EnableClock\n
415 * APBENR1 CRSEN LL_APB1_GRP1_EnableClock\n
416 * APBENR1 USART2EN LL_APB1_GRP1_EnableClock\n
417 * APBENR1 USART3EN LL_APB1_GRP1_EnableClock\n
418 * APBENR1 USART4EN LL_APB1_GRP1_EnableClock\n
419 * APBENR1 LPUART1EN LL_APB1_GRP1_EnableClock\n
420 * APBENR1 I2C1EN LL_APB1_GRP1_EnableClock\n
421 * APBENR1 I2C2EN LL_APB1_GRP1_EnableClock\n
422 * APBENR1 I2C3EN LL_APB1_GRP1_EnableClock\n
423 * APBENR1 OPAMPEN LL_APB1_GRP1_EnableClock\n
424 * APBENR1 I2C4EN LL_APB1_GRP1_EnableClock\n
425 * APBENR1 LPTIM3EN LL_APB1_GRP1_EnableClock\n
426 * APBENR1 PWREN LL_APB1_GRP1_EnableClock\n
427 * APBENR1 DAC1EN LL_APB1_GRP1_EnableClock\n
428 * APBENR1 LPTIM2EN LL_APB1_GRP1_EnableClock
429 * APBENR1 LPTIM1EN LL_APB1_GRP1_EnableClock
430 * @param Periphs This parameter can be a combination of the following values:
431 * @arg @ref LL_APB1_GRP1_PERIPH_TIM2
432 * @arg @ref LL_APB1_GRP1_PERIPH_TIM3
433 * @arg @ref LL_APB1_GRP1_PERIPH_TIM6
434 * @arg @ref LL_APB1_GRP1_PERIPH_TIM7
435 * @arg @ref LL_APB1_GRP1_PERIPH_LPUART2
436 * @arg @ref LL_APB1_GRP1_PERIPH_LCD
437 * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB
438 * @arg @ref LL_APB1_GRP1_PERIPH_WWDG
439 * @arg @ref LL_APB1_GRP1_PERIPH_LPUART3
440 * @arg @ref LL_APB1_GRP1_PERIPH_USB
441 * @arg @ref LL_APB1_GRP1_PERIPH_SPI2
442 * @arg @ref LL_APB1_GRP1_PERIPH_SPI3
443 * @arg @ref LL_APB1_GRP1_PERIPH_CRS
444 * @arg @ref LL_APB1_GRP1_PERIPH_USART2
445 * @arg @ref LL_APB1_GRP1_PERIPH_USART3
446 * @arg @ref LL_APB1_GRP1_PERIPH_USART4
447 * @arg @ref LL_APB1_GRP1_PERIPH_LPUART1
448 * @arg @ref LL_APB1_GRP1_PERIPH_I2C1
449 * @arg @ref LL_APB1_GRP1_PERIPH_I2C2
450 * @arg @ref LL_APB1_GRP1_PERIPH_I2C3
451 * @arg @ref LL_APB1_GRP1_PERIPH_OPAMP
452 * @arg @ref LL_APB1_GRP1_PERIPH_I2C4
453 * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM3
454 * @arg @ref LL_APB1_GRP1_PERIPH_PWR
455 * @arg @ref LL_APB1_GRP1_PERIPH_DAC1
456 * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM2
457 * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1
458 *
459 * @retval None
460 */
LL_APB1_GRP1_EnableClock(uint32_t Periphs)461 __STATIC_INLINE void LL_APB1_GRP1_EnableClock(uint32_t Periphs)
462 {
463 __IO uint32_t tmpreg;
464 SET_BIT(RCC->APBENR1, Periphs);
465 /* Delay after an RCC peripheral clock enabling */
466 tmpreg = READ_BIT(RCC->APBENR1, Periphs);
467 (void)tmpreg;
468 }
469
470 /**
471 * @brief Check if APB1 GRP1 peripheral clock is enabled or not
472 * @rmtoll APBENR1 TIM2EN LL_APB1_GRP1_IsEnabledClock\n
473 * APBENR1 TIM3EN LL_APB1_GRP1_IsEnabledClock\n
474 * APBENR1 TIM6EN LL_APB1_GRP1_IsEnabledClock\n
475 * APBENR1 TIM7EN LL_APB1_GRP1_IsEnabledClock\n
476 * APBENR1 LPUART2EN LL_APB1_GRP1_IsEnabledClock\n
477 * APBENR1 LCDEN LL_APB1_GRP1_IsEnabledClock\n
478 * APBENR1 RTCAPBEN LL_APB1_GRP1_IsEnabledClock\n
479 * APBENR1 WWDGEN LL_APB1_GRP1_IsEnabledClock\n
480 * APBENR1 LPUART3EN LL_APB1_GRP1_IsEnabledClock\n
481 * APBENR1 USBFSEN LL_APB1_GRP1_IsEnabledClock\n
482 * APBENR1 SPI2EN LL_APB1_GRP1_IsEnabledClock\n
483 * APBENR1 SPI3EN LL_APB1_GRP1_IsEnabledClock\n
484 * APBENR1 CRSEN LL_APB1_GRP1_IsEnabledClock\n
485 * APBENR1 USART2EN LL_APB1_GRP1_IsEnabledClock\n
486 * APBENR1 USART3EN LL_APB1_GRP1_IsEnabledClock\n
487 * APBENR1 USART4EN LL_APB1_GRP1_IsEnabledClock\n
488 * APBENR1 USART4EN LL_APB1_GRP1_IsEnabledClock\n
489 * APBENR1 LPUART1EN LL_APB1_GRP1_IsEnabledClock\n
490 * APBENR1 I2C1EN LL_APB1_GRP1_IsEnabledClock\n
491 * APBENR1 I2C2EN LL_APB1_GRP1_IsEnabledClock\n
492 * APBENR1 I2C3EN LL_APB1_GRP1_IsEnabledClock\n
493 * APBENR1 OPAMPEN LL_APB1_GRP1_IsEnabledClock\n
494 * APBENR1 I2C4EN LL_APB1_GRP1_IsEnabledClock\n
495 * APBENR1 LPTIM3EN LL_APB1_GRP1_IsEnabledClock\n
496 * APBENR1 PWREN LL_APB1_GRP1_IsEnabledClock\n
497 * APBENR1 DAC1EN LL_APB1_GRP1_IsEnabledClock\n
498 * APBENR1 LPTIM2EN LL_APB1_GRP1_IsEnabledClock\n
499 * APBENR1 LPTIM1EN LL_APB1_GRP1_IsEnabledClock
500 * @param Periphs This parameter can be a combination of the following values:
501 * @arg @ref LL_APB1_GRP1_PERIPH_TIM2
502 * @arg @ref LL_APB1_GRP1_PERIPH_TIM3
503 * @arg @ref LL_APB1_GRP1_PERIPH_TIM6
504 * @arg @ref LL_APB1_GRP1_PERIPH_TIM7
505 * @arg @ref LL_APB1_GRP1_PERIPH_LPUART2
506 * @arg @ref LL_APB1_GRP1_PERIPH_LCD
507 * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB
508 * @arg @ref LL_APB1_GRP1_PERIPH_WWDG
509 * @arg @ref LL_APB1_GRP1_PERIPH_LPUART3
510 * @arg @ref LL_APB1_GRP1_PERIPH_USB
511 * @arg @ref LL_APB1_GRP1_PERIPH_SPI2
512 * @arg @ref LL_APB1_GRP1_PERIPH_SPI3
513 * @arg @ref LL_APB1_GRP1_PERIPH_CRS
514 * @arg @ref LL_APB1_GRP1_PERIPH_USART2
515 * @arg @ref LL_APB1_GRP1_PERIPH_USART3
516 * @arg @ref LL_APB1_GRP1_PERIPH_USART4
517 * @arg @ref LL_APB1_GRP1_PERIPH_LPUART1
518 * @arg @ref LL_APB1_GRP1_PERIPH_I2C1
519 * @arg @ref LL_APB1_GRP1_PERIPH_I2C2
520 * @arg @ref LL_APB1_GRP1_PERIPH_I2C3
521 * @arg @ref LL_APB1_GRP1_PERIPH_OPAMP
522 * @arg @ref LL_APB1_GRP1_PERIPH_I2C4
523 * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM3
524 * @arg @ref LL_APB1_GRP1_PERIPH_PWR
525 * @arg @ref LL_APB1_GRP1_PERIPH_DAC1
526 * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM2
527 * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1
528 *
529 * @retval State of Periphs (1 or 0).
530 */
LL_APB1_GRP1_IsEnabledClock(uint32_t Periphs)531 __STATIC_INLINE uint32_t LL_APB1_GRP1_IsEnabledClock(uint32_t Periphs)
532 {
533 return (READ_BIT(RCC->APBENR1, Periphs) == Periphs);
534 }
535
536 /**
537 * @brief Disable APB1 GRP1 peripherals clock.
538 * @rmtoll APBENR1 TIM2EN LL_APB1_GRP1_DisableClock\n
539 * APBENR1 TIM3EN LL_APB1_GRP1_DisableClock\n
540 * APBENR1 TIM6EN LL_APB1_GRP1_DisableClock\n
541 * APBENR1 TIM7EN LL_APB1_GRP1_DisableClock\n
542 * APBENR1 LPUART2EN LL_APB1_GRP1_DisableClock\n
543 * APBENR1 LCDEN LL_APB1_GRP1_DisableClock\n
544 * APBENR1 RTCAPBEN LL_APB1_GRP1_DisableClock\n
545 * APBENR1 WWDGEN LL_APB1_GRP1_DisableClock\n
546 * APBENR1 LPUART3EN LL_APB1_GRP1_DisableClock\n
547 * APBENR1 USBFSEN LL_APB1_GRP1_DisableClock\n
548 * APBENR1 SPI2EN LL_APB1_GRP1_DisableClock\n
549 * APBENR1 SPI3EN LL_APB1_GRP1_DisableClock\n
550 * APBENR1 CRSEN LL_APB1_GRP1_DisableClock\n
551 * APBENR1 USART2EN LL_APB1_GRP1_DisableClock\n
552 * APBENR1 USART3EN LL_APB1_GRP1_DisableClock\n
553 * APBENR1 USART4EN LL_APB1_GRP1_DisableClock\n
554 * APBENR1 LPUART1EN LL_APB1_GRP1_DisableClock\n
555 * APBENR1 I2C1EN LL_APB1_GRP1_DisableClock\n
556 * APBENR1 I2C2EN LL_APB1_GRP1_DisableClock\n
557 * APBENR1 I2C3EN LL_APB1_GRP1_DisableClock\n
558 * APBENR1 OPAMPEN LL_APB1_GRP1_DisableClock\n
559 * APBENR1 I2C4EN LL_APB1_GRP1_DisableClock\n
560 * APBENR1 LPTIM3EN LL_APB1_GRP1_DisableClock\n
561 * APBENR1 PWREN LL_APB1_GRP1_DisableClock\n
562 * APBENR1 DAC1EN LL_APB1_GRP1_DisableClock\n
563 * APBENR1 LPTIM2EN LL_APB1_GRP1_DisableClock\n
564 * APBENR1 LPTIM1EN LL_APB1_GRP1_DisableClock
565 * @param Periphs This parameter can be a combination of the following values:
566 * @arg @ref LL_APB1_GRP1_PERIPH_TIM2
567 * @arg @ref LL_APB1_GRP1_PERIPH_TIM3
568 * @arg @ref LL_APB1_GRP1_PERIPH_TIM6
569 * @arg @ref LL_APB1_GRP1_PERIPH_TIM7
570 * @arg @ref LL_APB1_GRP1_PERIPH_LPUART2
571 * @arg @ref LL_APB1_GRP1_PERIPH_LCD
572 * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB
573 * @arg @ref LL_APB1_GRP1_PERIPH_WWDG
574 * @arg @ref LL_APB1_GRP1_PERIPH_LPUART3
575 * @arg @ref LL_APB1_GRP1_PERIPH_USB
576 * @arg @ref LL_APB1_GRP1_PERIPH_SPI2
577 * @arg @ref LL_APB1_GRP1_PERIPH_SPI3
578 * @arg @ref LL_APB1_GRP1_PERIPH_CRS
579 * @arg @ref LL_APB1_GRP1_PERIPH_USART2
580 * @arg @ref LL_APB1_GRP1_PERIPH_USART3
581 * @arg @ref LL_APB1_GRP1_PERIPH_USART4
582 * @arg @ref LL_APB1_GRP1_PERIPH_LPUART1
583 * @arg @ref LL_APB1_GRP1_PERIPH_I2C1
584 * @arg @ref LL_APB1_GRP1_PERIPH_I2C2
585 * @arg @ref LL_APB1_GRP1_PERIPH_I2C3
586 * @arg @ref LL_APB1_GRP1_PERIPH_OPAMP
587 * @arg @ref LL_APB1_GRP1_PERIPH_I2C4
588 * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM3
589 * @arg @ref LL_APB1_GRP1_PERIPH_PWR
590 * @arg @ref LL_APB1_GRP1_PERIPH_DAC1
591 * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM2
592 * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1
593 *
594 * @retval None
595 */
LL_APB1_GRP1_DisableClock(uint32_t Periphs)596 __STATIC_INLINE void LL_APB1_GRP1_DisableClock(uint32_t Periphs)
597 {
598 CLEAR_BIT(RCC->APBENR1, Periphs);
599 }
600
601 /**
602 * @brief Force APB1 GRP1 peripherals reset.
603 * @rmtoll APBRSTR1 TIM2RST LL_APB1_GRP1_ForceReset\n
604 * APBRSTR1 TIM3RST LL_APB1_GRP1_ForceReset\n
605 * APBRSTR1 TIM6RST LL_APB1_GRP1_ForceReset\n
606 * APBRSTR1 TIM7RST LL_APB1_GRP1_ForceReset\n
607 * APBRSTR1 LPUART2RST LL_APB1_GRP1_ForceReset\n
608 * APBRSTR1 LCDRST LL_APB1_GRP1_ForceReset\n
609 * APBRSTR1 RTCAPBRST LL_APB1_GRP1_ForceReset\n
610 * APBRSTR1 WWDGRST LL_APB1_GRP1_ForceReset\n
611 * APBRSTR1 LPUART3RST LL_APB1_GRP1_ForceReset\n
612 * APBRSTR1 USBFSRST LL_APB1_GRP1_ForceReset\n
613 * APBRSTR1 SPI2RST LL_APB1_GRP1_ForceReset\n
614 * APBRSTR1 SPI3RST LL_APB1_GRP1_ForceReset\n
615 * APBRSTR1 CRSRST LL_APB1_GRP1_ForceReset\n
616 * APBRSTR1 USART2RST LL_APB1_GRP1_ForceReset\n
617 * APBRSTR1 USART3RST LL_APB1_GRP1_ForceReset\n
618 * APBRSTR1 USART4RST LL_APB1_GRP1_ForceReset\n
619 * APBRSTR1 LPUART1RST LL_APB1_GRP1_ForceReset\n
620 * APBRSTR1 I2C1RST LL_APB1_GRP1_ForceReset\n
621 * APBRSTR1 I2C2RST LL_APB1_GRP1_ForceReset\n
622 * APBRSTR1 I2C3RST LL_APB1_GRP1_ForceReset\n
623 * APBRSTR1 OPAMPRST LL_APB1_GRP1_ForceReset\n
624 * APBRSTR1 I2C4RST LL_APB1_GRP1_ForceReset\n
625 * APBRSTR1 LPTIM3RST LL_APB1_GRP1_ForceReset\n
626 * APBRSTR1 PWRRST LL_APB1_GRP1_ForceReset\n
627 * APBRSTR1 DAC1RST LL_APB1_GRP1_ForceReset\n
628 * APBRSTR1 LPTIM2RST LL_APB1_GRP1_ForceReset\n
629 * APBRSTR1 LPTIM1RST LL_APB1_GRP1_ForceReset
630 * @param Periphs This parameter can be a combination of the following values:
631 * @arg @ref LL_APB1_GRP1_PERIPH_TIM2
632 * @arg @ref LL_APB1_GRP1_PERIPH_TIM3
633 * @arg @ref LL_APB1_GRP1_PERIPH_TIM6
634 * @arg @ref LL_APB1_GRP1_PERIPH_TIM7
635 * @arg @ref LL_APB1_GRP1_PERIPH_LPUART2
636 * @arg @ref LL_APB1_GRP1_PERIPH_LCD
637 * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB
638 * @arg @ref LL_APB1_GRP1_PERIPH_WWDG
639 * @arg @ref LL_APB1_GRP1_PERIPH_LPUART3
640 * @arg @ref LL_APB1_GRP1_PERIPH_USB
641 * @arg @ref LL_APB1_GRP1_PERIPH_SPI2
642 * @arg @ref LL_APB1_GRP1_PERIPH_SPI3
643 * @arg @ref LL_APB1_GRP1_PERIPH_CRS
644 * @arg @ref LL_APB1_GRP1_PERIPH_USART2
645 * @arg @ref LL_APB1_GRP1_PERIPH_USART3
646 * @arg @ref LL_APB1_GRP1_PERIPH_USART4
647 * @arg @ref LL_APB1_GRP1_PERIPH_LPUART1
648 * @arg @ref LL_APB1_GRP1_PERIPH_I2C1
649 * @arg @ref LL_APB1_GRP1_PERIPH_I2C2
650 * @arg @ref LL_APB1_GRP1_PERIPH_I2C3
651 * @arg @ref LL_APB1_GRP1_PERIPH_OPAMP
652 * @arg @ref LL_APB1_GRP1_PERIPH_I2C4
653 * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM3
654 * @arg @ref LL_APB1_GRP1_PERIPH_PWR
655 * @arg @ref LL_APB1_GRP1_PERIPH_DAC1
656 * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM2
657 * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1
658 *
659 * @retval None
660 */
LL_APB1_GRP1_ForceReset(uint32_t Periphs)661 __STATIC_INLINE void LL_APB1_GRP1_ForceReset(uint32_t Periphs)
662 {
663 SET_BIT(RCC->APBRSTR1, Periphs);
664 }
665
666 /**
667 * @brief Release APB1 GRP1 peripherals reset.
668 * @rmtoll APBRSTR1 TIM2RST LL_APB1_GRP1_ReleaseReset\n
669 * APBRSTR1 TIM3RST LL_APB1_GRP1_ReleaseReset\n
670 * APBRSTR1 TIM6RST LL_APB1_GRP1_ReleaseReset\n
671 * APBRSTR1 TIM7RST LL_APB1_GRP1_ReleaseReset\n
672 * APBRSTR1 LPUART2RST LL_APB1_GRP1_ReleaseReset\n
673 * APBRSTR1 LCDRST LL_APB1_GRP1_ReleaseReset\n
674 * APBRSTR1 RTCAPBRST LL_APB1_GRP1_ReleaseReset\n
675 * APBRSTR1 WWDGRST LL_APB1_GRP1_ReleaseReset\n
676 * APBRSTR1 LPUART3RST LL_APB1_GRP1_ReleaseReset\n
677 * APBRSTR1 USBFSRST LL_APB1_GRP1_ReleaseReset\n
678 * APBRSTR1 SPI2RST LL_APB1_GRP1_ReleaseReset\n
679 * APBRSTR1 SPI3RST LL_APB1_GRP1_ReleaseReset\n
680 * APBRSTR1 CRSRST LL_APB1_GRP1_ReleaseReset\n
681 * APBRSTR1 USART2RST LL_APB1_GRP1_ReleaseReset\n
682 * APBRSTR1 USART3RST LL_APB1_GRP1_ReleaseReset\n
683 * APBRSTR1 USART4RST LL_APB1_GRP1_ReleaseReset\n
684 * APBRSTR1 LPUART1RST LL_APB1_GRP1_ReleaseReset\n
685 * APBRSTR1 I2C1RST LL_APB1_GRP1_ReleaseReset\n
686 * APBRSTR1 I2C2RST LL_APB1_GRP1_ReleaseReset\n
687 * APBRSTR1 I2C3RST LL_APB1_GRP1_ReleaseReset\n
688 * APBRSTR1 OPAMPRST LL_APB1_GRP1_ReleaseReset\n
689 * APBRSTR1 I2C4RST LL_APB1_GRP1_ReleaseReset\n
690 * APBRSTR1 LPTIM3RST LL_APB1_GRP1_ReleaseReset\n
691 * APBRSTR1 PWRRST LL_APB1_GRP1_ReleaseReset\n
692 * APBRSTR1 DAC1RST LL_APB1_GRP1_ReleaseReset\n
693 * APBRSTR1 LPTIM2RST LL_APB1_GRP1_ReleaseReset\n
694 * APBRSTR1 LPTIM1RST LL_APB1_GRP1_ReleaseReset
695 * @param Periphs This parameter can be a combination of the following values:
696 * @arg @ref LL_APB1_GRP1_PERIPH_TIM2
697 * @arg @ref LL_APB1_GRP1_PERIPH_TIM3
698 * @arg @ref LL_APB1_GRP1_PERIPH_TIM6
699 * @arg @ref LL_APB1_GRP1_PERIPH_TIM7
700 * @arg @ref LL_APB1_GRP1_PERIPH_LPUART2
701 * @arg @ref LL_APB1_GRP1_PERIPH_LCD
702 * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB
703 * @arg @ref LL_APB1_GRP1_PERIPH_WWDG
704 * @arg @ref LL_APB1_GRP1_PERIPH_LPUART3
705 * @arg @ref LL_APB1_GRP1_PERIPH_USB
706 * @arg @ref LL_APB1_GRP1_PERIPH_SPI2
707 * @arg @ref LL_APB1_GRP1_PERIPH_SPI3
708 * @arg @ref LL_APB1_GRP1_PERIPH_CRS
709 * @arg @ref LL_APB1_GRP1_PERIPH_USART2
710 * @arg @ref LL_APB1_GRP1_PERIPH_USART3
711 * @arg @ref LL_APB1_GRP1_PERIPH_USART4
712 * @arg @ref LL_APB1_GRP1_PERIPH_LPUART1
713 * @arg @ref LL_APB1_GRP1_PERIPH_I2C1
714 * @arg @ref LL_APB1_GRP1_PERIPH_I2C2
715 * @arg @ref LL_APB1_GRP1_PERIPH_I2C3
716 * @arg @ref LL_APB1_GRP1_PERIPH_OPAMP
717 * @arg @ref LL_APB1_GRP1_PERIPH_I2C4
718 * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM3
719 * @arg @ref LL_APB1_GRP1_PERIPH_PWR
720 * @arg @ref LL_APB1_GRP1_PERIPH_DAC1
721 * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM2
722 * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1
723 *
724 * @retval None
725 */
LL_APB1_GRP1_ReleaseReset(uint32_t Periphs)726 __STATIC_INLINE void LL_APB1_GRP1_ReleaseReset(uint32_t Periphs)
727 {
728 CLEAR_BIT(RCC->APBRSTR1, Periphs);
729 }
730
731 /**
732 * @brief Enable APB1 GRP1 peripheral clocks in Sleep and Stop modes
733 * @rmtoll APBSMENR1 TIM2SMEN LL_APB1_GRP1_EnableClockStopSleep\n
734 * APBSMENR1 TIM3SMEN LL_APB1_GRP1_EnableClockStopSleep\n
735 * APBSMENR1 TIM6SMEN LL_APB1_GRP1_EnableClockStopSleep\n
736 * APBSMENR1 TIM7SMEN LL_APB1_GRP1_EnableClockStopSleep\n
737 * APBSMENR1 LPUART2SMEN LL_APB1_GRP1_EnableClockStopSleep\n
738 * APBSMENR1 LCDSMEN LL_APB1_GRP1_EnableClockStopSleep\n
739 * APBSMENR1 RTCAPBSMEN LL_APB1_GRP1_EnableClockStopSleep\n
740 * APBSMENR1 WWDGSMEN LL_APB1_GRP1_EnableClockStopSleep\n
741 * APBSMENR1 LPUART3SMEN LL_APB1_GRP1_EnableClockStopSleep\n
742 * APBSMENR1 USBFSSMEN LL_APB1_GRP1_EnableClockStopSleep\n
743 * APBSMENR1 SPI2SMEN LL_APB1_GRP1_EnableClockStopSleep\n
744 * APBSMENR1 SPI3SMEN LL_APB1_GRP1_EnableClockStopSleep\n
745 * APBSMENR1 CRSSMEN LL_APB1_GRP1_EnableClockStopSleep\n
746 * APBSMENR1 USART2SMEN LL_APB1_GRP1_EnableClockStopSleep\n
747 * APBSMENR1 USART3SMEN LL_APB1_GRP1_EnableClockStopSleep\n
748 * APBSMENR1 USART4SMEN LL_APB1_GRP1_EnableClockStopSleep\n
749 * APBSMENR1 LPUART1SMEN LL_APB1_GRP1_EnableClockStopSleep\n
750 * APBSMENR1 I2C1SMEN LL_APB1_GRP1_EnableClockStopSleep\n
751 * APBSMENR1 I2C2SMEN LL_APB1_GRP1_EnableClockStopSleep\n
752 * APBSMENR1 I2C3SMEN LL_APB1_GRP1_EnableClockStopSleep\n
753 * APBSMENR1 OPAMPSMEN LL_APB1_GRP1_EnableClockStopSleep\n
754 * APBSMENR1 I2C4SMEN LL_APB1_GRP1_EnableClockStopSleep\n
755 * APBSMENR1 LPTIM3SMEN LL_APB1_GRP1_EnableClockStopSleep\n
756 * APBSMENR1 PWRSMEN LL_APB1_GRP1_EnableClockStopSleep\n
757 * APBSMENR1 DAC1SMEN LL_APB1_GRP1_EnableClockStopSleep\n
758 * APBSMENR1 LPTIM2SMEN LL_APB1_GRP1_EnableClockStopSleep\n
759 * APBSMENR1 LPTIM1SMEN LL_APB1_GRP1_EnableClockStopSleep
760 * @param Periphs This parameter can be a combination of the following values:
761 * @arg @ref LL_APB1_GRP1_PERIPH_TIM2
762 * @arg @ref LL_APB1_GRP1_PERIPH_TIM3
763 * @arg @ref LL_APB1_GRP1_PERIPH_TIM6
764 * @arg @ref LL_APB1_GRP1_PERIPH_TIM7
765 * @arg @ref LL_APB1_GRP1_PERIPH_LPUART2
766 * @arg @ref LL_APB1_GRP1_PERIPH_LCD
767 * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB
768 * @arg @ref LL_APB1_GRP1_PERIPH_WWDG
769 * @arg @ref LL_APB1_GRP1_PERIPH_LPUART3
770 * @arg @ref LL_APB1_GRP1_PERIPH_USB
771 * @arg @ref LL_APB1_GRP1_PERIPH_SPI2
772 * @arg @ref LL_APB1_GRP1_PERIPH_SPI3
773 * @arg @ref LL_APB1_GRP1_PERIPH_CRS
774 * @arg @ref LL_APB1_GRP1_PERIPH_USART2
775 * @arg @ref LL_APB1_GRP1_PERIPH_USART3
776 * @arg @ref LL_APB1_GRP1_PERIPH_USART4
777 * @arg @ref LL_APB1_GRP1_PERIPH_LPUART1
778 * @arg @ref LL_APB1_GRP1_PERIPH_I2C1
779 * @arg @ref LL_APB1_GRP1_PERIPH_I2C2
780 * @arg @ref LL_APB1_GRP1_PERIPH_I2C3
781 * @arg @ref LL_APB1_GRP1_PERIPH_OPAMP
782 * @arg @ref LL_APB1_GRP1_PERIPH_I2C4
783 * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM3
784 * @arg @ref LL_APB1_GRP1_PERIPH_PWR
785 * @arg @ref LL_APB1_GRP1_PERIPH_DAC1
786 * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM2
787 * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1
788 *
789 * (*) value not defined in all devices.
790 * @retval None
791 */
LL_APB1_GRP1_EnableClockStopSleep(uint32_t Periphs)792 __STATIC_INLINE void LL_APB1_GRP1_EnableClockStopSleep(uint32_t Periphs)
793 {
794 __IO uint32_t tmpreg;
795 SET_BIT(RCC->APBSMENR1, Periphs);
796 /* Delay after an RCC peripheral clock enabling */
797 tmpreg = READ_BIT(RCC->APBSMENR1, Periphs);
798 (void)tmpreg;
799 }
800
801 /**
802 * @brief Disable APB_1 peripheral clocks in Sleep and Stop modes
803 * @rmtoll APBSMENR1 TIM2SMEN LL_APB1_GRP1_DisableClockStopSleep\n
804 * APBSMENR1 TIM3SMEN LL_APB1_GRP1_DisableClockStopSleep\n
805 * APBSMENR1 TIM6SMEN LL_APB1_GRP1_DisableClockStopSleep\n
806 * APBSMENR1 TIM7SMEN LL_APB1_GRP1_DisableClockStopSleep\n
807 * APBSMENR1 LPUART2SMEN LL_APB1_GRP1_DisableClockStopSleep\n
808 * APBSMENR1 LCDSMEN LL_APB1_GRP1_DisableClockStopSleep\n
809 * APBSMENR1 RTCAPBSMEN LL_APB1_GRP1_DisableClockStopSleep\n
810 * APBSMENR1 WWDGSMEN LL_APB1_GRP1_DisableClockStopSleep\n
811 * APBSMENR1 LPUART3SMEN LL_APB1_GRP1_DisableClockStopSleep\n
812 * APBSMENR1 USBFSSMEN LL_APB1_GRP1_DisableClockStopSleep\n
813 * APBSMENR1 SPI2SMEN LL_APB1_GRP1_DisableClockStopSleep\n
814 * APBSMENR1 SPI3SMEN LL_APB1_GRP1_DisableClockStopSleep\n
815 * APBSMENR1 CRSSMEN LL_APB1_GRP1_DisableClockStopSleep\n
816 * APBSMENR1 USART2SMEN LL_APB1_GRP1_DisableClockStopSleep\n
817 * APBSMENR1 USART3SMEN LL_APB1_GRP1_DisableClockStopSleep\n
818 * APBSMENR1 USART4SMEN LL_APB1_GRP1_DisableClockStopSleep\n
819 * APBSMENR1 LPUART1SMEN LL_APB1_GRP1_DisableClockStopSleep\n
820 * APBSMENR1 I2C1SMEN LL_APB1_GRP1_DisableClockStopSleep\n
821 * APBSMENR1 I2C2SMEN LL_APB1_GRP1_DisableClockStopSleep\n
822 * APBSMENR1 I2C3SMEN LL_APB1_GRP1_DisableClockStopSleep\n
823 * APBSMENR1 OPAMPSMEN LL_APB1_GRP1_DisableClockStopSleep\n
824 * APBSMENR1 I2C4SMEN LL_APB1_GRP1_DisableClockStopSleep\n
825 * APBSMENR1 LPTIM3SMEN LL_APB1_GRP1_DisableClockStopSleep\n
826 * APBSMENR1 PWRSMEN LL_APB1_GRP1_DisableClockStopSleep\n
827 * APBSMENR1 DAC1SMEN LL_APB1_GRP1_DisableClockStopSleep\n
828 * APBSMENR1 LPTIM2SMEN LL_APB1_GRP1_DisableClockStopSleep\n
829 * APBSMENR1 LPTIM1SMEN LL_APB1_GRP1_DisableClockStopSleep
830 * @param Periphs This parameter can be a combination of the following values:
831 * @arg @ref LL_APB1_GRP1_PERIPH_TIM2
832 * @arg @ref LL_APB1_GRP1_PERIPH_TIM3
833 * @arg @ref LL_APB1_GRP1_PERIPH_TIM6
834 * @arg @ref LL_APB1_GRP1_PERIPH_TIM7
835 * @arg @ref LL_APB1_GRP1_PERIPH_LPUART2
836 * @arg @ref LL_APB1_GRP1_PERIPH_LCD
837 * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB
838 * @arg @ref LL_APB1_GRP1_PERIPH_WWDG
839 * @arg @ref LL_APB1_GRP1_PERIPH_LPUART3
840 * @arg @ref LL_APB1_GRP1_PERIPH_USB
841 * @arg @ref LL_APB1_GRP1_PERIPH_SPI2
842 * @arg @ref LL_APB1_GRP1_PERIPH_SPI3
843 * @arg @ref LL_APB1_GRP1_PERIPH_CRS
844 * @arg @ref LL_APB1_GRP1_PERIPH_USART2
845 * @arg @ref LL_APB1_GRP1_PERIPH_USART3
846 * @arg @ref LL_APB1_GRP1_PERIPH_USART4
847 * @arg @ref LL_APB1_GRP1_PERIPH_LPUART1
848 * @arg @ref LL_APB1_GRP1_PERIPH_I2C1
849 * @arg @ref LL_APB1_GRP1_PERIPH_I2C2
850 * @arg @ref LL_APB1_GRP1_PERIPH_I2C3
851 * @arg @ref LL_APB1_GRP1_PERIPH_OPAMP
852 * @arg @ref LL_APB1_GRP1_PERIPH_I2C4
853 * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM3
854 * @arg @ref LL_APB1_GRP1_PERIPH_PWR
855 * @arg @ref LL_APB1_GRP1_PERIPH_DAC1
856 * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM2
857 * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1
858 *
859 * @retval None
860 */
LL_APB1_GRP1_DisableClockStopSleep(uint32_t Periphs)861 __STATIC_INLINE void LL_APB1_GRP1_DisableClockStopSleep(uint32_t Periphs)
862 {
863 CLEAR_BIT(RCC->APBSMENR1, Periphs);
864 }
865
866 /**
867 * @}
868 */
869
870 /** @defgroup BUS_LL_EF_APB1_GRP2 GRP2
871 * @{
872 */
873
874 /**
875 * @brief Enable APB1 GRP2 peripherals clock.
876 * @rmtoll APBENR2 SYSCFGEN LL_APB1_GRP2_EnableClock\n
877 * APBENR2 TIM1EN LL_APB1_GRP2_EnableClock\n
878 * APBENR2 SPI1EN LL_APB1_GRP2_EnableClock\n
879 * APBENR2 USART1EN LL_APB1_GRP2_EnableClock\n
880 * APBENR2 TIM15EN LL_APB1_GRP2_EnableClock\n
881 * APBENR2 TIM16EN LL_APB1_GRP2_EnableClock\n
882 * APBENR2 ADCEN LL_APB1_GRP2_EnableClock
883 * @param Periphs This parameter can be a combination of the following values:
884 * @arg @ref LL_APB1_GRP2_PERIPH_SYSCFG
885 * @arg @ref LL_APB1_GRP2_PERIPH_COMP
886 * @arg @ref LL_APB1_GRP2_PERIPH_VREFBUF
887 * @arg @ref LL_APB1_GRP2_PERIPH_TIM1
888 * @arg @ref LL_APB1_GRP2_PERIPH_SPI1
889 * @arg @ref LL_APB1_GRP2_PERIPH_USART1
890 * @arg @ref LL_APB1_GRP2_PERIPH_TIM15
891 * @arg @ref LL_APB1_GRP2_PERIPH_TIM16
892 * @arg @ref LL_APB1_GRP2_PERIPH_ADC
893 *
894 * @retval None
895 */
LL_APB1_GRP2_EnableClock(uint32_t Periphs)896 __STATIC_INLINE void LL_APB1_GRP2_EnableClock(uint32_t Periphs)
897 {
898 __IO uint32_t tmpreg;
899 SET_BIT(RCC->APBENR2, Periphs);
900 /* Delay after an RCC peripheral clock enabling */
901 tmpreg = READ_BIT(RCC->APBENR2, Periphs);
902 (void)tmpreg;
903 }
904 /**
905 * @brief Check if APB1 GRP2 peripheral clock is enabled or not
906 * @rmtoll APBENR2 SYSCFGEN LL_APB1_GRP2_IsEnabledClock\n
907 * APBENR2 TIM1EN LL_APB1_GRP2_IsEnabledClock\n
908 * APBENR2 SPI1EN LL_APB1_GRP2_IsEnabledClock\n
909 * APBENR2 USART1EN LL_APB1_GRP2_IsEnabledClock\n
910 * APBENR2 TIM15EN LL_APB1_GRP2_IsEnabledClock\n
911 * APBENR2 TIM16EN LL_APB1_GRP2_IsEnabledClock\n
912 * APBENR2 ADCEN LL_APB1_GRP2_IsEnabledClock
913 * @param Periphs This parameter can be a combination of the following values:
914 * @arg @ref LL_APB1_GRP2_PERIPH_SYSCFG
915 * @arg @ref LL_APB1_GRP2_PERIPH_COMP
916 * @arg @ref LL_APB1_GRP2_PERIPH_VREFBUF
917 * @arg @ref LL_APB1_GRP2_PERIPH_TIM1
918 * @arg @ref LL_APB1_GRP2_PERIPH_SPI1
919 * @arg @ref LL_APB1_GRP2_PERIPH_USART1
920 * @arg @ref LL_APB1_GRP2_PERIPH_TIM15
921 * @arg @ref LL_APB1_GRP2_PERIPH_TIM16
922 * @arg @ref LL_APB1_GRP2_PERIPH_ADC
923 * @note (*) peripheral not available on all devices
924 * @retval State of Periphs (1 or 0).
925 */
LL_APB1_GRP2_IsEnabledClock(uint32_t Periphs)926 __STATIC_INLINE uint32_t LL_APB1_GRP2_IsEnabledClock(uint32_t Periphs)
927 {
928 return ((READ_BIT(RCC->APBENR2, Periphs) == (Periphs)) ? 1UL : 0UL);
929 }
930
931 /**
932 * @brief Disable APB1 GRP2 peripherals clock.
933 * @rmtoll APBENR2 SYSCFGEN LL_APB1_GRP2_DisableClock\n
934 * APBENR2 TIM1EN LL_APB1_GRP2_DisableClock\n
935 * APBENR2 SPI1EN LL_APB1_GRP2_DisableClock\n
936 * APBENR2 USART1EN LL_APB1_GRP2_DisableClock\n
937 * APBENR2 TIM15EN LL_APB1_GRP2_DisableClock\n
938 * APBENR2 TIM16EN LL_APB1_GRP2_DisableClock\n
939 * APBENR2 ADCEN LL_APB1_GRP2_DisableClock
940 * @param Periphs This parameter can be a combination of the following values:
941 * @arg @ref LL_APB1_GRP2_PERIPH_SYSCFG
942 * @arg @ref LL_APB1_GRP2_PERIPH_VREFBUF
943 * @arg @ref LL_APB1_GRP2_PERIPH_COMP
944 * @arg @ref LL_APB1_GRP2_PERIPH_TIM1
945 * @arg @ref LL_APB1_GRP2_PERIPH_SPI1
946 * @arg @ref LL_APB1_GRP2_PERIPH_USART1
947 * @arg @ref LL_APB1_GRP2_PERIPH_TIM15
948 * @arg @ref LL_APB1_GRP2_PERIPH_TIM16
949 * @arg @ref LL_APB1_GRP2_PERIPH_ADC
950 * @note (*) peripheral not available on all devices
951 * @retval None
952 */
LL_APB1_GRP2_DisableClock(uint32_t Periphs)953 __STATIC_INLINE void LL_APB1_GRP2_DisableClock(uint32_t Periphs)
954 {
955 CLEAR_BIT(RCC->APBENR2, Periphs);
956 }
957
958 /**
959 * @brief Force APB1_GRP2 peripherals reset.
960 * @rmtoll APBRSTR2 SYSCFGRST LL_APB1_GRP2_ForceReset\n
961 * APBRSTR2 TIM1RST LL_APB1_GRP2_ForceReset\n
962 * APBRSTR2 SPI1RST LL_APB1_GRP2_ForceReset\n
963 * APBRSTR2 USART1RST LL_APB1_GRP2_ForceReset\n
964 * APBRSTR2 TIM15RST LL_APB1_GRP2_ForceReset\n
965 * APBRSTR2 TIM16RST LL_APB1_GRP2_ForceReset\n
966 * APBRSTR2 ADCRST LL_APB1_GRP2_ForceReset
967 * @param Periphs This parameter can be a combination of the following values:
968 * @arg @ref LL_APB1_GRP2_PERIPH_ALL
969 * @arg @ref LL_APB1_GRP2_PERIPH_SYSCFG
970 * @arg @ref LL_APB1_GRP2_PERIPH_VREFBUF
971 * @arg @ref LL_APB1_GRP2_PERIPH_COMP
972 * @arg @ref LL_APB1_GRP2_PERIPH_TIM1
973 * @arg @ref LL_APB1_GRP2_PERIPH_SPI1
974 * @arg @ref LL_APB1_GRP2_PERIPH_USART1
975 * @arg @ref LL_APB1_GRP2_PERIPH_TIM15
976 * @arg @ref LL_APB1_GRP2_PERIPH_TIM16
977 * @arg @ref LL_APB1_GRP2_PERIPH_ADC
978 * @note (*) peripheral not available on all devices
979 * @retval None
980 */
LL_APB1_GRP2_ForceReset(uint32_t Periphs)981 __STATIC_INLINE void LL_APB1_GRP2_ForceReset(uint32_t Periphs)
982 {
983 SET_BIT(RCC->APBRSTR2, Periphs);
984 }
985
986 /**
987 * @brief Release APB1_GRP2 peripherals reset.
988 * @rmtoll APBRSTR2 SYSCFGRST LL_APB1_GRP2_ReleaseReset\n
989 * APBRSTR2 TIM1RST LL_APB1_GRP2_ReleaseReset\n
990 * APBRSTR2 SPI1RST LL_APB1_GRP2_ReleaseReset\n
991 * APBRSTR2 USART1RST LL_APB1_GRP2_ReleaseReset\n
992 * APBRSTR2 TIM15RST LL_APB1_GRP2_ReleaseReset\n
993 * APBRSTR2 TIM16RST LL_APB1_GRP2_ReleaseReset\n
994 * APBRSTR2 ADCRST LL_APB1_GRP2_ReleaseReset
995 * @param Periphs This parameter can be a combination of the following values:
996 * @arg @ref LL_APB1_GRP2_PERIPH_ALL
997 * @arg @ref LL_APB1_GRP2_PERIPH_SYSCFG
998 * @arg @ref LL_APB1_GRP2_PERIPH_VREFBUF
999 * @arg @ref LL_APB1_GRP2_PERIPH_COMP
1000 * @arg @ref LL_APB1_GRP2_PERIPH_TIM1
1001 * @arg @ref LL_APB1_GRP2_PERIPH_SPI1
1002 * @arg @ref LL_APB1_GRP2_PERIPH_USART1
1003 * @arg @ref LL_APB1_GRP2_PERIPH_TIM15
1004 * @arg @ref LL_APB1_GRP2_PERIPH_TIM16
1005 * @arg @ref LL_APB1_GRP2_PERIPH_ADC
1006 * @note (*) peripheral not available on all devices
1007 * @retval None
1008 */
LL_APB1_GRP2_ReleaseReset(uint32_t Periphs)1009 __STATIC_INLINE void LL_APB1_GRP2_ReleaseReset(uint32_t Periphs)
1010 {
1011 CLEAR_BIT(RCC->APBRSTR2, Periphs);
1012 }
1013
1014 /**
1015 * @brief Enable APB1_GRP2 peripheral clocks in Sleep and Stop modes
1016 * @rmtoll APBSMENR2 SYSCFGSMEN LL_APB1_GRP2_EnableClockStopSleep\n
1017 * APBSMENR2 TIM1SMEN LL_APB1_GRP2_EnableClockStopSleep\n
1018 * APBSMENR2 SPI1SMEN LL_APB1_GRP2_EnableClockStopSleep\n
1019 * APBSMENR2 USART1SMEN LL_APB1_GRP2_EnableClockStopSleep\n
1020 * APBSMENR2 TIM15SMEN LL_APB1_GRP2_EnableClockStopSleep\n
1021 * APBSMENR2 TIM16SMEN LL_APB1_GRP2_EnableClockStopSleep\n
1022 * APBSMENR2 ADCSMEN LL_APB1_GRP2_EnableClockStopSleep
1023 * @param Periphs This parameter can be a combination of the following values:
1024 * @arg @ref LL_APB1_GRP2_PERIPH_ALL
1025 * @arg @ref LL_APB1_GRP2_PERIPH_SYSCFG
1026 * @arg @ref LL_APB1_GRP2_PERIPH_VREFBUF
1027 * @arg @ref LL_APB1_GRP2_PERIPH_COMP
1028 * @arg @ref LL_APB1_GRP2_PERIPH_TIM1
1029 * @arg @ref LL_APB1_GRP2_PERIPH_SPI1
1030 * @arg @ref LL_APB1_GRP2_PERIPH_USART1
1031 * @arg @ref LL_APB1_GRP2_PERIPH_TIM15
1032 * @arg @ref LL_APB1_GRP2_PERIPH_TIM16
1033 * @arg @ref LL_APB1_GRP2_PERIPH_ADC
1034 * @note (*) peripheral not available on all devices
1035 * @retval None
1036 */
LL_APB1_GRP2_EnableClockStopSleep(uint32_t Periphs)1037 __STATIC_INLINE void LL_APB1_GRP2_EnableClockStopSleep(uint32_t Periphs)
1038 {
1039 __IO uint32_t tmpreg;
1040 SET_BIT(RCC->APBSMENR2, Periphs);
1041 /* Delay after an RCC peripheral clock enabling */
1042 tmpreg = READ_BIT(RCC->APBSMENR2, Periphs);
1043 (void)tmpreg;
1044 }
1045
1046 /**
1047 * @brief Disable APB1_GRP2 peripheral clocks in Sleep and Stop modes
1048 * @rmtoll APBSMENR2 SYSCFGSMEN LL_APB1_GRP2_DisableClockStopSleep\n
1049 * APBSMENR2 TIM1SMEN LL_APB1_GRP2_DisableClockStopSleep\n
1050 * APBSMENR2 SPI1SMEN LL_APB1_GRP2_DisableClockStopSleep\n
1051 * APBSMENR2 USART1SMEN LL_APB1_GRP2_DisableClockStopSleep\n
1052 * APBSMENR2 TIM15SMEN LL_APB1_GRP2_DisableClockStopSleep\n
1053 * APBSMENR2 TIM16SMEN LL_APB1_GRP2_DisableClockStopSleep\n
1054 * APBSMENR2 ADCSMEN LL_APB1_GRP2_DisableClockStopSleep
1055 * @param Periphs This parameter can be a combination of the following values:
1056 * @arg @ref LL_APB1_GRP2_PERIPH_ALL
1057 * @arg @ref LL_APB1_GRP2_PERIPH_SYSCFG
1058 * @arg @ref LL_APB1_GRP2_PERIPH_VREFBUF
1059 * @arg @ref LL_APB1_GRP2_PERIPH_COMP
1060 * @arg @ref LL_APB1_GRP2_PERIPH_TIM1
1061 * @arg @ref LL_APB1_GRP2_PERIPH_SPI1
1062 * @arg @ref LL_APB1_GRP2_PERIPH_USART1
1063 * @arg @ref LL_APB1_GRP2_PERIPH_TIM15
1064 * @arg @ref LL_APB1_GRP2_PERIPH_TIM16
1065 * @arg @ref LL_APB1_GRP2_PERIPH_ADC
1066 * @note (*) peripheral not available on all devices
1067 * @retval None
1068 */
LL_APB1_GRP2_DisableClockStopSleep(uint32_t Periphs)1069 __STATIC_INLINE void LL_APB1_GRP2_DisableClockStopSleep(uint32_t Periphs)
1070 {
1071 CLEAR_BIT(RCC->APBSMENR2, Periphs);
1072 }
1073
1074 /**
1075 * @}
1076 */
1077
1078 /** @defgroup BUS_LL_EF_APB1_DBG DBG
1079 * @{
1080 */
1081
1082 /**
1083 * @brief Enable APB1 DBG clock.
1084 * @rmtoll DBGCFGR DBGEN LL_APB1_DBG_EnableClock
1085 * @retval None
1086 */
LL_APB1_DBG_EnableClock(void)1087 __STATIC_INLINE void LL_APB1_DBG_EnableClock(void)
1088 {
1089 __IO uint32_t tmpreg;
1090 SET_BIT(RCC->DBGCFGR, RCC_DBGCFGR_DBGEN);
1091 /* Delay after an RCC peripheral clock enabling */
1092 tmpreg = READ_BIT(RCC->DBGCFGR, RCC_DBGCFGR_DBGEN);
1093 (void)tmpreg;
1094 }
1095 /**
1096 * @brief Check if APB1 DBG clock is enabled or not
1097 * @rmtoll DBGCFGR DBGEN LL_APB1_DBG_IsEnabledClock
1098 * @retval State of Periphs (1 or 0).
1099 */
LL_APB1_DBG_IsEnabledClock(void)1100 __STATIC_INLINE uint32_t LL_APB1_DBG_IsEnabledClock(void)
1101 {
1102 return ((READ_BIT(RCC->DBGCFGR, RCC_DBGCFGR_DBGEN) == (RCC_DBGCFGR_DBGEN)) ? 1UL : 0UL);
1103 }
1104
1105 /**
1106 * @brief Disable APB1 DBG peripherals clock.
1107 * @rmtoll DBGCFGR DBGEN LL_APB1_DBG_DisableClock
1108 * @retval None
1109 */
LL_APB1_DBG_DisableClock(void)1110 __STATIC_INLINE void LL_APB1_DBG_DisableClock(void)
1111 {
1112 CLEAR_BIT(RCC->DBGCFGR, RCC_DBGCFGR_DBGEN);
1113 }
1114
1115 /**
1116 * @brief Force APB1_DBG peripherals reset.
1117 * @rmtoll DBGCFGR DBGRST LL_APB1_DBG_ForceReset
1118 * @retval None
1119 */
LL_APB1_DBG_ForceReset(void)1120 __STATIC_INLINE void LL_APB1_DBG_ForceReset(void)
1121 {
1122 SET_BIT(RCC->DBGCFGR, RCC_DBGCFGR_DBGRST);
1123 }
1124
1125 /**
1126 * @brief Release APB1_DBG peripherals reset.
1127 * @rmtoll DBGCFGR DBGRST LL_APB1_DBG_ReleaseReset
1128 * @retval None
1129 */
LL_APB1_DBG_ReleaseReset(void)1130 __STATIC_INLINE void LL_APB1_DBG_ReleaseReset(void)
1131 {
1132 CLEAR_BIT(RCC->DBGCFGR, RCC_DBGCFGR_DBGRST);
1133 }
1134
1135 /**
1136 * @}
1137 */
1138
1139 /** @defgroup BUS_LL_EF_IOP IOP
1140 * @{
1141 */
1142
1143 /**
1144 * @brief Enable IOP peripherals clock.
1145 * @rmtoll IOPENR GPIOAEN LL_IOP_GRP1_EnableClock\n
1146 * IOPENR GPIOBEN LL_IOP_GRP1_EnableClock\n
1147 * IOPENR GPIOCEN LL_IOP_GRP1_EnableClock\n
1148 * IOPENR GPIODEN LL_IOP_GRP1_EnableClock\n
1149 * IOPENR GPIOFEN LL_IOP_GRP1_EnableClock
1150 * @param Periphs This parameter can be a combination of the following values:
1151 * @arg @ref LL_IOP_GRP1_PERIPH_GPIOA
1152 * @arg @ref LL_IOP_GRP1_PERIPH_GPIOB
1153 * @arg @ref LL_IOP_GRP1_PERIPH_GPIOC
1154 * @arg @ref LL_IOP_GRP1_PERIPH_GPIOD
1155 * @arg @ref LL_IOP_GRP1_PERIPH_GPIOF
1156 * @retval None
1157 */
LL_IOP_GRP1_EnableClock(uint32_t Periphs)1158 __STATIC_INLINE void LL_IOP_GRP1_EnableClock(uint32_t Periphs)
1159 {
1160 __IO uint32_t tmpreg;
1161 SET_BIT(RCC->IOPENR, Periphs);
1162 /* Delay after an RCC peripheral clock enabling */
1163 tmpreg = READ_BIT(RCC->IOPENR, Periphs);
1164 (void)tmpreg;
1165 }
1166
1167 /**
1168 * @brief Check if IOP peripheral clock is enabled or not
1169 * @rmtoll IOPENR GPIOAEN LL_IOP_GRP1_IsEnabledClock\n
1170 * IOPENR GPIOBEN LL_IOP_GRP1_IsEnabledClock\n
1171 * IOPENR GPIOCEN LL_IOP_GRP1_IsEnabledClock\n
1172 * IOPENR GPIODEN LL_IOP_GRP1_IsEnabledClock\n
1173 * IOPENR GPIOFEN LL_IOP_GRP1_IsEnabledClock
1174 * @param Periphs This parameter can be a combination of the following values:
1175 * @arg @ref LL_IOP_GRP1_PERIPH_GPIOA
1176 * @arg @ref LL_IOP_GRP1_PERIPH_GPIOB
1177 * @arg @ref LL_IOP_GRP1_PERIPH_GPIOC
1178 * @arg @ref LL_IOP_GRP1_PERIPH_GPIOD
1179 * @arg @ref LL_IOP_GRP1_PERIPH_GPIOF
1180 * @retval State of Periphs (1 or 0).
1181 */
LL_IOP_GRP1_IsEnabledClock(uint32_t Periphs)1182 __STATIC_INLINE uint32_t LL_IOP_GRP1_IsEnabledClock(uint32_t Periphs)
1183 {
1184 return ((READ_BIT(RCC->IOPENR, Periphs) == Periphs) ? 1UL : 0UL);
1185 }
1186
1187 /**
1188 * @brief Disable IOP peripherals clock.
1189 * @rmtoll IOPENR GPIOAEN LL_IOP_GRP1_DisableClock\n
1190 * IOPENR GPIOBEN LL_IOP_GRP1_DisableClock\n
1191 * IOPENR GPIOCEN LL_IOP_GRP1_DisableClock\n
1192 * IOPENR GPIODEN LL_IOP_GRP1_DisableClock\n
1193 * IOPENR GPIOFEN LL_IOP_GRP1_DisableClock
1194 * @param Periphs This parameter can be a combination of the following values:
1195 * @arg @ref LL_IOP_GRP1_PERIPH_GPIOA
1196 * @arg @ref LL_IOP_GRP1_PERIPH_GPIOB
1197 * @arg @ref LL_IOP_GRP1_PERIPH_GPIOC
1198 * @arg @ref LL_IOP_GRP1_PERIPH_GPIOD
1199 * @arg @ref LL_IOP_GRP1_PERIPH_GPIOF
1200 * @retval None
1201 */
LL_IOP_GRP1_DisableClock(uint32_t Periphs)1202 __STATIC_INLINE void LL_IOP_GRP1_DisableClock(uint32_t Periphs)
1203 {
1204 CLEAR_BIT(RCC->IOPENR, Periphs);
1205 }
1206
1207 /**
1208 * @brief Disable IOP peripherals clock.
1209 * @rmtoll IOPRSTR GPIOARST LL_IOP_GRP1_ForceReset\n
1210 * IOPRSTR GPIOBRST LL_IOP_GRP1_ForceReset\n
1211 * IOPRSTR GPIOCRST LL_IOP_GRP1_ForceReset\n
1212 * IOPRSTR GPIODRST LL_IOP_GRP1_ForceReset\n
1213 * IOPRSTR GPIOFRST LL_IOP_GRP1_ForceReset
1214 * @param Periphs This parameter can be a combination of the following values:
1215 * @arg @ref LL_IOP_GRP1_PERIPH_ALL
1216 * @arg @ref LL_IOP_GRP1_PERIPH_GPIOA
1217 * @arg @ref LL_IOP_GRP1_PERIPH_GPIOB
1218 * @arg @ref LL_IOP_GRP1_PERIPH_GPIOC
1219 * @arg @ref LL_IOP_GRP1_PERIPH_GPIOD
1220 * @arg @ref LL_IOP_GRP1_PERIPH_GPIOF
1221 * @retval None
1222 */
LL_IOP_GRP1_ForceReset(uint32_t Periphs)1223 __STATIC_INLINE void LL_IOP_GRP1_ForceReset(uint32_t Periphs)
1224 {
1225 SET_BIT(RCC->IOPRSTR, Periphs);
1226 }
1227
1228 /**
1229 * @brief Release IOP peripherals reset.
1230 * @rmtoll IOPRSTR GPIOARST LL_IOP_GRP1_ReleaseReset\n
1231 * IOPRSTR GPIOBRST LL_IOP_GRP1_ReleaseReset\n
1232 * IOPRSTR GPIOCRST LL_IOP_GRP1_ReleaseReset\n
1233 * IOPRSTR GPIODRST LL_IOP_GRP1_ReleaseReset\n
1234 * IOPRSTR GPIOFRST LL_IOP_GRP1_ReleaseReset
1235 * @param Periphs This parameter can be a combination of the following values:
1236 * @arg @ref LL_IOP_GRP1_PERIPH_ALL
1237 * @arg @ref LL_IOP_GRP1_PERIPH_GPIOA
1238 * @arg @ref LL_IOP_GRP1_PERIPH_GPIOB
1239 * @arg @ref LL_IOP_GRP1_PERIPH_GPIOC
1240 * @arg @ref LL_IOP_GRP1_PERIPH_GPIOD
1241 * @arg @ref LL_IOP_GRP1_PERIPH_GPIOF
1242 * @retval None
1243 */
LL_IOP_GRP1_ReleaseReset(uint32_t Periphs)1244 __STATIC_INLINE void LL_IOP_GRP1_ReleaseReset(uint32_t Periphs)
1245 {
1246 CLEAR_BIT(RCC->IOPRSTR, Periphs);
1247 }
1248
1249 /**
1250 * @brief Enable IOP peripheral clocks in Sleep and Stop modes
1251 * @rmtoll IOPSMENR GPIOASMEN LL_IOP_GRP1_EnableClockStopSleep\n
1252 * IOPSMENR GPIOBSMEN LL_IOP_GRP1_EnableClockStopSleep\n
1253 * IOPSMENR GPIOCSMEN LL_IOP_GRP1_EnableClockStopSleep\n
1254 * IOPSMENR GPIODSMEN LL_IOP_GRP1_EnableClockStopSleep\n
1255 * IOPSMENR GPIOFSMEN LL_IOP_GRP1_EnableClockStopSleep
1256 * @param Periphs This parameter can be a combination of the following values:
1257 * @arg @ref LL_IOP_GRP1_PERIPH_GPIOA
1258 * @arg @ref LL_IOP_GRP1_PERIPH_GPIOB
1259 * @arg @ref LL_IOP_GRP1_PERIPH_GPIOC
1260 * @arg @ref LL_IOP_GRP1_PERIPH_GPIOD
1261 * @arg @ref LL_IOP_GRP1_PERIPH_GPIOF
1262 * @retval None
1263 */
LL_IOP_GRP1_EnableClockStopSleep(uint32_t Periphs)1264 __STATIC_INLINE void LL_IOP_GRP1_EnableClockStopSleep(uint32_t Periphs)
1265 {
1266 __IO uint32_t tmpreg;
1267 SET_BIT(RCC->IOPSMENR, Periphs);
1268 /* Delay after an RCC peripheral clock enabling */
1269 tmpreg = READ_BIT(RCC->IOPSMENR, Periphs);
1270 (void)tmpreg;
1271 }
1272
1273 /**
1274 * @brief Disable IOP peripheral clocks in Sleep and Stop modes
1275 * @rmtoll IOPSMENR GPIOASMEN LL_IOP_GRP1_DisableClockStopSleep\n
1276 * IOPSMENR GPIOBSMEN LL_IOP_GRP1_DisableClockStopSleep\n
1277 * IOPSMENR GPIOCSMEN LL_IOP_GRP1_DisableClockStopSleep\n
1278 * IOPSMENR GPIODSMEN LL_IOP_GRP1_DisableClockStopSleep\n
1279 * IOPSMENR GPIOFSMEN LL_IOP_GRP1_DisableClockStopSleep
1280 * @param Periphs This parameter can be a combination of the following values:
1281 * @arg @ref LL_IOP_GRP1_PERIPH_GPIOA
1282 * @arg @ref LL_IOP_GRP1_PERIPH_GPIOB
1283 * @arg @ref LL_IOP_GRP1_PERIPH_GPIOC
1284 * @arg @ref LL_IOP_GRP1_PERIPH_GPIOD
1285 * @arg @ref LL_IOP_GRP1_PERIPH_GPIOF
1286 * @retval None
1287 */
LL_IOP_GRP1_DisableClockStopSleep(uint32_t Periphs)1288 __STATIC_INLINE void LL_IOP_GRP1_DisableClockStopSleep(uint32_t Periphs)
1289 {
1290 CLEAR_BIT(RCC->IOPSMENR, Periphs);
1291 }
1292
1293 /**
1294 * @}
1295 */
1296
1297 /**
1298 * @}
1299 */
1300
1301 /**
1302 * @}
1303 */
1304
1305 #endif /* defined(RCC) */
1306
1307 /**
1308 * @}
1309 */
1310
1311 #ifdef __cplusplus
1312 }
1313 #endif
1314
1315 #endif /* __STM32U0xx_LL_BUS_H */
1316