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