1 /**
2   ******************************************************************************
3   * @file    stm32wbaxx_ll_bus.h
4   * @author  MCD Application Team
5   * @brief   Header file of BUS LL module.
6   ******************************************************************************
7   * @attention
8   *
9   * Copyright (c) 2022 STMicroelectronics.
10   * All rights reserved.
11   *
12   * This software is licensed under terms that can be found in the LICENSE file
13   * in the root directory of this software component.
14   * If no LICENSE file comes with this software, it is provided AS-IS.
15   *
16   ******************************************************************************
17   @verbatim
18   ==============================================================================
19                       ##### RCC Limitations #####
20   ==============================================================================
21     [..]
22       A delay between an RCC peripheral clock enable and the effective peripheral
23       enabling should be taken into account in order to manage the peripheral read/write
24       from/to registers.
25       (+) This delay depends on the peripheral mapping.
26         (++) AHB , APB peripherals,  1 dummy read is necessary
27 
28     [..]
29       Workarounds:
30       (#) For AHB , APB peripherals, a dummy read to the peripheral register has been
31           inserted in each LL_{BUS}_GRP{x}_EnableClock() function.
32 
33   @endverbatim
34   ******************************************************************************
35   */
36 
37 /* Define to prevent recursive inclusion -------------------------------------*/
38 #ifndef STM32WBAxx_LL_BUS_H
39 #define STM32WBAxx_LL_BUS_H
40 
41 #ifdef __cplusplus
42 extern "C" {
43 #endif
44 
45 /* Includes ------------------------------------------------------------------*/
46 #include "stm32wbaxx.h"
47 
48 /** @addtogroup STM32WBAxx_LL_Driver
49   * @{
50   */
51 
52 #if defined(RCC)
53 
54 /** @defgroup BUS_LL BUS
55   * @{
56   */
57 
58 /* Private types -------------------------------------------------------------*/
59 /* Private variables ---------------------------------------------------------*/
60 /* Private constants ---------------------------------------------------------*/
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_GPDMA1        RCC_AHB1ENR_GPDMA1EN
74 #define LL_AHB1_GRP1_PERIPH_FLASH         RCC_AHB1ENR_FLASHEN
75 #define LL_AHB1_GRP1_PERIPH_CRC           RCC_AHB1ENR_CRCEN
76 #define LL_AHB1_GRP1_PERIPH_TSC           RCC_AHB1ENR_TSCEN
77 #define LL_AHB1_GRP1_PERIPH_RAMCFG        RCC_AHB1ENR_RAMCFGEN
78 #if defined(GTZC_TZSC)
79 #define LL_AHB1_GRP1_PERIPH_GTZC1         RCC_AHB1ENR_GTZC1EN
80 #endif /* GTZC_TZSC */
81 #define LL_AHB1_GRP1_PERIPH_SRAM1         RCC_AHB1ENR_SRAM1EN
82 /**
83   * @}
84   */
85 
86 /** @defgroup BUS_LL_EC_AHB2_GRP1_PERIPH  AHB2 GRP1 PERIPH
87   * @{
88   */
89 #define LL_AHB2_GRP1_PERIPH_ALL            0xFFFFFFFFU
90 #define LL_AHB2_GRP1_PERIPH_GPIOA          RCC_AHB2ENR_GPIOAEN
91 #define LL_AHB2_GRP1_PERIPH_GPIOB          RCC_AHB2ENR_GPIOBEN
92 #define LL_AHB2_GRP1_PERIPH_GPIOC          RCC_AHB2ENR_GPIOCEN
93 #define LL_AHB2_GRP1_PERIPH_GPIOH          RCC_AHB2ENR_GPIOHEN
94 #define LL_AHB2_GRP1_PERIPH_AES            RCC_AHB2ENR_AESEN
95 #define LL_AHB2_GRP1_PERIPH_HASH           RCC_AHB2ENR_HASHEN
96 #define LL_AHB2_GRP1_PERIPH_RNG            RCC_AHB2ENR_RNGEN
97 #if defined(SAES)
98 #define LL_AHB2_GRP1_PERIPH_SAES           RCC_AHB2ENR_SAESEN
99 #endif /* SAES */
100 #define LL_AHB2_GRP1_PERIPH_HSEM           RCC_AHB2ENR_HSEMEN
101 #define LL_AHB2_GRP1_PERIPH_PKA            RCC_AHB2ENR_PKAEN
102 #define LL_AHB2_GRP1_PERIPH_SRAM2          RCC_AHB2ENR_SRAM2EN
103 /**
104   * @}
105   */
106 
107 /** @defgroup BUS_LL_EC_AHB4_GRP1_PERIPH  AHB4 GRP1 PERIPH
108   * @{
109   */
110 #define LL_AHB4_GRP1_PERIPH_ALL            0xFFFFFFFFU
111 #define LL_AHB4_GRP1_PERIPH_PWR            RCC_AHB4ENR_PWREN
112 #define LL_AHB4_GRP1_PERIPH_ADC4           RCC_AHB4ENR_ADC4EN
113 /**
114   * @}
115   */
116 
117 /** @defgroup BUS_LL_EC_AHB5_GRP1_PERIPH  AHB5 GRP1 PERIPH
118   * @{
119   */
120 #define LL_AHB5_GRP1_PERIPH_ALL            0xFFFFFFFFU
121 #if defined(PTACONV)
122 #define LL_AHB5_GRP1_PERIPH_PTACONV        RCC_AHB5ENR_PTACONVEN
123 #endif /* PTACONV */
124 #define LL_AHB5_GRP1_PERIPH_RADIO          RCC_AHB5ENR_RADIOEN
125 /**
126   * @}
127   */
128 
129 /** @defgroup BUS_LL_EC_APB1_GRP1_PERIPH  APB1 GRP1 PERIPH
130   * @{
131   */
132 #define LL_APB1_GRP1_PERIPH_ALL           0xFFFFFFFFU
133 #define LL_APB1_GRP1_PERIPH_TIM2          RCC_APB1ENR1_TIM2EN
134 #if defined(TIM3)
135 #define LL_APB1_GRP1_PERIPH_TIM3          RCC_APB1ENR1_TIM3EN
136 #endif /* TIM3 */
137 #if defined(WWDG)
138 #define LL_APB1_GRP1_PERIPH_WWDG          RCC_APB1ENR1_WWDGEN
139 #endif /* WWDG */
140 #define LL_APB1_GRP1_PERIPH_USART2        RCC_APB1ENR1_USART2EN
141 #if defined(I2C1)
142 #define LL_APB1_GRP1_PERIPH_I2C1          RCC_APB1ENR1_I2C1EN
143 #endif /* I2C1 */
144 /**
145   * @}
146   */
147 
148 
149 /** @defgroup BUS_LL_EC_APB1_GRP2_PERIPH  APB1 GRP2 PERIPH
150   * @{
151   */
152 #define LL_APB1_GRP2_PERIPH_ALL            0xFFFFFFFFU
153 #if defined(LPTIM2)
154 #define LL_APB1_GRP2_PERIPH_LPTIM2         RCC_APB1ENR2_LPTIM2EN
155 #endif /* LPTIM2 */
156 /**
157   * @}
158   */
159 
160 /** @defgroup BUS_LL_EC_APB2_GRP1_PERIPH  APB2 GRP1 PERIPH
161   * @{
162   */
163 #define LL_APB2_GRP1_PERIPH_ALL            0xFFFFFFFFU
164 #if defined(TIM1)
165 #define LL_APB2_GRP1_PERIPH_TIM1           RCC_APB2ENR_TIM1EN
166 #endif /* TIM1 */
167 #if defined(SPI1)
168 #define LL_APB2_GRP1_PERIPH_SPI1           RCC_APB2ENR_SPI1EN
169 #endif /* SPI1 */
170 #define LL_APB2_GRP1_PERIPH_USART1         RCC_APB2ENR_USART1EN
171 #define LL_APB2_GRP1_PERIPH_TIM16          RCC_APB2ENR_TIM16EN
172 #if defined(TIM17)
173 #define LL_APB2_GRP1_PERIPH_TIM17          RCC_APB2ENR_TIM17EN
174 #endif /* TIM17 */
175 #if defined(SAI1)
176 #define LL_APB2_GRP1_PERIPH_SAI1           RCC_APB2ENR_SAI1EN
177 #endif /* SAI1 */
178 /**
179   * @}
180   */
181 
182 /** @defgroup BUS_LL_EC_APB7_GRP1_PERIPH  APB7 GRP1 PERIPH
183   * @{
184   */
185 #define LL_APB7_GRP1_PERIPH_ALL           0xFFFFFFFFU
186 #define LL_APB7_GRP1_PERIPH_SYSCFG        RCC_APB7ENR_SYSCFGEN
187 #define LL_APB7_GRP1_PERIPH_SPI3          RCC_APB7ENR_SPI3EN
188 #define LL_APB7_GRP1_PERIPH_LPUART1       RCC_APB7ENR_LPUART1EN
189 #define LL_APB7_GRP1_PERIPH_I2C3          RCC_APB7ENR_I2C3EN
190 #define LL_APB7_GRP1_PERIPH_LPTIM1        RCC_APB7ENR_LPTIM1EN
191 #if defined(COMP1)
192 #define LL_APB7_GRP1_PERIPH_COMP          RCC_APB7ENR_COMPEN
193 #endif /* COMP1 */
194 #define LL_APB7_GRP1_PERIPH_RTCAPB        RCC_APB7ENR_RTCAPBEN
195 /**
196   * @}
197   */
198 
199 /**
200   * @}
201   */
202 
203 /* Exported macros -----------------------------------------------------------*/
204 /* Exported functions --------------------------------------------------------*/
205 /** @defgroup BUS_LL_Exported_Functions BUS Exported Functions
206   * @{
207   */
208 
209 /** @defgroup BUS_LL_EF_AHB1 AHB1
210   * @{
211   */
212 /**
213   * @brief  Enable AHB1 peripherals clock.
214   * @rmtoll AHB1ENR    GPDMA1EN     LL_AHB1_GRP1_EnableClock\n
215   *         AHB1ENR    FLASHEN      LL_AHB1_GRP1_EnableClock\n
216   *         AHB1ENR    CRCEN        LL_AHB1_GRP1_EnableClock\n
217   *         AHB1ENR    TSCEN        LL_AHB1_GRP1_EnableClock\n
218   *         AHB1ENR    RAMCFGEN     LL_AHB1_GRP1_EnableClock\n
219   *         AHB1ENR    GTZC1EN      LL_AHB1_GRP1_EnableClock\n
220   *         AHB1ENR    SRAM1EN      LL_AHB1_GRP1_EnableClock
221   * @param  Periphs This parameter can be a combination of the following values:
222   *         @arg @ref LL_AHB1_GRP1_PERIPH_ALL
223   *         @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
224   *         @arg @ref LL_AHB1_GRP1_PERIPH_GPDMA1 (*)
225   *         @arg @ref LL_AHB1_GRP1_PERIPH_CRC
226   *         @arg @ref LL_AHB1_GRP1_PERIPH_TSC (*)
227   *         @arg @ref LL_AHB1_GRP1_PERIPH_RAMCFG
228   *         @arg @ref LL_AHB1_GRP1_PERIPH_GTZC1 (*)
229   *         @arg @ref LL_AHB1_GRP1_PERIPH_SRAM1
230   *
231   *         (*) value not defined in all devices.
232   * @retval None
233   */
LL_AHB1_GRP1_EnableClock(uint32_t Periphs)234 __STATIC_INLINE void LL_AHB1_GRP1_EnableClock(uint32_t Periphs)
235 {
236   __IO uint32_t tmpreg;
237   SET_BIT(RCC->AHB1ENR, Periphs);
238   /* Delay after an RCC peripheral clock enabling */
239   tmpreg = READ_BIT(RCC->AHB1ENR, Periphs);
240   (void)tmpreg;
241 }
242 
243 /**
244   * @brief  Check if AHB1 peripheral clock is enabled or not
245   * @rmtoll        AHB1ENR    GPDMA1EN     LL_AHB1_GRP1_IsEnabledClock
246   *         AHB1ENR    FLASHEN      LL_AHB1_GRP1_IsEnabledClock\n
247   *         AHB1ENR    CRCEN        LL_AHB1_GRP1_IsEnabledClock\n
248   *         AHB1ENR    TSCEN        LL_AHB1_GRP1_IsEnabledClock\n
249   *         AHB1ENR    RAMCFGEN     LL_AHB1_GRP1_IsEnabledClock\n
250   *         AHB1ENR    GTZC1EN      LL_AHB1_GRP1_IsEnabledClock\n
251   *         AHB1ENR    SRAM1EN      LL_AHB1_GRP1_IsEnabledClock
252   * @param  Periphs This parameter can be a combination of the following values:
253   *         @arg @ref LL_AHB1_GRP1_PERIPH_ALL
254   *         @arg @ref LL_AHB1_GRP1_PERIPH_GPDMA1 (*)
255    *        @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
256   *         @arg @ref LL_AHB1_GRP1_PERIPH_CRC
257   *         @arg @ref LL_AHB1_GRP1_PERIPH_TSC (*)
258   *         @arg @ref LL_AHB1_GRP1_PERIPH_RAMCFG
259   *         @arg @ref LL_AHB1_GRP1_PERIPH_GTZC1 (*)
260   *         @arg @ref LL_AHB1_GRP1_PERIPH_SRAM1
261   *
262   *         (*) value not defined in all devices.
263   * @retval State of Periphs (1 or 0).
264   */
LL_AHB1_GRP1_IsEnabledClock(uint32_t Periphs)265 __STATIC_INLINE uint32_t LL_AHB1_GRP1_IsEnabledClock(uint32_t Periphs)
266 {
267   return ((READ_BIT(RCC->AHB1ENR, Periphs) == Periphs) ? 1UL : 0UL);
268 }
269 
270 /**
271   * @brief  Disable AHB1 peripherals clock.
272   * @rmtoll AHB1ENR    GPDMA1EN     LL_AHB1_GRP1_DisableClock
273   *         AHB1ENR    FLASHEN      LL_AHB1_GRP1_DisableClock\n
274   *         AHB1ENR    CRCEN        LL_AHB1_GRP1_DisableClock\n
275   *         AHB1ENR    TSCEN        LL_AHB1_GRP1_DisableClock\n
276   *         AHB1ENR    RAMCFGEN     LL_AHB1_GRP1_DisableClock\n
277   *         AHB1ENR    GTZC1EN      LL_AHB1_GRP1_DisableClock\n
278   *         AHB1ENR    SRAM1EN      LL_AHB1_GRP1_DisableClock
279   * @param  Periphs This parameter can be a combination of the following values:
280   *         @arg @ref LL_AHB1_GRP1_PERIPH_ALL
281    *        @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
282   *         @arg @ref LL_AHB1_GRP1_PERIPH_GPDMA1 (*)
283   *         @arg @ref LL_AHB1_GRP1_PERIPH_CRC
284   *         @arg @ref LL_AHB1_GRP1_PERIPH_TSC (*)
285   *         @arg @ref LL_AHB1_GRP1_PERIPH_RAMCFG
286   *         @arg @ref LL_AHB1_GRP1_PERIPH_GTZC1 (*)
287   *         @arg @ref LL_AHB1_GRP1_PERIPH_SRAM1
288   *
289   *         (*) value not defined in all devices.
290   * @retval None
291   */
LL_AHB1_GRP1_DisableClock(uint32_t Periphs)292 __STATIC_INLINE void LL_AHB1_GRP1_DisableClock(uint32_t Periphs)
293 {
294   CLEAR_BIT(RCC->AHB1ENR, Periphs);
295 }
296 
297 /**
298   * @brief  Force AHB1 peripherals reset.
299   * @rmtoll AHB1RSTR    GPDMA1RSTR     LL_AHB1_GRP1_ForceReset\n
300   *         AHB1RSTR    CRCRSTR        LL_AHB1_GRP1_ForceReset\n
301   *         AHB1RSTR    TSCRSTR        LL_AHB1_GRP1_ForceReset\n
302   *         AHB1RSTR    RAMCFGRSTR     LL_AHB1_GRP1_ForceReset
303   * @param  Periphs This parameter can be a combination of the following values:
304   *         @arg @ref LL_AHB1_GRP1_PERIPH_ALL
305   *         @arg @ref LL_AHB1_GRP1_PERIPH_GPDMA1 (*)
306   *         @arg @ref LL_AHB1_GRP1_PERIPH_CRC
307   *         @arg @ref LL_AHB1_GRP1_PERIPH_CRC
308   *         @arg @ref LL_AHB1_GRP1_PERIPH_TSC (*)
309   *         @arg @ref LL_AHB1_GRP1_PERIPH_RAMCFG
310   * @retval None
311   */
LL_AHB1_GRP1_ForceReset(uint32_t Periphs)312 __STATIC_INLINE void LL_AHB1_GRP1_ForceReset(uint32_t Periphs)
313 {
314   SET_BIT(RCC->AHB1RSTR, Periphs);
315 }
316 
317 /**
318   * @brief  Release AHB1 peripherals reset.
319   * @rmtoll AHB1RSTR    GPDMA1RSTR      LL_AHB1_GRP1_ReleaseReset\n
320   *         AHB1RSTR    CRCRSTR         LL_AHB1_GRP1_ReleaseReset\n
321   *         AHB1RSTR    TSCRSTR         LL_AHB1_GRP1_ReleaseReset\n
322   *         AHB1RSTR    RAMCFGRSTR      LL_AHB1_GRP1_ReleaseReset\n
323   * @param  Periphs This parameter can be a combination of the following values:
324   *         @arg @ref LL_AHB1_GRP1_PERIPH_ALL
325   *         @arg @ref LL_AHB1_GRP1_PERIPH_GPDMA1 (*)
326   *         @arg @ref LL_AHB1_GRP1_PERIPH_CRC
327   *         @arg @ref LL_AHB1_GRP1_PERIPH_CRC
328   *         @arg @ref LL_AHB1_GRP1_PERIPH_TSC (*)
329   *         @arg @ref LL_AHB1_GRP1_PERIPH_RAMCFG
330   * @retval None
331   */
LL_AHB1_GRP1_ReleaseReset(uint32_t Periphs)332 __STATIC_INLINE void LL_AHB1_GRP1_ReleaseReset(uint32_t Periphs)
333 {
334   CLEAR_BIT(RCC->AHB1RSTR, Periphs);
335 }
336 
337 /**
338   * @brief  Enable AHB1 peripheral clocks in Sleep and Stop modes
339   * @rmtoll AHB1SMENR   GPDMA1SMEN     LL_AHB1_GRP1_EnableClockStopSleep\n
340   *         AHB1SMENR   FLASHSMEN      LL_AHB1_GRP1_EnableClockStopSleep\n
341   *         AHB1SMENR   CRCSMEN        LL_AHB1_GRP1_EnableClockStopSleep\n
342   *         AHB1SMENR   TSCSMEN        LL_AHB1_GRP1_EnableClockStopSleep\n
343   *         AHB1SMENR   RAMCFGSMEN     LL_AHB1_GRP1_EnableClockStopSleep\n
344   *         AHB1SMENR   GTZC1SMEN      LL_AHB1_GRP1_EnableClockStopSleep\n
345   *         AHB1SMENR   SRAM1SMEN      LL_AHB1_GRP1_EnableClockStopSleep
346   * @param  Periphs This parameter can be a combination of the following values:
347   *         @arg @ref LL_AHB1_GRP1_PERIPH_ALL
348   *         @arg @ref LL_AHB1_GRP1_PERIPH_GPDMA1 (*)
349   *         @arg @ref LL_AHB1_GRP1_PERIPH_CRC
350   *         @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
351   *         @arg @ref LL_AHB1_GRP1_PERIPH_CRC
352   *         @arg @ref LL_AHB1_GRP1_PERIPH_TSC (*)
353   *         @arg @ref LL_AHB1_GRP1_PERIPH_RAMCFG
354   *         @arg @ref LL_AHB1_GRP1_PERIPH_GTZC1 (*)
355   *         @arg @ref LL_AHB1_GRP1_PERIPH_SRAM1
356   *
357   *         (*) value not defined in all devices.
358   * @retval None
359   */
LL_AHB1_GRP1_EnableClockStopSleep(uint32_t Periphs)360 __STATIC_INLINE void LL_AHB1_GRP1_EnableClockStopSleep(uint32_t Periphs)
361 {
362   __IO uint32_t tmpreg;
363   SET_BIT(RCC->AHB1SMENR, Periphs);
364   /* Delay after an RCC peripheral clock enabling */
365   tmpreg = READ_BIT(RCC->AHB1SMENR, Periphs);
366   (void)tmpreg;
367 }
368 
369 /**
370   * @brief  Check if AHB1 peripheral clocks in Sleep and Stop modes is enabled or not
371   * @rmtoll AHB1SMENR   GPDMA1SMEN     LL_AHB1_GRP1_IsEnabledClockStopSleep\n
372   *         AHB1SMENR   FLASHSMEN      LL_AHB1_GRP1_IsEnabledClockStopSleep\n
373   *         AHB1SMENR   CRCSMEN        LL_AHB1_GRP1_IsEnabledClockStopSleep\n
374   *         AHB1SMENR   TSCSMEN        LL_AHB1_GRP1_IsEnabledClockStopSleep\n
375   *         AHB1SMENR   RAMCFGSMEN     LL_AHB1_GRP1_IsEnabledClockStopSleep\n
376   *         AHB1SMENR   GTZC1SMEN      LL_AHB1_GRP1_IsEnabledClockStopSleep\n
377   *         AHB1SMENR   SRAM1SMEN      LL_AHB1_GRP1_IsEnabledClockStopSleep
378   * @param  Periphs This parameter can be a combination of the following values:
379   *         @arg @ref LL_AHB1_GRP1_PERIPH_ALL
380   *         @arg @ref LL_AHB1_GRP1_PERIPH_GPDMA1 (*)
381   *         @arg @ref LL_AHB1_GRP1_PERIPH_CRC
382   *         @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
383   *         @arg @ref LL_AHB1_GRP1_PERIPH_CRC
384   *         @arg @ref LL_AHB1_GRP1_PERIPH_TSC (*)
385   *         @arg @ref LL_AHB1_GRP1_PERIPH_RAMCFG
386   *         @arg @ref LL_AHB1_GRP1_PERIPH_GTZC1 (*)
387   *         @arg @ref LL_AHB1_GRP1_PERIPH_SRAM1
388   *
389   *         (*) value not defined in all devices.
390   * @retval State of Periphs (1 or 0).
391   */
LL_AHB1_GRP1_IsEnabledClockStopSleep(uint32_t Periphs)392 __STATIC_INLINE uint32_t LL_AHB1_GRP1_IsEnabledClockStopSleep(uint32_t Periphs)
393 {
394   return ((READ_BIT(RCC->AHB1SMENR, Periphs) == Periphs) ? 1UL : 0UL);
395 }
396 
397 /**
398   * @brief  Disable AHB1 peripheral clocks in Sleep and Stop modes
399   * @rmtoll AHB1SMENR   GPDMA1SMEN     LL_AHB1_GRP1_DisableClockStopSleep\n
400   *         AHB1SMENR   FLASHSMEN      LL_AHB1_GRP1_DisableClockStopSleep\n
401   *         AHB1SMENR   CRCSMEN        LL_AHB1_GRP1_DisableClockStopSleep\n
402   *         AHB1SMENR   TSCSMEN        LL_AHB1_GRP1_DisableClockStopSleep\n
403   *         AHB1SMENR   RAMCFGSMEN     LL_AHB1_GRP1_DisableClockStopSleep\n
404   *         AHB1SMENR   GTZC1SMEN      LL_AHB1_GRP1_DisableClockStopSleep\n
405   *         AHB1SMENR   SRAM1SMEN      LL_AHB1_GRP1_DisableClockStopSleep
406   * @param  Periphs This parameter can be a combination of the following values:
407   *         @arg @ref LL_AHB1_GRP1_PERIPH_ALL
408   *         @arg @ref LL_AHB1_GRP1_PERIPH_GPDMA1 (*)
409   *         @arg @ref LL_AHB1_GRP1_PERIPH_CRC
410   *         @arg @ref LL_AHB1_GRP1_PERIPH_FLASH
411   *         @arg @ref LL_AHB1_GRP1_PERIPH_CRC
412   *         @arg @ref LL_AHB1_GRP1_PERIPH_TSC (*)
413   *         @arg @ref LL_AHB1_GRP1_PERIPH_RAMCFG
414   *         @arg @ref LL_AHB1_GRP1_PERIPH_GTZC1 (*)
415   *         @arg @ref LL_AHB1_GRP1_PERIPH_SRAM1
416   *
417   *         (*) value not defined in all devices.
418   * @retval None
419   */
LL_AHB1_GRP1_DisableClockStopSleep(uint32_t Periphs)420 __STATIC_INLINE void LL_AHB1_GRP1_DisableClockStopSleep(uint32_t Periphs)
421 {
422   CLEAR_BIT(RCC->AHB1SMENR, Periphs);
423 }
424 
425 /**
426   * @}
427   */
428 
429 /** @defgroup BUS_LL_EF_AHB2_GRP1_PERIPH AHB2 GRP1 PERIPH
430   * @{
431   */
432 /**
433   * @brief  Enable AHB2 peripherals clock.
434   * @rmtoll AHB2ENR      GPIOAEN       LL_AHB2_GRP1_EnableClock\n
435   *         AHB2ENR      GPIOBEN       LL_AHB2_GRP1_EnableClock\n
436   *         AHB2ENR      GPIOCEN       LL_AHB2_GRP1_EnableClock\n
437   *         AHB2ENR      GPIOHEN       LL_AHB2_GRP1_EnableClock\n
438   *         AHB2ENR      AESEN         LL_AHB2_GRP1_EnableClock\n
439   *         AHB2ENR      HASHEN        LL_AHB2_GRP1_EnableClock\n
440   *         AHB2ENR      RNGEN         LL_AHB2_GRP1_EnableClock\n
441   *         AHB2ENR      SAESEN        LL_AHB2_GRP1_EnableClock\n
442   *         AHB2ENR      HSEMEN        LL_AHB2_GRP1_EnableClock\n
443   *         AHB2ENR      PKAEN         LL_AHB2_GRP1_EnableClock\n
444   *         AHB2ENR      SRAM2EN       LL_AHB2_GRP1_EnableClock
445   * @param  Periphs This parameter can be a combination of the following values:
446   *         @arg @ref LL_AHB2_GRP1_PERIPH_ALL
447   *         @arg @ref LL_AHB2_GRP1_PERIPH_GPIOA
448   *         @arg @ref LL_AHB2_GRP1_PERIPH_GPIOB
449   *         @arg @ref LL_AHB2_GRP1_PERIPH_GPIOC
450   *         @arg @ref LL_AHB2_GRP1_PERIPH_GPIOH
451   *         @arg @ref LL_AHB2_GRP1_PERIPH_AES
452   *         @arg @ref LL_AHB2_GRP1_PERIPH_HASH
453   *         @arg @ref LL_AHB2_GRP1_PERIPH_RNG
454   *         @arg @ref LL_AHB2_GRP1_PERIPH_SAES (*)
455   *         @arg @ref LL_AHB2_GRP1_PERIPH_HSEM
456   *         @arg @ref LL_AHB2_GRP1_PERIPH_PKA
457   *         @arg @ref LL_AHB2_GRP1_PERIPH_SRAM2
458   *
459   *         (*) value not defined in all devices.
460   * @retval None
461   */
LL_AHB2_GRP1_EnableClock(uint32_t Periphs)462 __STATIC_INLINE void LL_AHB2_GRP1_EnableClock(uint32_t Periphs)
463 {
464   __IO uint32_t tmpreg;
465   SET_BIT(RCC->AHB2ENR, Periphs);
466   /* Delay after an RCC peripheral clock enabling */
467   tmpreg = READ_BIT(RCC->AHB2ENR, Periphs);
468   (void)tmpreg;
469 }
470 
471 /**
472   * @brief  Check if AHB2 peripheral clock is enabled or not
473   * @rmtoll AHB2ENR      GPIOAEN       LL_AHB2_GRP1_IsEnabledClock\n
474   *         AHB2ENR      GPIOBEN       LL_AHB2_GRP1_IsEnabledClock\n
475   *         AHB2ENR      GPIOCEN       LL_AHB2_GRP1_IsEnabledClock\n
476   *         AHB2ENR      GPIOHEN       LL_AHB2_GRP1_IsEnabledClock\n
477   *         AHB2ENR      AESEN         LL_AHB2_GRP1_IsEnabledClock\n
478   *         AHB2ENR      HASHEN        LL_AHB2_GRP1_IsEnabledClock\n
479   *         AHB2ENR      RNGEN         LL_AHB2_GRP1_IsEnabledClock\n
480   *         AHB2ENR      SAESEN        LL_AHB2_GRP1_IsEnabledClock\n
481   *         AHB2ENR      HSEMEN        LL_AHB2_GRP1_IsEnabledClock\n
482   *         AHB2ENR      PKAEN         LL_AHB2_GRP1_IsEnabledClock\n
483   *         AHB2ENR      SRAM2EN       LL_AHB2_GRP1_IsEnabledClock
484   * @param  Periphs This parameter can be a combination of the following values:
485   *         @arg @ref LL_AHB2_GRP1_PERIPH_ALL
486   *         @arg @ref LL_AHB2_GRP1_PERIPH_GPIOA
487   *         @arg @ref LL_AHB2_GRP1_PERIPH_GPIOB
488   *         @arg @ref LL_AHB2_GRP1_PERIPH_GPIOC
489   *         @arg @ref LL_AHB2_GRP1_PERIPH_GPIOH
490   *         @arg @ref LL_AHB2_GRP1_PERIPH_AES
491   *         @arg @ref LL_AHB2_GRP1_PERIPH_HASH
492   *         @arg @ref LL_AHB2_GRP1_PERIPH_RNG
493   *         @arg @ref LL_AHB2_GRP1_PERIPH_SAES (*)
494   *         @arg @ref LL_AHB2_GRP1_PERIPH_HSEM
495   *         @arg @ref LL_AHB2_GRP1_PERIPH_PKA
496   *         @arg @ref LL_AHB2_GRP1_PERIPH_SRAM2
497   *
498   *         (*) value not defined in all devices.
499   * @retval State of Periphs (1 or 0).
500   */
LL_AHB2_GRP1_IsEnabledClock(uint32_t Periphs)501 __STATIC_INLINE uint32_t LL_AHB2_GRP1_IsEnabledClock(uint32_t Periphs)
502 {
503   return ((READ_BIT(RCC->AHB2ENR, Periphs) == Periphs) ? 1UL : 0UL);
504 }
505 
506 /**
507   * @brief  Disable AHB2 peripherals clock.
508   * @rmtoll AHB2ENR      GPIOAEN       LL_AHB2_GRP1_DisableClock\n
509   *         AHB2ENR      GPIOBEN       LL_AHB2_GRP1_DisableClock\n
510   *         AHB2ENR      GPIOCEN       LL_AHB2_GRP1_DisableClock\n
511   *         AHB2ENR      GPIOHEN       LL_AHB2_GRP1_DisableClock\n
512   *         AHB2ENR      AESEN         LL_AHB2_GRP1_DisableClock\n
513   *         AHB2ENR      HASHEN        LL_AHB2_GRP1_DisableClock\n
514   *         AHB2ENR      RNGEN         LL_AHB2_GRP1_DisableClock\n
515   *         AHB2ENR      SAESEN        LL_AHB2_GRP1_DisableClock\n
516   *         AHB2ENR      HSEMEN        LL_AHB2_GRP1_DisableClock\n
517   *         AHB2ENR      PKAEN         LL_AHB2_GRP1_DisableClock\n
518   *         AHB2ENR      SRAM2EN       LL_AHB2_GRP1_DisableClock
519   * @param  Periphs This parameter can be a combination of the following values:
520   *         @arg @ref LL_AHB2_GRP1_PERIPH_ALL
521   *         @arg @ref LL_AHB2_GRP1_PERIPH_GPIOA
522   *         @arg @ref LL_AHB2_GRP1_PERIPH_GPIOB
523   *         @arg @ref LL_AHB2_GRP1_PERIPH_GPIOC
524   *         @arg @ref LL_AHB2_GRP1_PERIPH_GPIOH
525   *         @arg @ref LL_AHB2_GRP1_PERIPH_AES
526   *         @arg @ref LL_AHB2_GRP1_PERIPH_HASH
527   *         @arg @ref LL_AHB2_GRP1_PERIPH_RNG
528   *         @arg @ref LL_AHB2_GRP1_PERIPH_SAES (*)
529   *         @arg @ref LL_AHB2_GRP1_PERIPH_HSEM
530   *         @arg @ref LL_AHB2_GRP1_PERIPH_PKA
531   *         @arg @ref LL_AHB2_GRP1_PERIPH_SRAM2
532   *
533   *         (*) value not defined in all devices.
534   * @retval None
535   */
LL_AHB2_GRP1_DisableClock(uint32_t Periphs)536 __STATIC_INLINE void LL_AHB2_GRP1_DisableClock(uint32_t Periphs)
537 {
538   CLEAR_BIT(RCC->AHB2ENR, Periphs);
539 }
540 
541 /**
542   * @brief  Force AHB2 peripherals reset.
543   * @rmtoll AHB2RSTR     GPIOARST      LL_AHB2_GRP1_ForceReset\n
544   *         AHB2RSTR     GPIOBRST      LL_AHB2_GRP1_ForceReset\n
545   *         AHB2RSTR     GPIOCRST      LL_AHB2_GRP1_ForceReset\n
546   *         AHB2RSTR     GPIOHRST      LL_AHB2_GRP1_ForceReset\n
547   *         AHB2RSTR     AESRST        LL_AHB2_GRP1_ForceReset\n
548   *         AHB2RSTR     HASHRST       LL_AHB2_GRP1_ForceReset\n
549   *         AHB2RSTR     RNGRST        LL_AHB2_GRP1_ForceReset\n
550   *         AHB2RSTR     SAESRST       LL_AHB2_GRP1_ForceReset\n
551   *         AHB2RSTR     HSEMRST       LL_AHB2_GRP1_ForceReset\n
552   *         AHB2RSTR     PKARST        LL_AHB2_GRP1_ForceReset
553   * @param  Periphs This parameter can be a combination of the following values:
554   *         @arg @ref LL_AHB2_GRP1_PERIPH_ALL
555   *         @arg @ref LL_AHB2_GRP1_PERIPH_GPIOA
556   *         @arg @ref LL_AHB2_GRP1_PERIPH_GPIOB
557   *         @arg @ref LL_AHB2_GRP1_PERIPH_GPIOC
558   *         @arg @ref LL_AHB2_GRP1_PERIPH_GPIOH
559   *         @arg @ref LL_AHB2_GRP1_PERIPH_AES
560   *         @arg @ref LL_AHB2_GRP1_PERIPH_HASH
561   *         @arg @ref LL_AHB2_GRP1_PERIPH_RNG
562   *         @arg @ref LL_AHB2_GRP1_PERIPH_SAES (*)
563   *         @arg @ref LL_AHB2_GRP1_PERIPH_HSEM
564   *         @arg @ref LL_AHB2_GRP1_PERIPH_PKA
565   *
566   *         (*) value not defined in all devices.
567   * @retval None
568   */
LL_AHB2_GRP1_ForceReset(uint32_t Periphs)569 __STATIC_INLINE void LL_AHB2_GRP1_ForceReset(uint32_t Periphs)
570 {
571   SET_BIT(RCC->AHB2RSTR, Periphs);
572 }
573 
574 /**
575   * @brief  Release AHB2 peripherals reset.
576   * @rmtoll AHB2RSTR     GPIOARST      LL_AHB2_GRP1_ReleaseReset\n
577   *         AHB2RSTR     GPIOBRST      LL_AHB2_GRP1_ReleaseReset\n
578   *         AHB2RSTR     GPIOCRST      LL_AHB2_GRP1_ReleaseReset\n
579   *         AHB2RSTR     GPIOHRST      LL_AHB2_GRP1_ReleaseReset\n
580   *         AHB2RSTR     AESRST        LL_AHB2_GRP1_ReleaseReset\n
581   *         AHB2RSTR     HASHRST       LL_AHB2_GRP1_ReleaseReset\n
582   *         AHB2RSTR     RNGRST        LL_AHB2_GRP1_ReleaseReset\n
583   *         AHB2RSTR     SAESRST       LL_AHB2_GRP1_ReleaseReset\n
584   *         AHB2RSTR     HSEMRST       LL_AHB2_GRP1_ReleaseReset\n
585   *         AHB2RSTR     PKARST        LL_AHB2_GRP1_ReleaseReset\n
586   *         AHB2RSTR     SRAM1RST      LL_AHB2_GRP1_ReleaseReset
587   * @param  Periphs This parameter can be a combination of the following values:
588   *         @arg @ref LL_AHB2_GRP1_PERIPH_ALL
589   *         @arg @ref LL_AHB2_GRP1_PERIPH_GPIOA
590   *         @arg @ref LL_AHB2_GRP1_PERIPH_GPIOB
591   *         @arg @ref LL_AHB2_GRP1_PERIPH_GPIOC
592   *         @arg @ref LL_AHB2_GRP1_PERIPH_GPIOH
593   *         @arg @ref LL_AHB2_GRP1_PERIPH_AES
594   *         @arg @ref LL_AHB2_GRP1_PERIPH_HASH
595   *         @arg @ref LL_AHB2_GRP1_PERIPH_RNG
596   *         @arg @ref LL_AHB2_GRP1_PERIPH_SAES (*)
597   *         @arg @ref LL_AHB2_GRP1_PERIPH_HSEM
598   *         @arg @ref LL_AHB2_GRP1_PERIPH_PKA
599   *
600   *         (*) value not defined in all devices.
601   * @retval None
602   */
LL_AHB2_GRP1_ReleaseReset(uint32_t Periphs)603 __STATIC_INLINE void LL_AHB2_GRP1_ReleaseReset(uint32_t Periphs)
604 {
605   CLEAR_BIT(RCC->AHB2RSTR, Periphs);
606 }
607 
608 /**
609   * @brief  Enable AHB2 peripheral clocks in Sleep and Stop modes
610   * @rmtoll AHB2SMENR    GPIOASMEN      LL_AHB2_GRP1_EnableClockStopSleep\n
611   *         AHB2SMENR    GPIOBSMEN      LL_AHB2_GRP1_EnableClockStopSleep\n
612   *         AHB2SMENR    GPIOCSMEN      LL_AHB2_GRP1_EnableClockStopSleep\n
613   *         AHB2SMENR    GPIOHSMEN      LL_AHB2_GRP1_EnableClockStopSleep\n
614   *         AHB2SMENR    AESSMEN        LL_AHB2_GRP1_EnableClockStopSleep\n
615   *         AHB2SMENR    HASHSMEN       LL_AHB2_GRP1_EnableClockStopSleep\n
616   *         AHB2SMENR    RNGSMEN        LL_AHB2_GRP1_EnableClockStopSleep\n
617   *         AHB2SMENR    SAESSMEN       LL_AHB2_GRP1_EnableClockStopSleep\n
618   *         AHB2SMENR    PKASMEN        LL_AHB2_GRP1_EnableClockStopSleep\n
619   *         AHB2SMENR    SRAM2SMEN      LL_AHB2_GRP1_EnableClockStopSleep
620   * @param  Periphs This parameter can be a combination of the following values:
621   *         @arg @ref LL_AHB2_GRP1_PERIPH_GPIOA
622   *         @arg @ref LL_AHB2_GRP1_PERIPH_GPIOB
623   *         @arg @ref LL_AHB2_GRP1_PERIPH_GPIOC
624   *         @arg @ref LL_AHB2_GRP1_PERIPH_GPIOH
625   *         @arg @ref LL_AHB2_GRP1_PERIPH_AES
626   *         @arg @ref LL_AHB2_GRP1_PERIPH_HASH
627   *         @arg @ref LL_AHB2_GRP1_PERIPH_RNG
628   *         @arg @ref LL_AHB2_GRP1_PERIPH_SAES (*)
629   *         @arg @ref LL_AHB2_GRP1_PERIPH_PKA
630   *         @arg @ref LL_AHB2_GRP1_PERIPH_SRAM2
631   *
632   *         (*) value not defined in all devices.
633   * @retval None
634   */
LL_AHB2_GRP1_EnableClockStopSleep(uint32_t Periphs)635 __STATIC_INLINE void LL_AHB2_GRP1_EnableClockStopSleep(uint32_t Periphs)
636 {
637   __IO uint32_t tmpreg;
638   SET_BIT(RCC->AHB2SMENR, Periphs);
639   /* Delay after an RCC peripheral clock enabling */
640   tmpreg = READ_BIT(RCC->AHB2SMENR, Periphs);
641   (void)tmpreg;
642 }
643 
644 /**
645   * @brief  Check if AHB2 peripheral clocks in Sleep and Stop modes is enabled or not
646   * @rmtoll AHB2SMENR    GPIOASMEN      LL_AHB2_GRP1_IsEnabledClockStopSleep\n
647   *         AHB2SMENR    GPIOBSMEN      LL_AHB2_GRP1_IsEnabledClockStopSleep\n
648   *         AHB2SMENR    GPIOCSMEN      LL_AHB2_GRP1_IsEnabledClockStopSleep\n
649   *         AHB2SMENR    GPIOHSMEN      LL_AHB2_GRP1_IsEnabledClockStopSleep\n
650   *         AHB2SMENR    AESSMEN        LL_AHB2_GRP1_IsEnabledClockStopSleep\n
651   *         AHB2SMENR    HASHSMEN       LL_AHB2_GRP1_IsEnabledClockStopSleep\n
652   *         AHB2SMENR    RNGSMEN        LL_AHB2_GRP1_IsEnabledClockStopSleep\n
653   *         AHB2SMENR    SAESSMEN       LL_AHB2_GRP1_IsEnabledClockStopSleep\n
654   *         AHB2SMENR    PKASMEN        LL_AHB2_GRP1_IsEnabledClockStopSleep\n
655   *         AHB2SMENR    SRAM2SMEN      LL_AHB2_GRP1_IsEnabledClockStopSleep
656   * @param  Periphs This parameter can be a combination of the following values:
657   *         @arg @ref LL_AHB2_GRP1_PERIPH_GPIOA
658   *         @arg @ref LL_AHB2_GRP1_PERIPH_GPIOB
659   *         @arg @ref LL_AHB2_GRP1_PERIPH_GPIOC
660   *         @arg @ref LL_AHB2_GRP1_PERIPH_GPIOH
661   *         @arg @ref LL_AHB2_GRP1_PERIPH_AES
662   *         @arg @ref LL_AHB2_GRP1_PERIPH_HASH
663   *         @arg @ref LL_AHB2_GRP1_PERIPH_RNG
664   *         @arg @ref LL_AHB2_GRP1_PERIPH_SAES (*)
665   *         @arg @ref LL_AHB2_GRP1_PERIPH_PKA
666   *         @arg @ref LL_AHB2_GRP1_PERIPH_SRAM2
667   *
668   *         (*) value not defined in all devices.
669   * @retval State of Periphs (1 or 0).
670   */
LL_AHB2_GRP1_IsEnabledClockStopSleep(uint32_t Periphs)671 __STATIC_INLINE uint32_t LL_AHB2_GRP1_IsEnabledClockStopSleep(uint32_t Periphs)
672 {
673   return ((READ_BIT(RCC->AHB2SMENR, Periphs) == Periphs) ? 1UL : 0UL);
674 }
675 
676 /**
677   * @brief  Disable AHB2 peripheral clocks in Sleep and Stop modes
678   * @rmtoll AHB2SMENR    GPIOASMEN      LL_AHB2_GRP1_DisableClockStopSleep\n
679   *         AHB2SMENR    GPIOBSMEN      LL_AHB2_GRP1_DisableClockStopSleep\n
680   *         AHB2SMENR    GPIOCSMEN      LL_AHB2_GRP1_DisableClockStopSleep\n
681   *         AHB2SMENR    GPIOHSMEN      LL_AHB2_GRP1_DisableClockStopSleep\n
682   *         AHB2SMENR    AESSMEN        LL_AHB2_GRP1_DisableClockStopSleep\n
683   *         AHB2SMENR    HASHSMEN       LL_AHB2_GRP1_DisableClockStopSleep\n
684   *         AHB2SMENR    RNGSMEN        LL_AHB2_GRP1_DisableClockStopSleep\n
685   *         AHB2SMENR    SAESSMEN       LL_AHB2_GRP1_DisableClockStopSleep\n
686   *         AHB2SMENR    PKASMEN        LL_AHB2_GRP1_DisableClockStopSleep\n
687   *         AHB2SMENR    SRAM2SMEN      LL_AHB2_GRP1_DisableClockStopSleep
688   * @param  Periphs This parameter can be a combination of the following values:
689   *         @arg @ref LL_AHB2_GRP1_PERIPH_GPIOA
690   *         @arg @ref LL_AHB2_GRP1_PERIPH_GPIOB
691   *         @arg @ref LL_AHB2_GRP1_PERIPH_GPIOC
692   *         @arg @ref LL_AHB2_GRP1_PERIPH_GPIOH
693   *         @arg @ref LL_AHB2_GRP1_PERIPH_AES
694   *         @arg @ref LL_AHB2_GRP1_PERIPH_HASH
695   *         @arg @ref LL_AHB2_GRP1_PERIPH_RNG
696   *         @arg @ref LL_AHB2_GRP1_PERIPH_SAES (*)
697   *         @arg @ref LL_AHB2_GRP1_PERIPH_PKA
698   *         @arg @ref LL_AHB2_GRP1_PERIPH_SRAM2
699   *
700   *         (*) value not defined in all devices.
701   * @retval None
702   */
LL_AHB2_GRP1_DisableClockStopSleep(uint32_t Periphs)703 __STATIC_INLINE void LL_AHB2_GRP1_DisableClockStopSleep(uint32_t Periphs)
704 {
705   CLEAR_BIT(RCC->AHB2SMENR, Periphs);
706 }
707 
708 /**
709   * @}
710   */
711 
712 /** @defgroup BUS_LL_EF_AHB4 AHB4
713   * @{
714   */
715 /**
716   * @brief  Enable AHB4 peripherals clock.
717   * @rmtoll AHB4ENR  PWREN         LL_AHB4_GRP1_EnableClock\n
718   *         AHB4ENR  ADC4EN        LL_AHB4_GRP1_EnableClock
719   * @param  Periphs This parameter can be a combination of the following values:
720   *         @arg @ref LL_AHB4_GRP1_PERIPH_ALL
721   *         @arg @ref LL_AHB4_GRP1_PERIPH_PWR
722   *         @arg @ref LL_AHB4_GRP1_PERIPH_ADC4
723   * @retval None
724   */
LL_AHB4_GRP1_EnableClock(uint32_t Periphs)725 __STATIC_INLINE void LL_AHB4_GRP1_EnableClock(uint32_t Periphs)
726 {
727   __IO uint32_t tmpreg;
728   SET_BIT(RCC->AHB4ENR, Periphs);
729   /* Delay after an RCC peripheral clock enabling */
730   tmpreg = READ_BIT(RCC->AHB4ENR, Periphs);
731   (void)tmpreg;
732 }
733 
734 /**
735   * @brief  Check if AHB4 peripheral clock is enabled or not
736   * @rmtoll AHB4ENR  PWREN         LL_AHB4_GRP1_IsEnabledClock\n
737   *         AHB4ENR  ADC4EN        LL_AHB4_GRP1_IsEnabledClock
738   * @param  Periphs This parameter can be a combination of the following values:
739   *         @arg @ref LL_AHB4_GRP1_PERIPH_ALL
740   *         @arg @ref LL_AHB4_GRP1_PERIPH_PWR
741   *         @arg @ref LL_AHB4_GRP1_PERIPH_ADC4
742   * @retval State of Periphs (1 or 0).
743   */
LL_AHB4_GRP1_IsEnabledClock(uint32_t Periphs)744 __STATIC_INLINE uint32_t LL_AHB4_GRP1_IsEnabledClock(uint32_t Periphs)
745 {
746   return ((READ_BIT(RCC->AHB4ENR, Periphs) == Periphs) ? 1UL : 0UL);
747 }
748 
749 /**
750   * @brief  Disable AHB4 peripherals clock.
751   * @rmtoll AHB4ENR  PWREN         LL_AHB4_GRP1_DisableClock\n
752   *         AHB4ENR  ADC4EN        LL_AHB4_GRP1_DisableClock
753   * @param  Periphs This parameter can be a combination of the following values:
754   *         @arg @ref LL_AHB4_GRP1_PERIPH_ALL
755   *         @arg @ref LL_AHB4_GRP1_PERIPH_PWR
756   *         @arg @ref LL_AHB4_GRP1_PERIPH_ADC4
757   * @retval None
758   */
LL_AHB4_GRP1_DisableClock(uint32_t Periphs)759 __STATIC_INLINE void LL_AHB4_GRP1_DisableClock(uint32_t Periphs)
760 {
761   CLEAR_BIT(RCC->AHB4ENR, Periphs);
762 }
763 
764 /**
765   * @brief  Force AHB4 peripherals reset.
766   * @rmtoll AHB4RSTR  ADC4RST        LL_AHB4_GRP1_ForceReset
767   * @param  Periphs This parameter can be a combination of the following values:
768   *         @arg @ref LL_AHB4_GRP1_PERIPH_ALL
769   *         @arg @ref LL_AHB4_GRP1_PERIPH_ADC4
770   * @retval None
771   */
LL_AHB4_GRP1_ForceReset(uint32_t Periphs)772 __STATIC_INLINE void LL_AHB4_GRP1_ForceReset(uint32_t Periphs)
773 {
774   SET_BIT(RCC->AHB4RSTR, Periphs);
775 }
776 
777 /**
778   * @brief  Release AHB4 peripherals reset.
779   * @rmtoll AHB4RSTR  ADC4RST        LL_AHB4_GRP1_ReleaseReset
780   * @param  Periphs This parameter can be a combination of the following values:
781   *         @arg @ref LL_AHB4_GRP1_PERIPH_ALL
782   *         @arg @ref LL_AHB4_GRP1_PERIPH_ADC4
783   * @retval None
784   */
LL_AHB4_GRP1_ReleaseReset(uint32_t Periphs)785 __STATIC_INLINE void LL_AHB4_GRP1_ReleaseReset(uint32_t Periphs)
786 {
787   CLEAR_BIT(RCC->AHB4RSTR, Periphs);
788 }
789 
790 /**
791   * @brief  Enable AHB4 peripheral clocks in Sleep and Stop modes
792   * @rmtoll AHB4SMENR  PWRSMEN        LL_AHB4_GRP1_EnableClockStopSleep\n
793   *         AHB4SMENR  ADC4SMEN       LL_AHB4_GRP1_EnableClockStopSleep
794   * @param  Periphs This parameter can be a combination of the following values:
795   *         @arg @ref LL_AHB4_GRP1_PERIPH_ALL
796   *         @arg @ref LL_AHB4_GRP1_PERIPH_PWR
797   *         @arg @ref LL_AHB4_GRP1_PERIPH_ADC4
798   * @retval None
799   */
LL_AHB4_GRP1_EnableClockStopSleep(uint32_t Periphs)800 __STATIC_INLINE void LL_AHB4_GRP1_EnableClockStopSleep(uint32_t Periphs)
801 {
802   __IO uint32_t tmpreg;
803   SET_BIT(RCC->AHB4SMENR, Periphs);
804   /* Delay after an RCC peripheral clock enabling */
805   tmpreg = READ_BIT(RCC->AHB4SMENR, Periphs);
806   (void)tmpreg;
807 }
808 
809 /**
810   * @brief  Check if AHB4 peripheral clocks in Sleep and Stop modes is enabled or not
811   * @rmtoll AHB4SMENR  PWRSMEN        LL_AHB4_GRP1_IsEnabledClockStopSleep\n
812   *         AHB4SMENR  ADC4SMEN       LL_AHB4_GRP1_IsEnabledClockStopSleep
813   * @param  Periphs This parameter can be a combination of the following values:
814   *         @arg @ref LL_AHB4_GRP1_PERIPH_ALL
815   *         @arg @ref LL_AHB4_GRP1_PERIPH_PWR
816   *         @arg @ref LL_AHB4_GRP1_PERIPH_ADC4
817   * @retval State of Periphs (1 or 0).
818   */
LL_AHB4_GRP1_IsEnabledClockStopSleep(uint32_t Periphs)819 __STATIC_INLINE uint32_t LL_AHB4_GRP1_IsEnabledClockStopSleep(uint32_t Periphs)
820 {
821   return ((READ_BIT(RCC->AHB4SMENR, Periphs) == Periphs) ? 1UL : 0UL);
822 }
823 
824 /**
825   * @brief  Disable AHB4 peripheral clocks in Sleep and Stop modes
826   * @rmtoll AHB4SMENR  PWRSMEN        LL_AHB4_GRP1_DisableClockStopSleep\n
827   *         AHB4SMENR  ADC4SMEN       LL_AHB4_GRP1_DisableClockStopSleep
828   * @param  Periphs This parameter can be a combination of the following values:
829   *         @arg @ref LL_AHB4_GRP1_PERIPH_ALL
830   *         @arg @ref LL_AHB4_GRP1_PERIPH_PWR
831   *         @arg @ref LL_AHB4_GRP1_PERIPH_ADC4
832   * @retval None
833   */
LL_AHB4_GRP1_DisableClockStopSleep(uint32_t Periphs)834 __STATIC_INLINE void LL_AHB4_GRP1_DisableClockStopSleep(uint32_t Periphs)
835 {
836   CLEAR_BIT(RCC->AHB4SMENR, Periphs);
837 }
838 
839 /**
840   * @}
841   */
842 
843 /** @defgroup BUS_LL_EF_AHB5 AHB5
844   * @{
845   */
846 /**
847   * @brief  Enable AHB5 peripherals clock.
848   * @rmtoll AHB5ENR  RADIOEN        LL_AHB5_GRP1_EnableClock\n
849   *         AHB5ENR  PTACONVEN      LL_AHB5_GRP1_EnableClock
850   * @param  Periphs This parameter can be a combination of the following values:
851   *         @arg @ref LL_AHB5_GRP1_PERIPH_ALL
852   *         @arg @ref LL_AHB5_GRP1_PERIPH_RADIO
853   *         @arg @ref LL_AHB5_GRP1_PERIPH_PTACONV (*)
854   *
855   *         (*) value not defined in all devices.
856   * @retval None
857   */
LL_AHB5_GRP1_EnableClock(uint32_t Periphs)858 __STATIC_INLINE void LL_AHB5_GRP1_EnableClock(uint32_t Periphs)
859 {
860   __IO uint32_t tmpreg;
861   SET_BIT(RCC->AHB5ENR, Periphs);
862   /* Delay after an RCC peripheral clock enabling */
863   tmpreg = READ_BIT(RCC->AHB5ENR, Periphs);
864   (void)tmpreg;
865 }
866 
867 /**
868   * @brief  Check if AHB5 peripheral clock is enabled or not
869   * @rmtoll AHB5ENR  RADIOEN        LL_AHB5_GRP1_IsEnabledClock\n
870   *         AHB5ENR  PTACONVEN      LL_AHB5_GRP1_IsEnabledClock
871   * @param  Periphs This parameter can be a combination of the following values:
872   *         @arg @ref LL_AHB5_GRP1_PERIPH_ALL
873   *         @arg @ref LL_AHB5_GRP1_PERIPH_RADIO
874   *         @arg @ref LL_AHB5_GRP1_PERIPH_PTACONV (*)
875   *
876   *         (*) value not defined in all devices.
877   * @retval State of Periphs (1 or 0).
878   */
LL_AHB5_GRP1_IsEnabledClock(uint32_t Periphs)879 __STATIC_INLINE uint32_t LL_AHB5_GRP1_IsEnabledClock(uint32_t Periphs)
880 {
881   return ((READ_BIT(RCC->AHB5ENR, Periphs) == Periphs) ? 1UL : 0UL);
882 }
883 
884 /**
885   * @brief  Disable AHB5 peripherals clock.
886   * @rmtoll AHB5ENR  RADIOEN        LL_AHB5_GRP1_DisableClock\n
887   *         AHB5ENR  PTACONVEN      LL_AHB5_GRP1_DisableClock
888   * @param  Periphs This parameter can be a combination of the following values:
889   *         @arg @ref LL_AHB5_GRP1_PERIPH_ALL
890   *         @arg @ref LL_AHB5_GRP1_PERIPH_RADIO
891   *         @arg @ref LL_AHB5_GRP1_PERIPH_PTACONV (*)
892   *
893   *         (*) value not defined in all devices.
894   * @retval None
895   */
LL_AHB5_GRP1_DisableClock(uint32_t Periphs)896 __STATIC_INLINE void LL_AHB5_GRP1_DisableClock(uint32_t Periphs)
897 {
898   CLEAR_BIT(RCC->AHB5ENR, Periphs);
899 }
900 
901 /**
902   * @brief  Force AHB5 peripherals reset.
903   * @rmtoll AHB5RSTR  RADIORST        LL_AHB5_GRP1_ForceReset\n
904   *         AHB5RSTR  PTACONVRST      LL_AHB5_GRP1_ForceReset
905   * @param  Periphs This parameter can be a combination of the following values:
906   *         @arg @ref LL_AHB5_GRP1_PERIPH_ALL
907   *         @arg @ref LL_AHB5_GRP1_PERIPH_RADIO
908   *         @arg @ref LL_AHB5_GRP1_PERIPH_PTACONV (*)
909   *
910   *         (*) value not defined in all devices.
911   * @retval None
912   */
LL_AHB5_GRP1_ForceReset(uint32_t Periphs)913 __STATIC_INLINE void LL_AHB5_GRP1_ForceReset(uint32_t Periphs)
914 {
915   SET_BIT(RCC->AHB5RSTR, Periphs);
916 }
917 
918 /**
919   * @brief  Release AHB5 peripherals reset.
920   * @rmtoll AHB5RSTR  RADIORST        LL_AHB5_GRP1_ReleaseReset\n
921   *         AHB5RSTR  PTACONVRST      LL_AHB5_GRP1_ReleaseReset
922   * @param  Periphs This parameter can be a combination of the following values:
923   *         @arg @ref LL_AHB5_GRP1_PERIPH_ALL
924   *         @arg @ref LL_AHB5_GRP1_PERIPH_RADIO
925   *         @arg @ref LL_AHB5_GRP1_PERIPH_PTACONV (*)
926   *
927   *         (*) value not defined in all devices.
928   * @retval None
929   */
LL_AHB5_GRP1_ReleaseReset(uint32_t Periphs)930 __STATIC_INLINE void LL_AHB5_GRP1_ReleaseReset(uint32_t Periphs)
931 {
932   CLEAR_BIT(RCC->AHB5RSTR, Periphs);
933 }
934 
935 /**
936   * @brief  Enable AHB5 peripheral clocks in Sleep and Stop modes
937   * @rmtoll AHB5SMENR  RADIOSMEN       LL_AHB5_GRP1_EnableClockStopSleep\n
938   *         AHB5SMENR  PTACONVSMEN     LL_AHB5_GRP1_EnableClockStopSleep
939   * @param  Periphs This parameter can be a combination of the following values:
940   *         @arg @ref LL_AHB5_GRP1_PERIPH_ALL
941   *         @arg @ref LL_AHB5_GRP1_PERIPH_RADIO
942   *         @arg @ref LL_AHB5_GRP1_PERIPH_PTACONV (*)
943   *
944   *         (*) value not defined in all devices.
945   * @retval None
946   */
LL_AHB5_GRP1_EnableClockStopSleep(uint32_t Periphs)947 __STATIC_INLINE void LL_AHB5_GRP1_EnableClockStopSleep(uint32_t Periphs)
948 {
949   __IO uint32_t tmpreg;
950   SET_BIT(RCC->AHB5SMENR, Periphs);
951   /* Delay after an RCC peripheral clock enabling */
952   tmpreg = READ_BIT(RCC->AHB5SMENR, Periphs);
953   (void)tmpreg;
954 }
955 
956 /**
957   * @brief  Check if AHB5 peripheral clocks in Sleep and Stop modes is enabled or not
958   * @rmtoll AHB5SMENR  RADIOSMEN       LL_AHB5_GRP1_IsEnabledClockStopSleep\n
959   *         AHB5SMENR  PTACONVSMEN     LL_AHB5_GRP1_IsEnabledClockStopSleep
960   * @param  Periphs This parameter can be a combination of the following values:
961   *         @arg @ref LL_AHB5_GRP1_PERIPH_ALL
962   *         @arg @ref LL_AHB5_GRP1_PERIPH_RADIO
963   *         @arg @ref LL_AHB5_GRP1_PERIPH_PTACONV (*)
964   *
965   *         (*) value not defined in all devices.
966   * @retval State of Periphs (1 or 0).
967   */
LL_AHB5_GRP1_IsEnabledClockStopSleep(uint32_t Periphs)968 __STATIC_INLINE uint32_t LL_AHB5_GRP1_IsEnabledClockStopSleep(uint32_t Periphs)
969 {
970   return ((READ_BIT(RCC->AHB5SMENR, Periphs) == Periphs) ? 1UL : 0UL);
971 }
972 
973 /**
974   * @brief  Disable AHB5 peripheral clocks in Sleep and Stop modes
975   * @rmtoll AHB5SMENR  RADIOSMEN       LL_AHB5_GRP1_DisableClockStopSleep\n
976   *         AHB5SMENR  PTACONVSMEN     LL_AHB5_GRP1_DisableClockStopSleep
977   * @param  Periphs This parameter can be a combination of the following values:
978   *         @arg @ref LL_AHB5_GRP1_PERIPH_ALL
979   *         @arg @ref LL_AHB5_GRP1_PERIPH_RADIO
980   *         @arg @ref LL_AHB5_GRP1_PERIPH_PTACONV (*)
981   *
982   *         (*) value not defined in all devices.
983   * @retval None
984   */
LL_AHB5_GRP1_DisableClockStopSleep(uint32_t Periphs)985 __STATIC_INLINE void LL_AHB5_GRP1_DisableClockStopSleep(uint32_t Periphs)
986 {
987   CLEAR_BIT(RCC->AHB5SMENR, Periphs);
988 }
989 
990 /**
991   * @}
992   */
993 
994 /** @defgroup BUS_LL_EF_APB1 APB1
995   * @{
996   */
997 
998 /**
999   * @brief  Enable APB1 peripherals clock.
1000   * @rmtoll APB1ENR1     TIM2EN        LL_APB1_GRP1_EnableClock\n
1001   *         APB1ENR1     TIM3EN        LL_APB1_GRP1_EnableClock\n
1002 #if defined(WWDG)
1003   *         APB1ENR1     WWDGEN        LL_APB1_GRP1_EnableClock\n
1004 #endif
1005   *         APB1ENR1     USART2EN      LL_APB1_GRP1_EnableClock\n
1006   *         APB1ENR1     I2C1EN        LL_APB1_GRP1_EnableClock\n
1007   * @param  Periphs This parameter can be a combination of the following values:
1008   *         @arg @ref LL_APB1_GRP1_PERIPH_ALL
1009   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM2
1010   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM3 (*)
1011 #if defined(WWDG)
1012   *         @arg @ref LL_APB1_GRP1_PERIPH_WWDG (*)
1013 #endif
1014   *         @arg @ref LL_APB1_GRP1_PERIPH_USART2
1015   *         @arg @ref LL_APB1_GRP1_PERIPH_I2C1 (*)
1016   *
1017   *         (*) value not defined in all devices.
1018   * @retval None
1019   */
LL_APB1_GRP1_EnableClock(uint32_t Periphs)1020 __STATIC_INLINE void LL_APB1_GRP1_EnableClock(uint32_t Periphs)
1021 {
1022   __IO uint32_t tmpreg;
1023   SET_BIT(RCC->APB1ENR1, Periphs);
1024   /* Delay after an RCC peripheral clock enabling */
1025   tmpreg = READ_BIT(RCC->APB1ENR1, Periphs);
1026   (void)tmpreg;
1027 }
1028 
1029 /**
1030   * @brief  Enable APB1 peripherals clock.
1031   *         APB1ENR2     LPTIM2EN      LL_APB1_GRP2_EnableClock
1032   * @param  Periphs This parameter can be a combination of the following values:
1033   *         @arg @ref LL_APB1_GRP2_PERIPH_ALL
1034   *         @arg @ref LL_APB1_GRP2_PERIPH_LPTIM2
1035   * @retval None
1036   */
LL_APB1_GRP2_EnableClock(uint32_t Periphs)1037 __STATIC_INLINE void LL_APB1_GRP2_EnableClock(uint32_t Periphs)
1038 {
1039   __IO uint32_t tmpreg;
1040   SET_BIT(RCC->APB1ENR2, Periphs);
1041   /* Delay after an RCC peripheral clock enabling */
1042   tmpreg = READ_BIT(RCC->APB1ENR2, Periphs);
1043   (void)tmpreg;
1044 }
1045 
1046 /**
1047   * @brief  Check if APB1 peripheral clock is enabled or not
1048   * @rmtoll APB1ENR1     TIM2EN        LL_APB1_GRP1_IsEnabledClock\n
1049   *         APB1ENR1     TIM3EN        LL_APB1_GRP1_IsEnabledClock\n
1050 #if defined(WWDG)
1051   *         APB1ENR1     WWDGEN        LL_APB1_GRP1_IsEnabledClock\n
1052 #endif
1053   *         APB1ENR1     USART2EN      LL_APB1_GRP1_IsEnabledClock\n
1054   *         APB1ENR1     I2C1EN        LL_APB1_GRP1_IsEnabledClock\n
1055   * @param  Periphs This parameter can be a combination of the following values:
1056   *         @arg @ref LL_APB1_GRP1_PERIPH_ALL
1057   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM2
1058   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM3 (*)
1059 #if defined(WWDG)
1060   *         @arg @ref LL_APB1_GRP1_PERIPH_WWDG (*)
1061 #endif
1062   *         @arg @ref LL_APB1_GRP1_PERIPH_USART2
1063   *         @arg @ref LL_APB1_GRP1_PERIPH_I2C1 (*)
1064   *
1065   *         (*) value not defined in all devices.
1066   * @retval State of Periphs (1 or 0).
1067   */
LL_APB1_GRP1_IsEnabledClock(uint32_t Periphs)1068 __STATIC_INLINE uint32_t LL_APB1_GRP1_IsEnabledClock(uint32_t Periphs)
1069 {
1070   return ((READ_BIT(RCC->APB1ENR1, Periphs) == Periphs) ? 1UL : 0UL);
1071 }
1072 
1073 /**
1074   * @brief  Check if APB1 peripheral clock is enabled or not
1075   *         APB1ENR2     LPTIM2EN      LL_APB1_GRP2_IsEnabledClock
1076   * @param  Periphs This parameter can be a combination of the following values:
1077   *         @arg @ref LL_APB1_GRP2_PERIPH_ALL
1078   *         @arg @ref LL_APB1_GRP2_PERIPH_LPTIM2
1079   * @retval State of Periphs (1 or 0).
1080   */
LL_APB1_GRP2_IsEnabledClock(uint32_t Periphs)1081 __STATIC_INLINE uint32_t LL_APB1_GRP2_IsEnabledClock(uint32_t Periphs)
1082 {
1083   return ((READ_BIT(RCC->APB1ENR2, Periphs) == Periphs) ? 1UL : 0UL);
1084 }
1085 
1086 /**
1087   * @brief  Disable APB1 peripherals clock.
1088   * @rmtoll APB1ENR1     TIM2EN        LL_APB1_GRP1_DisableClock\n
1089   *         APB1ENR1     TIM3EN        LL_APB1_GRP1_DisableClock\n
1090   *         APB1ENR1     WWDGEN        LL_APB1_GRP1_DisableClock\n
1091   *         APB1ENR1     USART2EN      LL_APB1_GRP1_DisableClock\n
1092   *         APB1ENR1     I2C1EN        LL_APB1_GRP1_DisableClock\n
1093   * @param  Periphs This parameter can be a combination of the following values:
1094   *         @arg @ref LL_APB1_GRP1_PERIPH_ALL
1095   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM2
1096   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM3 (*)
1097 #if defined(WWDG)
1098   *         @arg @ref LL_APB1_GRP1_PERIPH_WWDG (*)
1099 #endif
1100   *         @arg @ref LL_APB1_GRP1_PERIPH_USART2
1101   *         @arg @ref LL_APB1_GRP1_PERIPH_I2C1 (*)
1102   *
1103   *         (*) value not defined in all devices.
1104   * @retval None
1105   */
LL_APB1_GRP1_DisableClock(uint32_t Periphs)1106 __STATIC_INLINE void LL_APB1_GRP1_DisableClock(uint32_t Periphs)
1107 {
1108   CLEAR_BIT(RCC->APB1ENR1, Periphs);
1109 }
1110 
1111 /**
1112   * @brief  Disable APB1 peripherals clock.
1113   *         APB1ENR2     LPTIM2EN      LL_APB1_GRP2_DisableClock
1114   * @param  Periphs This parameter can be a combination of the following values:
1115   *         @arg @ref LL_APB1_GRP2_PERIPH_ALL
1116   *         @arg @ref LL_APB1_GRP2_PERIPH_LPTIM2
1117   * @retval None
1118   */
LL_APB1_GRP2_DisableClock(uint32_t Periphs)1119 __STATIC_INLINE void LL_APB1_GRP2_DisableClock(uint32_t Periphs)
1120 {
1121   CLEAR_BIT(RCC->APB1ENR2, Periphs);
1122 }
1123 
1124 /**
1125   * @brief  Force APB1 peripherals reset.
1126   * @rmtoll APB1RSTR1     TIM2RST       LL_APB1_GRP1_ForceReset\n
1127   *         APB1RSTR1     TIM3RST       LL_APB1_GRP1_ForceReset\n
1128   *         APB1RSTR1     USART2RST     LL_APB1_GRP1_ForceReset\n
1129   *         APB1RSTR1     I2C1RST       LL_APB1_GRP1_ForceReset\n
1130   * @param  Periphs This parameter can be a combination of the following values:
1131   *         @arg @ref LL_APB1_GRP1_PERIPH_ALL
1132   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM2
1133   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM3 (*)
1134   *         @arg @ref LL_APB1_GRP1_PERIPH_USART2
1135   *         @arg @ref LL_APB1_GRP1_PERIPH_I2C1 (*)
1136   *
1137   *         (*) value not defined in all devices.
1138   * @retval None
1139   */
LL_APB1_GRP1_ForceReset(uint32_t Periphs)1140 __STATIC_INLINE void LL_APB1_GRP1_ForceReset(uint32_t Periphs)
1141 {
1142   SET_BIT(RCC->APB1RSTR1, Periphs);
1143 }
1144 
1145 /**
1146   * @brief  Force APB1 peripherals reset.
1147   *         APB1RSTR2     LPTIM2RST     LL_APB1_GRP2_ForceReset
1148   * @param  Periphs This parameter can be a combination of the following values:
1149   *         @arg @ref LL_APB1_GRP2_PERIPH_ALL
1150   *         @arg @ref LL_APB1_GRP2_PERIPH_LPTIM2
1151   * @retval None
1152   */
LL_APB1_GRP2_ForceReset(uint32_t Periphs)1153 __STATIC_INLINE void LL_APB1_GRP2_ForceReset(uint32_t Periphs)
1154 {
1155   SET_BIT(RCC->APB1RSTR2, Periphs);
1156 }
1157 
1158 /**
1159   * @brief  Release APB1 peripherals reset.
1160   * @rmtoll APB1RSTR1     TIM2RST       LL_APB1_GRP1_ReleaseReset\n
1161   *         APB1RSTR1     TIM3RST       LL_APB1_GRP1_ReleaseReset\n
1162   *         APB1RSTR1     USART2RST     LL_APB1_GRP1_ReleaseReset\n
1163   *         APB1RSTR1     I2C1RST       LL_APB1_GRP1_ReleaseReset\n
1164   * @param  Periphs This parameter can be a combination of the following values:
1165   *         @arg @ref LL_APB1_GRP1_PERIPH_ALL
1166   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM2
1167   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM3 (*)
1168   *         @arg @ref LL_APB1_GRP1_PERIPH_USART2
1169   *         @arg @ref LL_APB1_GRP1_PERIPH_I2C1 (*)
1170   *
1171   *         (*) value not defined in all devices.
1172   * @retval None
1173   */
LL_APB1_GRP1_ReleaseReset(uint32_t Periphs)1174 __STATIC_INLINE void LL_APB1_GRP1_ReleaseReset(uint32_t Periphs)
1175 {
1176   CLEAR_BIT(RCC->APB1RSTR1, Periphs);
1177 }
1178 
1179 /**
1180   * @brief  Release APB1 peripherals reset.
1181   *         APB1RSTR2     LPTIM2RST     LL_APB1_GRP2_ReleaseReset
1182   * @param  Periphs This parameter can be a combination of the following values:
1183   *         @arg @ref LL_APB1_GRP2_PERIPH_ALL
1184   *         @arg @ref LL_APB1_GRP2_PERIPH_LPTIM2
1185   * @retval None
1186   */
LL_APB1_GRP2_ReleaseReset(uint32_t Periphs)1187 __STATIC_INLINE void LL_APB1_GRP2_ReleaseReset(uint32_t Periphs)
1188 {
1189   CLEAR_BIT(RCC->APB1RSTR2, Periphs);
1190 }
1191 
1192 /**
1193   * @brief  Enable APB1 peripheral clocks in Sleep and Stop modes
1194   * @rmtoll APB1SMENR1     TIM2SMEN       LL_APB1_GRP1_EnableClockStopSleep\n
1195   *         APB1SMENR1     TIM3SMEN       LL_APB1_GRP1_EnableClockStopSleep\n
1196 #if defined(WWDG)
1197   *         APB1SMENR1     WWDGSMEN       LL_APB1_GRP1_EnableClockStopSleep\n
1198 #endif
1199   *         APB1SMENR1     USART2SMEN     LL_APB1_GRP1_EnableClockStopSleep\n
1200   *         APB1SMENR1     I2C1SMEN       LL_APB1_GRP1_EnableClockStopSleep\n
1201   * @param  Periphs This parameter can be a combination of the following values:
1202   *         @arg @ref LL_APB1_GRP1_PERIPH_ALL
1203   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM2
1204   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM3 (*)
1205 #if defined(WWDG)
1206   *         @arg @ref LL_APB1_GRP1_PERIPH_WWDG (*)
1207 #endif
1208   *         @arg @ref LL_APB1_GRP1_PERIPH_USART2
1209   *         @arg @ref LL_APB1_GRP1_PERIPH_I2C1 (*)
1210   *
1211   *         (*) value not defined in all devices.
1212   * @retval None
1213   */
LL_APB1_GRP1_EnableClockStopSleep(uint32_t Periphs)1214 __STATIC_INLINE void LL_APB1_GRP1_EnableClockStopSleep(uint32_t Periphs)
1215 {
1216   __IO uint32_t tmpreg;
1217   SET_BIT(RCC->APB1SMENR1, Periphs);
1218   /* Delay after an RCC peripheral clock enabling */
1219   tmpreg = READ_BIT(RCC->APB1SMENR1, Periphs);
1220   (void)tmpreg;
1221 }
1222 
1223 /**
1224   * @brief  Check if APB1 peripheral clocks in Sleep and Stop modes is enabled or not
1225   * @rmtoll APB1SMENR1     TIM2SMEN       LL_APB1_GRP1_IsEnabledClockStopSleep\n
1226   *         APB1SMENR1     TIM3SMEN       LL_APB1_GRP1_IsEnabledClockStopSleep\n
1227 #if defined(WWDG)
1228   *         APB1SMENR1     WWDGSMEN       LL_APB1_GRP1_IsEnabledClockStopSleep\n
1229 #endif
1230   *         APB1SMENR1     USART2SMEN     LL_APB1_GRP1_IsEnabledClockStopSleep\n
1231   *         APB1SMENR1     I2C1SMEN       LL_APB1_GRP1_IsEnabledClockStopSleep\n
1232   * @param  Periphs This parameter can be a combination of the following values:
1233   *         @arg @ref LL_APB1_GRP1_PERIPH_ALL
1234   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM2
1235   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM3 (*)
1236 #if defined(WWDG)
1237   *         @arg @ref LL_APB1_GRP1_PERIPH_WWDG (*)
1238 #endif
1239   *         @arg @ref LL_APB1_GRP1_PERIPH_USART2
1240   *         @arg @ref LL_APB1_GRP1_PERIPH_I2C1 (*)
1241   *
1242   *         (*) value not defined in all devices.
1243   * @retval State of Periphs (1 or 0).
1244   */
LL_APB1_GRP1_IsEnabledClockStopSleep(uint32_t Periphs)1245 __STATIC_INLINE uint32_t LL_APB1_GRP1_IsEnabledClockStopSleep(uint32_t Periphs)
1246 {
1247   return ((READ_BIT(RCC->APB1SMENR1, Periphs) == Periphs) ? 1UL : 0UL);
1248 }
1249 
1250 /**
1251   * @brief  Disable APB1 peripheral clocks in Sleep and Stop modes
1252   * @rmtoll APB1SMENR1     TIM2SMEN       LL_APB1_GRP1_DisableClockStopSleep\n
1253   *         APB1SMENR1     TIM3SMEN       LL_APB1_GRP1_DisableClockStopSleep\n
1254 #if defined(WWDG)
1255   *         APB1SMENR1     WWDGSMEN       LL_APB1_GRP1_DisableClockStopSleep\n
1256 #endif
1257   *         APB1SMENR1     USART2SMEN     LL_APB1_GRP1_DisableClockStopSleep\n
1258   *         APB1SMENR1     I2C1SMEN       LL_APB1_GRP1_DisableClockStopSleep\n
1259   * @param  Periphs This parameter can be a combination of the following values:
1260   *         @arg @ref LL_APB1_GRP1_PERIPH_ALL
1261   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM2
1262   *         @arg @ref LL_APB1_GRP1_PERIPH_TIM3 (*)
1263 #if defined(WWDG)
1264   *         @arg @ref LL_APB1_GRP1_PERIPH_WWDG (*)
1265 #endif
1266   *         @arg @ref LL_APB1_GRP1_PERIPH_USART2
1267   *         @arg @ref LL_APB1_GRP1_PERIPH_I2C1 (*)
1268   *
1269   *         (*) value not defined in all devices.
1270   * @retval None
1271   */
LL_APB1_GRP1_DisableClockStopSleep(uint32_t Periphs)1272 __STATIC_INLINE void LL_APB1_GRP1_DisableClockStopSleep(uint32_t Periphs)
1273 {
1274   CLEAR_BIT(RCC->APB1SMENR1, Periphs);
1275 }
1276 
1277 /**
1278   * @brief  Enable APB1 peripheral clocks in Sleep and Stop modes
1279   *         APB1SMENR2     LPTIM2SMEN     LL_APB1_GRP2_EnableClockStopSleep
1280   * @param  Periphs This parameter can be a combination of the following values:
1281   *         @arg @ref LL_APB1_GRP2_PERIPH_ALL
1282   *         @arg @ref LL_APB1_GRP2_PERIPH_LPTIM2
1283   * @retval None
1284   */
LL_APB1_GRP2_EnableClockStopSleep(uint32_t Periphs)1285 __STATIC_INLINE void LL_APB1_GRP2_EnableClockStopSleep(uint32_t Periphs)
1286 {
1287   __IO uint32_t tmpreg;
1288   SET_BIT(RCC->APB1SMENR2, Periphs);
1289   /* Delay after an RCC peripheral clock enabling */
1290   tmpreg = READ_BIT(RCC->APB1SMENR2, Periphs);
1291   (void)tmpreg;
1292 }
1293 
1294 /**
1295   * @brief  Check if APB1 peripheral clocks in Sleep and Stop modes is enabled or not
1296   *         APB1SMENR2     LPTIM2SMEN     LL_APB1_GRP2_IsEnabledClockStopSleep
1297   * @param  Periphs This parameter can be a combination of the following values:
1298   *         @arg @ref LL_APB1_GRP2_PERIPH_ALL
1299   *         @arg @ref LL_APB1_GRP2_PERIPH_LPTIM2
1300   * @retval State of Periphs (1 or 0).
1301   */
LL_APB1_GRP2_IsEnabledClockStopSleep(uint32_t Periphs)1302 __STATIC_INLINE uint32_t LL_APB1_GRP2_IsEnabledClockStopSleep(uint32_t Periphs)
1303 {
1304   return ((READ_BIT(RCC->APB1SMENR2, Periphs) == Periphs) ? 1UL : 0UL);
1305 }
1306 
1307 /**
1308   * @brief  Disable APB1 peripheral clocks in Sleep and Stop modes
1309   *         APB1SMENR2     LPTIM2SMEN     LL_APB1_GRP2_DisableClockStopSleep
1310   * @param  Periphs This parameter can be a combination of the following values:
1311   *         @arg @ref LL_APB1_GRP2_PERIPH_ALL
1312   * @retval None
1313   */
LL_APB1_GRP2_DisableClockStopSleep(uint32_t Periphs)1314 __STATIC_INLINE void LL_APB1_GRP2_DisableClockStopSleep(uint32_t Periphs)
1315 {
1316   CLEAR_BIT(RCC->APB1SMENR2, Periphs);
1317 }
1318 
1319 /**
1320   * @}
1321   */
1322 
1323 /** @defgroup BUS_LL_EF_APB2 APB2
1324   * @{
1325   */
1326 
1327 /**
1328   * @brief  Enable APB2 peripherals clock.
1329   * @rmtoll APB2ENR      TIM1EN        LL_APB2_GRP1_EnableClock\n
1330   *         APB2ENR      SPI1EN        LL_APB2_GRP1_EnableClock\n
1331   *         APB2ENR      USART1EN      LL_APB2_GRP1_EnableClock\n
1332   *         APB2ENR      TIM16EN       LL_APB2_GRP1_EnableClock\n
1333   *         APB2ENR      TIM17EN       LL_APB2_GRP1_EnableClock\n
1334   *         APB2ENR      SAI1EN        LL_APB2_GRP1_EnableClock
1335   * @param  Periphs This parameter can be a combination of the following values:
1336   *         @arg @ref LL_APB2_GRP1_PERIPH_ALL
1337   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM1
1338   *         @arg @ref LL_APB2_GRP1_PERIPH_SPI1 (*)
1339   *         @arg @ref LL_APB2_GRP1_PERIPH_USART1
1340   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM16
1341   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*)
1342   *         @arg @ref LL_APB2_GRP1_PERIPH_SAI1 (*)
1343   *
1344   *         (*) value not defined in all devices.
1345   * @retval None
1346   */
LL_APB2_GRP1_EnableClock(uint32_t Periphs)1347 __STATIC_INLINE void LL_APB2_GRP1_EnableClock(uint32_t Periphs)
1348 {
1349   __IO uint32_t tmpreg;
1350   SET_BIT(RCC->APB2ENR, Periphs);
1351   /* Delay after an RCC peripheral clock enabling */
1352   tmpreg = READ_BIT(RCC->APB2ENR, Periphs);
1353   (void)tmpreg;
1354 }
1355 
1356 /**
1357   * @brief  Check if APB2 peripheral clock is enabled or not
1358   * @rmtoll APB2ENR      TIM1EN        LL_APB2_GRP1_IsEnabledClock\n
1359   *         APB2ENR      SPI1EN        LL_APB2_GRP1_IsEnabledClock\n
1360   *         APB2ENR      USART1EN      LL_APB2_GRP1_IsEnabledClock\n
1361   *         APB2ENR      TIM16EN       LL_APB2_GRP1_IsEnabledClock\n
1362   *         APB2ENR      TIM17EN       LL_APB2_GRP1_IsEnabledClock\n
1363   *         APB2ENR      SAI1EN        LL_APB2_GRP1_IsEnabledClock
1364   * @param  Periphs This parameter can be a combination of the following values:
1365   *         @arg @ref LL_APB2_GRP1_PERIPH_ALL
1366   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM1
1367   *         @arg @ref LL_APB2_GRP1_PERIPH_SPI1 (*)
1368   *         @arg @ref LL_APB2_GRP1_PERIPH_USART1
1369   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM16
1370   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*)
1371   *         @arg @ref LL_APB2_GRP1_PERIPH_SAI1 (*)
1372   *
1373   *         (*) value not defined in all devices.
1374   * @retval State of Periphs (1 or 0).
1375   */
LL_APB2_GRP1_IsEnabledClock(uint32_t Periphs)1376 __STATIC_INLINE uint32_t LL_APB2_GRP1_IsEnabledClock(uint32_t Periphs)
1377 {
1378   return ((READ_BIT(RCC->APB2ENR, Periphs) == Periphs) ? 1UL : 0UL);
1379 }
1380 
1381 /**
1382   * @brief  Disable APB2 peripherals clock.
1383   * @rmtoll APB2ENR      TIM1EN        LL_APB2_GRP1_DisableClock\n
1384   *         APB2ENR      SPI1EN        LL_APB2_GRP1_DisableClock\n
1385   *         APB2ENR      USART1EN      LL_APB2_GRP1_DisableClock\n
1386   *         APB2ENR      TIM16EN       LL_APB2_GRP1_DisableClock\n
1387   *         APB2ENR      TIM17EN       LL_APB2_GRP1_DisableClock\n
1388   *         APB2ENR      SAI1EN        LL_APB2_GRP1_DisableClock
1389   * @param  Periphs This parameter can be a combination of the following values:
1390   *         @arg @ref LL_APB2_GRP1_PERIPH_ALL
1391   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM1
1392   *         @arg @ref LL_APB2_GRP1_PERIPH_SPI1 (*)
1393   *         @arg @ref LL_APB2_GRP1_PERIPH_USART1
1394   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM16
1395   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*)
1396   *         @arg @ref LL_APB2_GRP1_PERIPH_SAI1 (*)
1397   *
1398   *         (*) value not defined in all devices.
1399   * @retval None
1400   */
LL_APB2_GRP1_DisableClock(uint32_t Periphs)1401 __STATIC_INLINE void LL_APB2_GRP1_DisableClock(uint32_t Periphs)
1402 {
1403   CLEAR_BIT(RCC->APB2ENR, Periphs);
1404 }
1405 
1406 /**
1407   * @brief  Force APB2 peripherals reset.
1408   * @rmtoll APB2RSTR      TIM1RST        LL_APB2_GRP1_ForceReset\n
1409   *         APB2RSTR      SPI1RST        LL_APB2_GRP1_ForceReset\n
1410   *         APB2RSTR      USART1RST      LL_APB2_GRP1_ForceReset\n
1411   *         APB2RSTR      TIM16RST       LL_APB2_GRP1_ForceReset\n
1412   *         APB2RSTR      TIM17RST       LL_APB2_GRP1_ForceReset\n
1413   *         APB2RSTR      SAI1RST        LL_APB2_GRP1_ForceReset
1414   * @param  Periphs This parameter can be a combination of the following values:
1415   *         @arg @ref LL_APB2_GRP1_PERIPH_ALL
1416   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM1
1417   *         @arg @ref LL_APB2_GRP1_PERIPH_SPI1 (*)
1418   *         @arg @ref LL_APB2_GRP1_PERIPH_USART1
1419   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM16
1420   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*)
1421   *         @arg @ref LL_APB2_GRP1_PERIPH_SAI1 (*)
1422   *
1423   *         (*) value not defined in all devices.
1424   * @retval None
1425   */
LL_APB2_GRP1_ForceReset(uint32_t Periphs)1426 __STATIC_INLINE void LL_APB2_GRP1_ForceReset(uint32_t Periphs)
1427 {
1428   SET_BIT(RCC->APB2RSTR, Periphs);
1429 }
1430 
1431 /**
1432   * @brief  Release APB2 peripherals reset.
1433   * @rmtoll APB2RSTR      TIM1RST        LL_APB2_GRP1_ReleaseReset\n
1434   *         APB2RSTR      SPI1RST        LL_APB2_GRP1_ReleaseReset\n
1435   *         APB2RSTR      USART1RST      LL_APB2_GRP1_ReleaseReset\n
1436   *         APB2RSTR      TIM16RST       LL_APB2_GRP1_ReleaseReset\n
1437   *         APB2RSTR      TIM17RST       LL_APB2_GRP1_ReleaseReset\n
1438   *         APB2RSTR      SAI1RST        LL_APB2_GRP1_ReleaseReset
1439   * @param  Periphs This parameter can be a combination of the following values:
1440   *         @arg @ref LL_APB2_GRP1_PERIPH_ALL
1441   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM1
1442   *         @arg @ref LL_APB2_GRP1_PERIPH_SPI1 (*)
1443   *         @arg @ref LL_APB2_GRP1_PERIPH_USART1
1444   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM16
1445   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*)
1446   *         @arg @ref LL_APB2_GRP1_PERIPH_SAI1 (*)
1447   *
1448   *         (*) value not defined in all devices.
1449   * @retval None
1450   */
LL_APB2_GRP1_ReleaseReset(uint32_t Periphs)1451 __STATIC_INLINE void LL_APB2_GRP1_ReleaseReset(uint32_t Periphs)
1452 {
1453   CLEAR_BIT(RCC->APB2RSTR, Periphs);
1454 }
1455 
1456 /**
1457   * @brief  Enable APB2 peripheral clocks in Sleep and Stop modes
1458   * @rmtoll APB2SMENR     TIM1SMEN       LL_APB2_GRP1_EnableClockStopSleep\n
1459   *         APB2SMENR     SPI1SMEN       LL_APB2_GRP1_EnableClockStopSleep\n
1460   *         APB2SMENR     USART1SMEN     LL_APB2_GRP1_EnableClockStopSleep\n
1461   *         APB2SMENR     TIM16SMEN      LL_APB2_GRP1_EnableClockStopSleep\n
1462   *         APB2SMENR     TIM17SMEN      LL_APB2_GRP1_EnableClockStopSleep\n
1463   *         APB2SMENR     SAI1SMEN       LL_APB2_GRP1_EnableClockStopSleep
1464   * @param  Periphs This parameter can be a combination of the following values:
1465   *         @arg @ref LL_APB2_GRP1_PERIPH_ALL
1466   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM1
1467   *         @arg @ref LL_APB2_GRP1_PERIPH_SPI1 (*)
1468   *         @arg @ref LL_APB2_GRP1_PERIPH_USART1
1469   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM16
1470   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*)
1471   *         @arg @ref LL_APB2_GRP1_PERIPH_SAI1 (*)
1472   *
1473   *         (*) value not defined in all devices.
1474   * @retval None
1475   */
LL_APB2_GRP1_EnableClockStopSleep(uint32_t Periphs)1476 __STATIC_INLINE void LL_APB2_GRP1_EnableClockStopSleep(uint32_t Periphs)
1477 {
1478   __IO uint32_t tmpreg;
1479   SET_BIT(RCC->APB2SMENR, Periphs);
1480   /* Delay after an RCC peripheral clock enabling */
1481   tmpreg = READ_BIT(RCC->APB2SMENR, Periphs);
1482   (void)tmpreg;
1483 }
1484 
1485 
1486 /**
1487   * @brief  Check if APB2 peripheral clocks in Sleep and Stop modes is enabled or not
1488   * @rmtoll APB2SMENR     TIM1SMEN       LL_APB2_GRP1_IsEnabledClockStopSleep\n
1489   *         APB2SMENR     SPI1SMEN       LL_APB2_GRP1_IsEnabledClockStopSleep\n
1490   *         APB2SMENR     USART1SMEN     LL_APB2_GRP1_IsEnabledClockStopSleep\n
1491   *         APB2SMENR     TIM16SMEN      LL_APB2_GRP1_IsEnabledClockStopSleep\n
1492   *         APB2SMENR     TIM17SMEN      LL_APB2_GRP1_IsEnabledClockStopSleep\n
1493   *         APB2SMENR     SAI1SMEN       LL_APB2_GRP1_IsEnabledClockStopSleep
1494   * @param  Periphs This parameter can be a combination of the following values:
1495   *         @arg @ref LL_APB2_GRP1_PERIPH_ALL
1496   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM1
1497   *         @arg @ref LL_APB2_GRP1_PERIPH_SPI1 (*)
1498   *         @arg @ref LL_APB2_GRP1_PERIPH_USART1
1499   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM16
1500   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*)
1501   *         @arg @ref LL_APB2_GRP1_PERIPH_SAI1 (*)
1502   *
1503   *         (*) value not defined in all devices.
1504   * @retval State of Periphs (1 or 0).
1505   */
LL_APB2_GRP1_IsEnabledClockStopSleep(uint32_t Periphs)1506 __STATIC_INLINE uint32_t LL_APB2_GRP1_IsEnabledClockStopSleep(uint32_t Periphs)
1507 {
1508   return ((READ_BIT(RCC->APB2SMENR, Periphs) == Periphs) ? 1UL : 0UL);
1509 }
1510 
1511 /**
1512   * @brief  Disable APB2 peripheral clocks in Sleep and Stop modes
1513   * @rmtoll APB2SMENR     TIM1SMEN        LL_APB2_GRP1_DisableClockStopSleep\n
1514   *         APB2SMENR     SPI1SMEN        LL_APB2_GRP1_DisableClockStopSleep\n
1515   *         APB2SMENR     USART1SMEN      LL_APB2_GRP1_DisableClockStopSleep\n
1516   *         APB2SMENR     TIM16SMEN       LL_APB2_GRP1_DisableClockStopSleep\n
1517   *         APB2SMENR     TIM17SMEN       LL_APB2_GRP1_DisableClockStopSleep\n
1518   *         APB2SMENR     SAI1SMEN        LL_APB2_GRP1_DisableClockStopSleep
1519   * @param  Periphs This parameter can be a combination of the following values:
1520   *         @arg @ref LL_APB2_GRP1_PERIPH_ALL
1521   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM1
1522   *         @arg @ref LL_APB2_GRP1_PERIPH_SPI1 (*)
1523   *         @arg @ref LL_APB2_GRP1_PERIPH_USART1
1524   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM16
1525   *         @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*)
1526   *         @arg @ref LL_APB2_GRP1_PERIPH_SAI1 (*)
1527   *
1528   *         (*) value not defined in all devices.
1529   * @retval None
1530   */
LL_APB2_GRP1_DisableClockStopSleep(uint32_t Periphs)1531 __STATIC_INLINE void LL_APB2_GRP1_DisableClockStopSleep(uint32_t Periphs)
1532 {
1533   CLEAR_BIT(RCC->APB2SMENR, Periphs);
1534 }
1535 
1536 /**
1537   * @}
1538   */
1539 
1540 
1541 /** @defgroup BUS_LL_EF_APB7 APB7
1542   * @{
1543   */
1544 
1545 /**
1546   * @brief  Enable APB7 peripherals clock.
1547   * @rmtoll APB7ENR      SYSCFGEN       LL_APB7_GRP1_EnableClock\n
1548   *         APB7ENR      SPI3EN         LL_APB7_GRP1_EnableClock\n
1549   *         APB7ENR      LPUART1EN      LL_APB7_GRP1_EnableClock\n
1550   *         APB7ENR      I2C3EN         LL_APB7_GRP1_EnableClock\n
1551   *         APB7ENR      LPTIM1EN       LL_APB7_GRP1_EnableClock\n
1552   *         APB7ENR      COMPEN         LL_APB7_GRP1_EnableClock\n
1553   *         APB7ENR      RTCAPBEN       LL_APB7_GRP1_EnableClock
1554   * @param  Periphs This parameter can be a combination of the following values:
1555   *         @arg @ref LL_APB7_GRP1_PERIPH_ALL
1556   *         @arg @ref LL_APB7_GRP1_PERIPH_SYSCFG
1557   *         @arg @ref LL_APB7_GRP1_PERIPH_SPI3
1558   *         @arg @ref LL_APB7_GRP1_PERIPH_LPUART1
1559   *         @arg @ref LL_APB7_GRP1_PERIPH_I2C3
1560   *         @arg @ref LL_APB7_GRP1_PERIPH_LPTIM1
1561   *         @arg @ref LL_APB7_GRP1_PERIPH_COMP (*)
1562   *         @arg @ref LL_APB7_GRP1_PERIPH_RTCAPB
1563   *
1564   *         (*) value not defined in all devices.
1565   * @retval None
1566   */
LL_APB7_GRP1_EnableClock(uint32_t Periphs)1567 __STATIC_INLINE void LL_APB7_GRP1_EnableClock(uint32_t Periphs)
1568 {
1569   __IO uint32_t tmpreg;
1570   SET_BIT(RCC->APB7ENR, Periphs);
1571   /* Delay after an RCC peripheral clock enabling */
1572   tmpreg = READ_BIT(RCC->APB7ENR, Periphs);
1573   (void)tmpreg;
1574 }
1575 
1576 /**
1577   * @brief  Check if APB7 peripheral clock is enabled or not
1578   * @rmtoll APB7ENR      SYSCFGEN       LL_APB7_GRP1_IsEnabledClock\n
1579   *         APB7ENR      SPI3EN         LL_APB7_GRP1_IsEnabledClock\n
1580   *         APB7ENR      LPUART1EN      LL_APB7_GRP1_IsEnabledClock\n
1581   *         APB7ENR      I2C3EN         LL_APB7_GRP1_IsEnabledClock\n
1582   *         APB7ENR      LPTIM1EN       LL_APB7_GRP1_IsEnabledClock\n
1583   *         APB7ENR      COMPEN         LL_APB7_GRP1_IsEnabledClock\n
1584   *         APB7ENR      RTCAPBEN       LL_APB7_GRP1_IsEnabledClock
1585   * @param  Periphs This parameter can be a combination of the following values:
1586   *         @arg @ref LL_APB7_GRP1_PERIPH_ALL
1587   *         @arg @ref LL_APB7_GRP1_PERIPH_SYSCFG
1588   *         @arg @ref LL_APB7_GRP1_PERIPH_SPI3
1589   *         @arg @ref LL_APB7_GRP1_PERIPH_LPUART1
1590   *         @arg @ref LL_APB7_GRP1_PERIPH_I2C3
1591   *         @arg @ref LL_APB7_GRP1_PERIPH_LPTIM1
1592   *         @arg @ref LL_APB7_GRP1_PERIPH_COMP (*)
1593   *         @arg @ref LL_APB7_GRP1_PERIPH_RTCAPB
1594   *
1595   *         (*) value not defined in all devices.
1596   * @retval State of Periphs (1 or 0).
1597   */
LL_APB7_GRP1_IsEnabledClock(uint32_t Periphs)1598 __STATIC_INLINE uint32_t LL_APB7_GRP1_IsEnabledClock(uint32_t Periphs)
1599 {
1600   return ((READ_BIT(RCC->APB7ENR, Periphs) == Periphs) ? 1UL : 0UL);
1601 }
1602 
1603 /**
1604   * @brief  Disable APB2 peripherals clock.
1605   * @rmtoll APB7ENR      SYSCFGEN       LL_APB7_GRP1_DisableClock\n
1606   *         APB7ENR      SPI3EN         LL_APB7_GRP1_DisableClock\n
1607   *         APB7ENR      LPUART1EN      LL_APB7_GRP1_DisableClock\n
1608   *         APB7ENR      I2C3EN         LL_APB7_GRP1_DisableClock\n
1609   *         APB7ENR      LPTIM1EN       LL_APB7_GRP1_DisableClock\n
1610   *         APB7ENR      COMPEN         LL_APB7_GRP1_DisableClock\n
1611   *         APB7ENR      RTCAPBEN       LL_APB7_GRP1_DisableClock
1612   * @param  Periphs This parameter can be a combination of the following values:
1613   *         @arg @ref LL_APB7_GRP1_PERIPH_ALL
1614   *         @arg @ref LL_APB7_GRP1_PERIPH_SYSCFG
1615   *         @arg @ref LL_APB7_GRP1_PERIPH_SPI3
1616   *         @arg @ref LL_APB7_GRP1_PERIPH_LPUART1
1617   *         @arg @ref LL_APB7_GRP1_PERIPH_I2C3
1618   *         @arg @ref LL_APB7_GRP1_PERIPH_LPTIM1
1619   *         @arg @ref LL_APB7_GRP1_PERIPH_COMP (*)
1620   *         @arg @ref LL_APB7_GRP1_PERIPH_RTCAPB
1621   *
1622   *         (*) value not defined in all devices.
1623   * @retval None
1624   */
LL_APB7_GRP1_DisableClock(uint32_t Periphs)1625 __STATIC_INLINE void LL_APB7_GRP1_DisableClock(uint32_t Periphs)
1626 {
1627   CLEAR_BIT(RCC->APB7ENR, Periphs);
1628 }
1629 
1630 /**
1631   * @brief  Force APB7 peripherals reset.
1632   * @rmtoll APB7RSTR     SYSCFGRST     LL_APB7_GRP1_ForceReset\n
1633   *         APB7RSTR     SPI3RST       LL_APB7_GRP1_ForceReset\n
1634   *         APB7RSTR     LPUART1RST    LL_APB7_GRP1_ForceReset\n
1635   *         APB7RSTR     I2C3RST       LL_APB7_GRP1_ForceReset\n
1636   *         APB7RSTR     LPTIM1RST     LL_APB7_GRP1_ForceReset\n
1637   *         APB7RSTR     COMPRST       LL_APB7_GRP1_ForceReset\n
1638   * @param  Periphs This parameter can be a combination of the following values:
1639   *         @arg @ref LL_APB7_GRP1_PERIPH_ALL
1640   *         @arg @ref LL_APB7_GRP1_PERIPH_SYSCFG
1641   *         @arg @ref LL_APB7_GRP1_PERIPH_SPI3
1642   *         @arg @ref LL_APB7_GRP1_PERIPH_LPUART1
1643   *         @arg @ref LL_APB7_GRP1_PERIPH_I2C3
1644   *         @arg @ref LL_APB7_GRP1_PERIPH_LPTIM1
1645   *         @arg @ref LL_APB7_GRP1_PERIPH_COMP (*)
1646   *
1647   *         (*) value not defined in all devices.
1648   * @retval None
1649   */
LL_APB7_GRP1_ForceReset(uint32_t Periphs)1650 __STATIC_INLINE void LL_APB7_GRP1_ForceReset(uint32_t Periphs)
1651 {
1652   SET_BIT(RCC->APB7RSTR, Periphs);
1653 }
1654 
1655 /**
1656   * @brief  Release APB7 peripherals reset.
1657   * @rmtoll APB7RSTR     SYSCFGRST     LL_APB7_GRP1_ReleaseReset\n
1658   *         APB7RSTR     SPI3RST       LL_APB7_GRP1_ReleaseReset\n
1659   *         APB7RSTR     LPUART1RST    LL_APB7_GRP1_ReleaseReset\n
1660   *         APB7RSTR     I2C3RST       LL_APB7_GRP1_ReleaseReset\n
1661   *         APB7RSTR     LPTIM1RST     LL_APB7_GRP1_ReleaseReset\n
1662   *         APB7RSTR     COMPRST       LL_APB7_GRP1_ReleaseReset\n
1663   * @param  Periphs This parameter can be a combination of the following values:
1664   *         @arg @ref LL_APB7_GRP1_PERIPH_ALL
1665   *         @arg @ref LL_APB7_GRP1_PERIPH_SYSCFG
1666   *         @arg @ref LL_APB7_GRP1_PERIPH_SPI3
1667   *         @arg @ref LL_APB7_GRP1_PERIPH_LPUART1
1668   *         @arg @ref LL_APB7_GRP1_PERIPH_I2C3
1669   *         @arg @ref LL_APB7_GRP1_PERIPH_LPTIM1
1670   *         @arg @ref LL_APB7_GRP1_PERIPH_COMP (*)
1671   *
1672   *         (*) value not defined in all devices.
1673   * @retval None
1674   */
LL_APB7_GRP1_ReleaseReset(uint32_t Periphs)1675 __STATIC_INLINE void LL_APB7_GRP1_ReleaseReset(uint32_t Periphs)
1676 {
1677   CLEAR_BIT(RCC->APB7RSTR, Periphs);
1678 }
1679 
1680 /**
1681   * @brief  Enable APB7 peripheral clocks in Sleep and Stop modes
1682   * @rmtoll APB7SMENR    SYSCFGSMEN    LL_APB7_GRP1_EnableClockStopSleep\n
1683   *         APB7SMENR    SPI3SMEN      LL_APB7_GRP1_EnableClockStopSleep\n
1684   *         APB7SMENR    LPUART1SMEN   LL_APB7_GRP1_EnableClockStopSleep\n
1685   *         APB7SMENR    I2C3SMEN      LL_APB7_GRP1_EnableClockStopSleep\n
1686   *         APB7SMENR    LPTIM1SMEN    LL_APB7_GRP1_EnableClockStopSleep\n
1687   *         APB7SMENR    COMPSMEN      LL_APB7_GRP1_EnableClockStopSleep\n
1688   *         APB7SMENR    RTCAPBSMEN    LL_APB7_GRP1_EnableClockStopSleep
1689   * @param  Periphs This parameter can be a combination of the following values:
1690   *         @arg @ref LL_APB7_GRP1_PERIPH_ALL
1691   *         @arg @ref LL_APB7_GRP1_PERIPH_SYSCFG
1692   *         @arg @ref LL_APB7_GRP1_PERIPH_SPI3
1693   *         @arg @ref LL_APB7_GRP1_PERIPH_LPUART1
1694   *         @arg @ref LL_APB7_GRP1_PERIPH_I2C3
1695   *         @arg @ref LL_APB7_GRP1_PERIPH_LPTIM1
1696   *         @arg @ref LL_APB7_GRP1_PERIPH_COMP (*)
1697   *         @arg @ref LL_APB7_GRP1_PERIPH_RTCAPB
1698   *
1699   *         (*) value not defined in all devices.
1700   * @retval None
1701   */
LL_APB7_GRP1_EnableClockStopSleep(uint32_t Periphs)1702 __STATIC_INLINE void LL_APB7_GRP1_EnableClockStopSleep(uint32_t Periphs)
1703 {
1704   __IO uint32_t tmpreg;
1705   SET_BIT(RCC->APB7SMENR, Periphs);
1706   /* Delay after an RCC peripheral clock enabling */
1707   tmpreg = READ_BIT(RCC->APB7SMENR, Periphs);
1708   (void)tmpreg;
1709 }
1710 
1711 
1712 /**
1713   * @brief  Check if APB7 peripheral clocks in Sleep and Stop modes is enabled or not
1714   * @rmtoll APB7SMENR    SYSCFGSMEN    LL_APB7_GRP1_IsEnabledClockStopSleep\n
1715   *         APB7SMENR    SPI3SMEN      LL_APB7_GRP1_IsEnabledClockStopSleep\n
1716   *         APB7SMENR    LPUART1SMEN   LL_APB7_GRP1_IsEnabledClockStopSleep\n
1717   *         APB7SMENR    I2C3SMEN      LL_APB7_GRP1_IsEnabledClockStopSleep\n
1718   *         APB7SMENR    LPTIM1SMEN    LL_APB7_GRP1_IsEnabledClockStopSleep\n
1719   *         APB7SMENR    COMPSMEN      LL_APB7_GRP1_IsEnabledClockStopSleep\n
1720   *         APB7SMENR    RTCAPBSMEN    LL_APB7_GRP1_IsEnabledClockStopSleep
1721   * @param  Periphs This parameter can be a combination of the following values:
1722   *         @arg @ref LL_APB7_GRP1_PERIPH_ALL
1723   *         @arg @ref LL_APB7_GRP1_PERIPH_SYSCFG
1724   *         @arg @ref LL_APB7_GRP1_PERIPH_SPI3
1725   *         @arg @ref LL_APB7_GRP1_PERIPH_LPUART1
1726   *         @arg @ref LL_APB7_GRP1_PERIPH_I2C3
1727   *         @arg @ref LL_APB7_GRP1_PERIPH_LPTIM1
1728   *         @arg @ref LL_APB7_GRP1_PERIPH_COMP (*)
1729   *         @arg @ref LL_APB7_GRP1_PERIPH_RTCAPB
1730   *
1731   *         (*) value not defined in all devices.
1732   * @retval State of Periphs (1 or 0).
1733   */
LL_APB7_GRP1_IsEnabledClockStopSleep(uint32_t Periphs)1734 __STATIC_INLINE uint32_t LL_APB7_GRP1_IsEnabledClockStopSleep(uint32_t Periphs)
1735 {
1736   return ((READ_BIT(RCC->APB7SMENR, Periphs) == Periphs) ? 1UL : 0UL);
1737 }
1738 
1739 /**
1740   * @brief  Disable APB7 peripheral clocks in Sleep and Stop modes
1741   * @rmtoll APB7SMENR    SYSCFGSMEN     LL_APB7_GRP1_DisableClockStopSleep\n
1742   *         APB7SMENR    SPI3SMEN       LL_APB7_GRP1_DisableClockStopSleep\n
1743   *         APB7SMENR    LPUART1SMEN    LL_APB7_GRP1_DisableClockStopSleep\n
1744   *         APB7SMENR    I2C3SMEN       LL_APB7_GRP1_DisableClockStopSleep\n
1745   *         APB7SMENR    LPTIM1SMEN     LL_APB7_GRP1_DisableClockStopSleep\n
1746   *         APB7SMENR    COMPSMEN       LL_APB7_GRP1_DisableClockStopSleep\n
1747   *         APB7SMENR    RTCAPBSMEN     LL_APB7_GRP1_DisableClockStopSleep
1748   * @param  Periphs This parameter can be a combination of the following values:
1749   *         @arg @ref LL_APB7_GRP1_PERIPH_ALL
1750   *         @arg @ref LL_APB7_GRP1_PERIPH_SYSCFG
1751   *         @arg @ref LL_APB7_GRP1_PERIPH_SPI3
1752   *         @arg @ref LL_APB7_GRP1_PERIPH_LPUART1
1753   *         @arg @ref LL_APB7_GRP1_PERIPH_I2C3
1754   *         @arg @ref LL_APB7_GRP1_PERIPH_LPTIM1
1755   *         @arg @ref LL_APB7_GRP1_PERIPH_COMP (*)
1756   *         @arg @ref LL_APB7_GRP1_PERIPH_RTCAPB
1757   *
1758   *         (*) value not defined in all devices.
1759   * @retval None
1760   */
LL_APB7_GRP1_DisableClockStopSleep(uint32_t Periphs)1761 __STATIC_INLINE void LL_APB7_GRP1_DisableClockStopSleep(uint32_t Periphs)
1762 {
1763   CLEAR_BIT(RCC->APB7SMENR, Periphs);
1764 }
1765 
1766 /**
1767   * @}
1768   */
1769 
1770 /**
1771   * @}
1772   */
1773 
1774 /**
1775   * @}
1776   */
1777 
1778 #endif /* defined(RCC) */
1779 
1780 /**
1781   * @}
1782   */
1783 
1784 #ifdef __cplusplus
1785 }
1786 #endif
1787 
1788 #endif /* STM32WBAxx_LL_BUS_H */
1789 
1790