mirror of
				https://github.com/portapack-mayhem/mayhem-firmware.git
				synced 2025-10-31 07:55:36 +00:00 
			
		
		
		
	
		
			
	
	
		
			663 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			663 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|   | /*
 | ||
|  |     ChibiOS/RT - Copyright (C) 2006-2013 Giovanni Di Sirio | ||
|  | 
 | ||
|  |     Licensed under the Apache License, Version 2.0 (the "License"); | ||
|  |     you may not use this file except in compliance with the License. | ||
|  |     You may obtain a copy of the License at | ||
|  | 
 | ||
|  |         http://www.apache.org/licenses/LICENSE-2.0
 | ||
|  | 
 | ||
|  |     Unless required by applicable law or agreed to in writing, software | ||
|  |     distributed under the License is distributed on an "AS IS" BASIS, | ||
|  |     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
|  |     See the License for the specific language governing permissions and | ||
|  |     limitations under the License. | ||
|  | */ | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @file    STM32L1xx/stm32_rcc.h | ||
|  |  * @brief   RCC helper driver header. | ||
|  |  * @note    This file requires definitions from the ST header file | ||
|  |  *          @p stm32l1xx.h. | ||
|  |  * | ||
|  |  * @addtogroup STM32L1xx_RCC | ||
|  |  * @{ | ||
|  |  */ | ||
|  | 
 | ||
|  | #ifndef _STM32_RCC_
 | ||
|  | #define _STM32_RCC_
 | ||
|  | 
 | ||
|  | /*===========================================================================*/ | ||
|  | /* Driver constants.                                                         */ | ||
|  | /*===========================================================================*/ | ||
|  | 
 | ||
|  | /*===========================================================================*/ | ||
|  | /* Driver pre-compile time settings.                                         */ | ||
|  | /*===========================================================================*/ | ||
|  | 
 | ||
|  | /*===========================================================================*/ | ||
|  | /* Derived constants and error checks.                                       */ | ||
|  | /*===========================================================================*/ | ||
|  | 
 | ||
|  | /*===========================================================================*/ | ||
|  | /* Driver data structures and types.                                         */ | ||
|  | /*===========================================================================*/ | ||
|  | 
 | ||
|  | /*===========================================================================*/ | ||
|  | /* Driver macros.                                                            */ | ||
|  | /*===========================================================================*/ | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @name    Generic RCC operations | ||
|  |  * @{ | ||
|  |  */ | ||
|  | /**
 | ||
|  |  * @brief   Enables the clock of one or more peripheral on the APB1 bus. | ||
|  |  * | ||
|  |  * @param[in] mask      APB1 peripherals mask | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccEnableAPB1(mask, lp) {                                           \
 | ||
|  |   RCC->APB1ENR |= (mask);                                                   \ | ||
|  |   if (lp)                                                                   \ | ||
|  |     RCC->APB1LPENR |= (mask);                                               \ | ||
|  | } | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Disables the clock of one or more peripheral on the APB1 bus. | ||
|  |  * | ||
|  |  * @param[in] mask      APB1 peripherals mask | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccDisableAPB1(mask, lp) {                                          \
 | ||
|  |   RCC->APB1ENR &= ~(mask);                                                  \ | ||
|  |   if (lp)                                                                   \ | ||
|  |     RCC->APB1LPENR &= ~(mask);                                              \ | ||
|  | } | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Resets one or more peripheral on the APB1 bus. | ||
|  |  * | ||
|  |  * @param[in] mask      APB1 peripherals mask | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccResetAPB1(mask) {                                                \
 | ||
|  |   RCC->APB1RSTR |= (mask);                                                  \ | ||
|  |   RCC->APB1RSTR = 0;                                                        \ | ||
|  | } | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Enables the clock of one or more peripheral on the APB2 bus. | ||
|  |  * | ||
|  |  * @param[in] mask      APB2 peripherals mask | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccEnableAPB2(mask, lp) {                                           \
 | ||
|  |   RCC->APB2ENR |= (mask);                                                   \ | ||
|  |   if (lp)                                                                   \ | ||
|  |     RCC->APB2LPENR |= (mask);                                               \ | ||
|  | } | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Disables the clock of one or more peripheral on the APB2 bus. | ||
|  |  * | ||
|  |  * @param[in] mask      APB2 peripherals mask | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccDisableAPB2(mask, lp) {                                          \
 | ||
|  |   RCC->APB2ENR &= ~(mask);                                                  \ | ||
|  |   if (lp)                                                                   \ | ||
|  |     RCC->APB2LPENR &= ~(mask);                                              \ | ||
|  | } | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Resets one or more peripheral on the APB2 bus. | ||
|  |  * | ||
|  |  * @param[in] mask      APB2 peripherals mask | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccResetAPB2(mask) {                                                \
 | ||
|  |   RCC->APB2RSTR |= (mask);                                                  \ | ||
|  |   RCC->APB2RSTR = 0;                                                        \ | ||
|  | } | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Enables the clock of one or more peripheral on the AHB bus. | ||
|  |  * | ||
|  |  * @param[in] mask      AHB peripherals mask | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccEnableAHB(mask, lp) {                                            \
 | ||
|  |   RCC->AHBENR |= (mask);                                                    \ | ||
|  |   if (lp)                                                                   \ | ||
|  |     RCC->AHBLPENR |= (mask);                                                \ | ||
|  | } | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Disables the clock of one or more peripheral on the AHB bus. | ||
|  |  * | ||
|  |  * @param[in] mask      AHB peripherals mask | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccDisableAHB(mask, lp) {                                           \
 | ||
|  |   RCC->AHBENR &= ~(mask);                                                   \ | ||
|  |   if (lp)                                                                   \ | ||
|  |     RCC->AHBLPENR &= ~(mask);                                               \ | ||
|  | } | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Resets one or more peripheral on the AHB bus. | ||
|  |  * | ||
|  |  * @param[in] mask      AHB peripherals mask | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccResetAHB(mask) {                                                 \
 | ||
|  |   RCC->AHBRSTR |= (mask);                                                   \ | ||
|  |   RCC->AHBRSTR = 0;                                                         \ | ||
|  | } | ||
|  | /** @} */ | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @name    ADC peripherals specific RCC operations | ||
|  |  * @{ | ||
|  |  */ | ||
|  | /**
 | ||
|  |  * @brief   Enables the ADC1 peripheral clock. | ||
|  |  * | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccEnableADC1(lp) rccEnableAPB2(RCC_APB2ENR_ADC1EN, lp)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Disables the ADC1 peripheral clock. | ||
|  |  * | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccDisableADC1(lp) rccDisableAPB2(RCC_APB2ENR_ADC1EN, lp)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Resets the ADC1 peripheral. | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccResetADC1() rccResetAPB2(RCC_APB2RSTR_ADC1RST)
 | ||
|  | /** @} */ | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @name    DMA peripheral specific RCC operations | ||
|  |  * @{ | ||
|  |  */ | ||
|  | /**
 | ||
|  |  * @brief   Enables the DMA1 peripheral clock. | ||
|  |  * | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccEnableDMA1(lp) rccEnableAHB(RCC_AHBENR_DMA1EN, lp)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Disables the DMA1 peripheral clock. | ||
|  |  * | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccDisableDMA1(lp) rccDisableAHB(RCC_AHBENR_DMA1EN, lp)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Resets the DMA1 peripheral. | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccResetDMA1() rccResetAHB(RCC_AHBRSTR_DMA1RST)
 | ||
|  | /** @} */ | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @name    PWR interface specific RCC operations | ||
|  |  * @{ | ||
|  |  */ | ||
|  | /**
 | ||
|  |  * @brief   Enables the PWR interface clock. | ||
|  |  * @note    The @p lp parameter is ignored in this family. | ||
|  |  * | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccEnablePWRInterface(lp) rccEnableAPB1(RCC_APB1ENR_PWREN, lp)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Disables PWR interface clock. | ||
|  |  * @note    The @p lp parameter is ignored in this family. | ||
|  |  * | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccDisablePWRInterface(lp) rccDisableAPB1(RCC_APB1ENR_PWREN, lp)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Resets the PWR interface. | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccResetPWRInterface() rccResetAPB1(RCC_APB1RSTR_PWRRST)
 | ||
|  | /** @} */ | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @name    I2C peripherals specific RCC operations | ||
|  |  * @{ | ||
|  |  */ | ||
|  | /**
 | ||
|  |  * @brief   Enables the I2C1 peripheral clock. | ||
|  |  * | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccEnableI2C1(lp) rccEnableAPB1(RCC_APB1ENR_I2C1EN, lp)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Disables the I2C1 peripheral clock. | ||
|  |  * | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccDisableI2C1(lp) rccDisableAPB1(RCC_APB1ENR_I2C1EN, lp)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Resets the I2C1 peripheral. | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccResetI2C1() rccResetAPB1(RCC_APB1RSTR_I2C1RST)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Enables the I2C2 peripheral clock. | ||
|  |  * | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccEnableI2C2(lp) rccEnableAPB1(RCC_APB1ENR_I2C2EN, lp)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Disables the I2C2 peripheral clock. | ||
|  |  * | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccDisableI2C2(lp) rccDisableAPB1(RCC_APB1ENR_I2C2EN, lp)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Resets the I2C2 peripheral. | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccResetI2C2() rccResetAPB1(RCC_APB1RSTR_I2C2RST)
 | ||
|  | /** @} */ | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @name    SPI peripherals specific RCC operations | ||
|  |  * @{ | ||
|  |  */ | ||
|  | /**
 | ||
|  |  * @brief   Enables the SPI1 peripheral clock. | ||
|  |  * | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccEnableSPI1(lp) rccEnableAPB2(RCC_APB2ENR_SPI1EN, lp)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Disables the SPI1 peripheral clock. | ||
|  |  * | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccDisableSPI1(lp) rccDisableAPB2(RCC_APB2ENR_SPI1EN, lp)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Resets the SPI1 peripheral. | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccResetSPI1() rccResetAPB2(RCC_APB2RSTR_SPI1RST)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Enables the SPI2 peripheral clock. | ||
|  |  * | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccEnableSPI2(lp) rccEnableAPB1(RCC_APB1ENR_SPI2EN, lp)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Disables the SPI2 peripheral clock. | ||
|  |  * | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccDisableSPI2(lp) rccDisableAPB1(RCC_APB1ENR_SPI2EN, lp)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Resets the SPI2 peripheral. | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccResetSPI2() rccResetAPB1(RCC_APB1RSTR_SPI2RST)
 | ||
|  | /** @} */ | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @name    TIM peripherals specific RCC operations | ||
|  |  * @{ | ||
|  |  */ | ||
|  | /**
 | ||
|  |  * @brief   Enables the TIM2 peripheral clock. | ||
|  |  * | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccEnableTIM2(lp) rccEnableAPB1(RCC_APB1ENR_TIM2EN, lp)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Disables the TIM2 peripheral clock. | ||
|  |  * | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccDisableTIM2(lp) rccDisableAPB1(RCC_APB1ENR_TIM2EN, lp)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Resets the TIM2 peripheral. | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccResetTIM2() rccResetAPB1(RCC_APB1RSTR_TIM2RST)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Enables the TIM3 peripheral clock. | ||
|  |  * | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccEnableTIM3(lp) rccEnableAPB1(RCC_APB1ENR_TIM3EN, lp)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Disables the TIM3 peripheral clock. | ||
|  |  * | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccDisableTIM3(lp) rccDisableAPB1(RCC_APB1ENR_TIM3EN, lp)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Resets the TIM3 peripheral. | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccResetTIM3() rccResetAPB1(RCC_APB1RSTR_TIM3RST)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Enables the TIM4 peripheral clock. | ||
|  |  * | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccEnableTIM4(lp) rccEnableAPB1(RCC_APB1ENR_TIM4EN, lp)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Disables the TIM4 peripheral clock. | ||
|  |  * | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccDisableTIM4(lp) rccDisableAPB1(RCC_APB1ENR_TIM4EN, lp)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Resets the TIM4 peripheral. | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccResetTIM4() rccResetAPB1(RCC_APB1RSTR_TIM4RST)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Enables the TIM9 peripheral clock. | ||
|  |  * @note    The @p lp parameter is ignored in this family. | ||
|  |  * | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccEnableTIM9(lp) rccEnableAPB2(RCC_APB2ENR_TIM9EN, lp)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Disables the TIM9 peripheral clock. | ||
|  |  * @note    The @p lp parameter is ignored in this family. | ||
|  |  * | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccDisableTIM9(lp) rccDisableAPB2(RCC_APB2ENR_TIM9EN, lp)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Resets the TIM9 peripheral. | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccResetTIM9() rccResetAPB2(RCC_APB2RSTR_TIM9RST)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Enables the TIM10 peripheral clock. | ||
|  |  * @note    The @p lp parameter is ignored in this family. | ||
|  |  * | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccEnableTIM10(lp) rccEnableAPB2(RCC_APB2ENR_TIM10EN, lp)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Disables the TIM10 peripheral clock. | ||
|  |  * @note    The @p lp parameter is ignored in this family. | ||
|  |  * | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccDisableTIM10(lp) rccDisableAPB2(RCC_APB2ENR_TIM10EN, lp)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Resets the TIM10 peripheral. | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccResetTIM10() rccResetAPB2(RCC_APB2RSTR_TIM10RST)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Enables the TIM10 peripheral clock. | ||
|  |  * @note    The @p lp parameter is ignored in this family. | ||
|  |  * | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccEnableTIM11(lp) rccEnableAPB2(RCC_APB2ENR_TIM11EN, lp)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Disables the TIM11 peripheral clock. | ||
|  |  * @note    The @p lp parameter is ignored in this family. | ||
|  |  * | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccDisableTIM11(lp) rccDisableAPB2(RCC_APB2ENR_TIM11EN, lp)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Resets the TIM11 peripheral. | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccResetTIM11() rccResetAPB2(RCC_APB2RSTR_TIM11RST)
 | ||
|  | 
 | ||
|  | /** @} */ | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @name    USART/UART peripherals specific RCC operations | ||
|  |  * @{ | ||
|  |  */ | ||
|  | /**
 | ||
|  |  * @brief   Enables the USART1 peripheral clock. | ||
|  |  * | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccEnableUSART1(lp) rccEnableAPB2(RCC_APB2ENR_USART1EN, lp)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Disables the USART1 peripheral clock. | ||
|  |  * | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccDisableUSART1(lp) rccDisableAPB2(RCC_APB2ENR_USART1EN, lp)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Resets the USART1 peripheral. | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccResetUSART1() rccResetAPB2(RCC_APB2RSTR_USART1RST)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Enables the USART2 peripheral clock. | ||
|  |  * | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccEnableUSART2(lp) rccEnableAPB1(RCC_APB1ENR_USART2EN, lp)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Disables the USART2 peripheral clock. | ||
|  |  * | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccDisableUSART2(lp) rccDisableAPB1(RCC_APB1ENR_USART2EN, lp)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Resets the USART2 peripheral. | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccResetUSART2() rccResetAPB1(RCC_APB1RSTR_USART2RST)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Enables the USART3 peripheral clock. | ||
|  |  * | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccEnableUSART3(lp) rccEnableAPB1(RCC_APB1ENR_USART3EN, lp)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Disables the USART3 peripheral clock. | ||
|  |  * | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccDisableUSART3(lp) rccDisableAPB1(RCC_APB1ENR_USART3EN, lp)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Resets the USART3 peripheral. | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccResetUSART3() rccResetAPB1(RCC_APB1RSTR_USART3RST)
 | ||
|  | /** @} */ | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @name    USB peripheral specific RCC operations | ||
|  |  * @{ | ||
|  |  */ | ||
|  | /**
 | ||
|  |  * @brief   Enables the USB peripheral clock. | ||
|  |  * | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccEnableUSB(lp) rccEnableAPB1(RCC_APB1ENR_USBEN, lp)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Disables the USB peripheral clock. | ||
|  |  * | ||
|  |  * @param[in] lp        low power enable flag | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccDisableUSB(lp) rccDisableAPB1(RCC_APB1ENR_USBEN, lp)
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @brief   Resets the USB peripheral. | ||
|  |  * | ||
|  |  * @api | ||
|  |  */ | ||
|  | #define rccResetUSB() rccResetAPB1(RCC_APB1RSTR_USBRST)
 | ||
|  | /** @} */ | ||
|  | 
 | ||
|  | /*===========================================================================*/ | ||
|  | /* External declarations.                                                    */ | ||
|  | /*===========================================================================*/ | ||
|  | 
 | ||
|  | #ifdef __cplusplus
 | ||
|  | extern "C" { | ||
|  | #endif
 | ||
|  | #ifdef __cplusplus
 | ||
|  | } | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #endif /* _STM32_RCC_ */
 | ||
|  | 
 | ||
|  | /** @} */ |