mbed library sources

Dependents:   Marvino mbot

Fork of mbed-src by mbed official

Committer:
mbed_official
Date:
Mon Sep 28 14:00:11 2015 +0100
Revision:
632:7687fb9c4f91
Parent:
385:be64abf45658
Child:
634:ac7d6880524d
Synchronized with git revision f7ce4ed029cc611121464252ff28d5e8beb895b0

Full URL: https://github.com/mbedmicro/mbed/commit/f7ce4ed029cc611121464252ff28d5e8beb895b0/

NUCLEO_F303K8 - add support of the STM32F303K8

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 330:c80ac197fa6a 1 /**
mbed_official 330:c80ac197fa6a 2 ******************************************************************************
mbed_official 330:c80ac197fa6a 3 * @file stm32f3xx_hal_rcc_ex.c
mbed_official 330:c80ac197fa6a 4 * @author MCD Application Team
mbed_official 632:7687fb9c4f91 5 * @version V1.1.1
mbed_official 632:7687fb9c4f91 6 * @date 19-June-2015
mbed_official 330:c80ac197fa6a 7 * @brief Extended RCC HAL module driver
mbed_official 330:c80ac197fa6a 8 * This file provides firmware functions to manage the following
mbed_official 330:c80ac197fa6a 9 * functionalities RCC Extended peripheral:
mbed_official 330:c80ac197fa6a 10 * + Extended Clock Source configuration functions
mbed_official 330:c80ac197fa6a 11 *
mbed_official 330:c80ac197fa6a 12 ******************************************************************************
mbed_official 330:c80ac197fa6a 13 * @attention
mbed_official 330:c80ac197fa6a 14 *
mbed_official 632:7687fb9c4f91 15 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
mbed_official 330:c80ac197fa6a 16 *
mbed_official 330:c80ac197fa6a 17 * Redistribution and use in source and binary forms, with or without modification,
mbed_official 330:c80ac197fa6a 18 * are permitted provided that the following conditions are met:
mbed_official 330:c80ac197fa6a 19 * 1. Redistributions of source code must retain the above copyright notice,
mbed_official 330:c80ac197fa6a 20 * this list of conditions and the following disclaimer.
mbed_official 330:c80ac197fa6a 21 * 2. Redistributions in binary form must reproduce the above copyright notice,
mbed_official 330:c80ac197fa6a 22 * this list of conditions and the following disclaimer in the documentation
mbed_official 330:c80ac197fa6a 23 * and/or other materials provided with the distribution.
mbed_official 330:c80ac197fa6a 24 * 3. Neither the name of STMicroelectronics nor the names of its contributors
mbed_official 330:c80ac197fa6a 25 * may be used to endorse or promote products derived from this software
mbed_official 330:c80ac197fa6a 26 * without specific prior written permission.
mbed_official 330:c80ac197fa6a 27 *
mbed_official 330:c80ac197fa6a 28 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
mbed_official 330:c80ac197fa6a 29 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
mbed_official 330:c80ac197fa6a 30 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 330:c80ac197fa6a 31 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
mbed_official 330:c80ac197fa6a 32 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
mbed_official 330:c80ac197fa6a 33 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
mbed_official 330:c80ac197fa6a 34 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
mbed_official 330:c80ac197fa6a 35 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
mbed_official 330:c80ac197fa6a 36 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
mbed_official 330:c80ac197fa6a 37 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 330:c80ac197fa6a 38 *
mbed_official 330:c80ac197fa6a 39 ******************************************************************************
mbed_official 330:c80ac197fa6a 40 */
mbed_official 330:c80ac197fa6a 41
mbed_official 330:c80ac197fa6a 42 /* Includes ------------------------------------------------------------------*/
mbed_official 330:c80ac197fa6a 43 #include "stm32f3xx_hal.h"
mbed_official 330:c80ac197fa6a 44
mbed_official 330:c80ac197fa6a 45 /** @addtogroup STM32F3xx_HAL_Driver
mbed_official 330:c80ac197fa6a 46 * @{
mbed_official 330:c80ac197fa6a 47 */
mbed_official 330:c80ac197fa6a 48
mbed_official 330:c80ac197fa6a 49 /** @defgroup RCCEx RCC Extended HAL module driver
mbed_official 330:c80ac197fa6a 50 * @brief RCC Extended HAL module driver.
mbed_official 330:c80ac197fa6a 51 * @{
mbed_official 330:c80ac197fa6a 52 */
mbed_official 330:c80ac197fa6a 53
mbed_official 330:c80ac197fa6a 54 #ifdef HAL_RCC_MODULE_ENABLED
mbed_official 330:c80ac197fa6a 55
mbed_official 330:c80ac197fa6a 56 /* Private typedef -----------------------------------------------------------*/
mbed_official 330:c80ac197fa6a 57 /* Private define ------------------------------------------------------------*/
mbed_official 330:c80ac197fa6a 58 /** @defgroup RCCEx_Private_Define RCC Extended Private Define
mbed_official 330:c80ac197fa6a 59 * @{
mbed_official 330:c80ac197fa6a 60 */
mbed_official 330:c80ac197fa6a 61 #define HSE_TIMEOUT_VALUE HSE_STARTUP_TIMEOUT
mbed_official 330:c80ac197fa6a 62 #define HSI_TIMEOUT_VALUE ((uint32_t)100) /* 100 ms */
mbed_official 330:c80ac197fa6a 63 #define LSI_TIMEOUT_VALUE ((uint32_t)100) /* 100 ms */
mbed_official 330:c80ac197fa6a 64 #define PLL_TIMEOUT_VALUE ((uint32_t)100) /* 100 ms */
mbed_official 330:c80ac197fa6a 65 #define CLOCKSWITCH_TIMEOUT_VALUE ((uint32_t)5000) /* 5 s */
mbed_official 330:c80ac197fa6a 66 /**
mbed_official 330:c80ac197fa6a 67 * @}
mbed_official 330:c80ac197fa6a 68 */
mbed_official 330:c80ac197fa6a 69
mbed_official 330:c80ac197fa6a 70 /* Private macro -------------------------------------------------------------*/
mbed_official 330:c80ac197fa6a 71 /* Private variables ---------------------------------------------------------*/
mbed_official 330:c80ac197fa6a 72 /** @defgroup RCCEx_Private_Variables RCC Extented Private Variables
mbed_official 330:c80ac197fa6a 73 * @{
mbed_official 330:c80ac197fa6a 74 */
mbed_official 330:c80ac197fa6a 75 const uint8_t PLLMULFactorTable[16] = { 2, 3, 4, 5, 6, 7, 8, 9,
mbed_official 330:c80ac197fa6a 76 10, 11, 12, 13, 14, 15, 16, 16};
mbed_official 330:c80ac197fa6a 77 const uint8_t PredivFactorTable[16] = { 1, 2, 3, 4, 5, 6, 7, 8,
mbed_official 330:c80ac197fa6a 78 9,10, 11, 12, 13, 14, 15, 16};
mbed_official 330:c80ac197fa6a 79 /**
mbed_official 330:c80ac197fa6a 80 * @}
mbed_official 330:c80ac197fa6a 81 */
mbed_official 330:c80ac197fa6a 82
mbed_official 330:c80ac197fa6a 83 /* Private function prototypes -----------------------------------------------*/
mbed_official 330:c80ac197fa6a 84 /* Exported functions ---------------------------------------------------------*/
mbed_official 330:c80ac197fa6a 85
mbed_official 330:c80ac197fa6a 86 /** @defgroup RCCEx_Exported_Functions RCC Extended Exported Functions
mbed_official 330:c80ac197fa6a 87 * @{
mbed_official 330:c80ac197fa6a 88 */
mbed_official 330:c80ac197fa6a 89
mbed_official 330:c80ac197fa6a 90 /** @defgroup RCCEx_Exported_Functions_Group1 Extended Peripheral Control functions
mbed_official 330:c80ac197fa6a 91 * @brief Extended Peripheral Control functions
mbed_official 330:c80ac197fa6a 92 *
mbed_official 330:c80ac197fa6a 93 @verbatim
mbed_official 330:c80ac197fa6a 94 ===============================================================================
mbed_official 330:c80ac197fa6a 95 ##### Extended Peripheral Control functions #####
mbed_official 330:c80ac197fa6a 96 ===============================================================================
mbed_official 330:c80ac197fa6a 97 [..]
mbed_official 330:c80ac197fa6a 98 This subsection provides a set of functions allowing to control the RCC Clocks
mbed_official 330:c80ac197fa6a 99 frequencies.
mbed_official 330:c80ac197fa6a 100 [..]
mbed_official 330:c80ac197fa6a 101 (@) Important note: Care must be taken when HAL_RCCEx_PeriphCLKConfig() is used to
mbed_official 330:c80ac197fa6a 102 select the RTC clock source; in this case the Backup domain will be reset in
mbed_official 330:c80ac197fa6a 103 order to modify the RTC Clock source, as consequence RTC registers (including
mbed_official 330:c80ac197fa6a 104 the backup registers) and RCC_BDCR register are set to their reset values.
mbed_official 330:c80ac197fa6a 105
mbed_official 330:c80ac197fa6a 106 @endverbatim
mbed_official 330:c80ac197fa6a 107 * @{
mbed_official 330:c80ac197fa6a 108 */
mbed_official 330:c80ac197fa6a 109
mbed_official 330:c80ac197fa6a 110 /**
mbed_official 330:c80ac197fa6a 111 * @brief Initializes the RCC extended peripherals clocks according to the specified
mbed_official 330:c80ac197fa6a 112 * parameters in the RCC_PeriphCLKInitTypeDef.
mbed_official 330:c80ac197fa6a 113 * @param PeriphClkInit: pointer to an RCC_PeriphCLKInitTypeDef structure that
mbed_official 330:c80ac197fa6a 114 * contains the configuration information for the Extended Peripherals clocks
mbed_official 330:c80ac197fa6a 115 * (ADC, CEC, I2C, I2S, SDADC, HRTIM, TIM, USART, RTC and USB).
mbed_official 330:c80ac197fa6a 116 *
mbed_official 330:c80ac197fa6a 117 * @note Care must be taken when HAL_RCCEx_PeriphCLKConfig() is used to select
mbed_official 330:c80ac197fa6a 118 * the RTC clock source; in this case the Backup domain will be reset in
mbed_official 330:c80ac197fa6a 119 * order to modify the RTC Clock source, as consequence RTC registers (including
mbed_official 330:c80ac197fa6a 120 * the backup registers) and RCC_BDCR register are set to their reset values.
mbed_official 330:c80ac197fa6a 121 *
mbed_official 330:c80ac197fa6a 122 * @retval HAL status
mbed_official 330:c80ac197fa6a 123 */
mbed_official 330:c80ac197fa6a 124 HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit)
mbed_official 330:c80ac197fa6a 125 {
mbed_official 330:c80ac197fa6a 126 uint32_t tickstart = 0;
mbed_official 330:c80ac197fa6a 127 uint32_t tmpreg = 0;
mbed_official 330:c80ac197fa6a 128
mbed_official 330:c80ac197fa6a 129 /* Check the parameters */
mbed_official 330:c80ac197fa6a 130 assert_param(IS_RCC_PERIPHCLK(PeriphClkInit->PeriphClockSelection));
mbed_official 330:c80ac197fa6a 131
mbed_official 330:c80ac197fa6a 132
mbed_official 330:c80ac197fa6a 133 /*---------------------------- RTC configuration -------------------------------*/
mbed_official 330:c80ac197fa6a 134 if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_RTC) == (RCC_PERIPHCLK_RTC))
mbed_official 330:c80ac197fa6a 135 {
mbed_official 330:c80ac197fa6a 136 /* Enable Power Clock*/
mbed_official 330:c80ac197fa6a 137 __PWR_CLK_ENABLE();
mbed_official 330:c80ac197fa6a 138
mbed_official 330:c80ac197fa6a 139 /* Enable write access to Backup domain */
mbed_official 330:c80ac197fa6a 140 SET_BIT(PWR->CR, PWR_CR_DBP);
mbed_official 330:c80ac197fa6a 141
mbed_official 330:c80ac197fa6a 142 /* Wait for Backup domain Write protection disable */
mbed_official 330:c80ac197fa6a 143 tickstart = HAL_GetTick();
mbed_official 330:c80ac197fa6a 144
mbed_official 330:c80ac197fa6a 145 while((PWR->CR & PWR_CR_DBP) == RESET)
mbed_official 330:c80ac197fa6a 146 {
mbed_official 330:c80ac197fa6a 147 if((HAL_GetTick()-tickstart) > DBP_TIMEOUT_VALUE)
mbed_official 330:c80ac197fa6a 148 {
mbed_official 330:c80ac197fa6a 149 return HAL_TIMEOUT;
mbed_official 330:c80ac197fa6a 150 }
mbed_official 330:c80ac197fa6a 151 }
mbed_official 330:c80ac197fa6a 152
mbed_official 330:c80ac197fa6a 153 /* Reset the Backup domain only if the RTC Clock source selction is modified */
mbed_official 330:c80ac197fa6a 154 if((RCC->BDCR & RCC_BDCR_RTCSEL) != (PeriphClkInit->RTCClockSelection & RCC_BDCR_RTCSEL))
mbed_official 330:c80ac197fa6a 155 {
mbed_official 330:c80ac197fa6a 156 /* Store the content of BDCR register before the reset of Backup Domain */
mbed_official 330:c80ac197fa6a 157 tmpreg = (RCC->BDCR & ~(RCC_BDCR_RTCSEL));
mbed_official 330:c80ac197fa6a 158 /* RTC Clock selection can be changed only if the Backup Domain is reset */
mbed_official 330:c80ac197fa6a 159 __HAL_RCC_BACKUPRESET_FORCE();
mbed_official 330:c80ac197fa6a 160 __HAL_RCC_BACKUPRESET_RELEASE();
mbed_official 330:c80ac197fa6a 161 /* Restore the Content of BDCR register */
mbed_official 330:c80ac197fa6a 162 RCC->BDCR = tmpreg;
mbed_official 330:c80ac197fa6a 163 }
mbed_official 330:c80ac197fa6a 164
mbed_official 330:c80ac197fa6a 165 /* If LSE is selected as RTC clock source, wait for LSE reactivation */
mbed_official 330:c80ac197fa6a 166 if(PeriphClkInit->RTCClockSelection == RCC_RTCCLKSOURCE_LSE)
mbed_official 330:c80ac197fa6a 167 {
mbed_official 330:c80ac197fa6a 168 /* Get timeout */
mbed_official 330:c80ac197fa6a 169 tickstart = HAL_GetTick();
mbed_official 330:c80ac197fa6a 170
mbed_official 330:c80ac197fa6a 171 /* Wait till LSE is ready */
mbed_official 330:c80ac197fa6a 172 while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
mbed_official 330:c80ac197fa6a 173 {
mbed_official 330:c80ac197fa6a 174 if((HAL_GetTick()-tickstart) > LSE_TIMEOUT_VALUE)
mbed_official 330:c80ac197fa6a 175 {
mbed_official 330:c80ac197fa6a 176 return HAL_TIMEOUT;
mbed_official 330:c80ac197fa6a 177 }
mbed_official 330:c80ac197fa6a 178 }
mbed_official 330:c80ac197fa6a 179 }
mbed_official 330:c80ac197fa6a 180 __HAL_RCC_RTC_CONFIG(PeriphClkInit->RTCClockSelection);
mbed_official 330:c80ac197fa6a 181 }
mbed_official 330:c80ac197fa6a 182
mbed_official 330:c80ac197fa6a 183 /*------------------------------- USART1 Configuration ------------------------*/
mbed_official 330:c80ac197fa6a 184 if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART1) == RCC_PERIPHCLK_USART1)
mbed_official 330:c80ac197fa6a 185 {
mbed_official 330:c80ac197fa6a 186 /* Check the parameters */
mbed_official 330:c80ac197fa6a 187 assert_param(IS_RCC_USART1CLKSOURCE(PeriphClkInit->Usart1ClockSelection));
mbed_official 330:c80ac197fa6a 188
mbed_official 330:c80ac197fa6a 189 /* Configure the USART1 clock source */
mbed_official 330:c80ac197fa6a 190 __HAL_RCC_USART1_CONFIG(PeriphClkInit->Usart1ClockSelection);
mbed_official 330:c80ac197fa6a 191 }
mbed_official 330:c80ac197fa6a 192
mbed_official 330:c80ac197fa6a 193 /*----------------------------- USART2 Configuration --------------------------*/
mbed_official 330:c80ac197fa6a 194 if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART2) == RCC_PERIPHCLK_USART2)
mbed_official 330:c80ac197fa6a 195 {
mbed_official 330:c80ac197fa6a 196 /* Check the parameters */
mbed_official 330:c80ac197fa6a 197 assert_param(IS_RCC_USART2CLKSOURCE(PeriphClkInit->Usart2ClockSelection));
mbed_official 330:c80ac197fa6a 198
mbed_official 330:c80ac197fa6a 199 /* Configure the USART2 clock source */
mbed_official 330:c80ac197fa6a 200 __HAL_RCC_USART2_CONFIG(PeriphClkInit->Usart2ClockSelection);
mbed_official 330:c80ac197fa6a 201 }
mbed_official 330:c80ac197fa6a 202
mbed_official 330:c80ac197fa6a 203 /*------------------------------ USART3 Configuration ------------------------*/
mbed_official 330:c80ac197fa6a 204 if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USART3) == RCC_PERIPHCLK_USART3)
mbed_official 330:c80ac197fa6a 205 {
mbed_official 330:c80ac197fa6a 206 /* Check the parameters */
mbed_official 330:c80ac197fa6a 207 assert_param(IS_RCC_USART3CLKSOURCE(PeriphClkInit->Usart3ClockSelection));
mbed_official 330:c80ac197fa6a 208
mbed_official 330:c80ac197fa6a 209 /* Configure the USART3 clock source */
mbed_official 330:c80ac197fa6a 210 __HAL_RCC_USART3_CONFIG(PeriphClkInit->Usart3ClockSelection);
mbed_official 330:c80ac197fa6a 211 }
mbed_official 330:c80ac197fa6a 212
mbed_official 330:c80ac197fa6a 213 /*------------------------------ I2C1 Configuration ------------------------*/
mbed_official 330:c80ac197fa6a 214 if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C1) == RCC_PERIPHCLK_I2C1)
mbed_official 330:c80ac197fa6a 215 {
mbed_official 330:c80ac197fa6a 216 /* Check the parameters */
mbed_official 330:c80ac197fa6a 217 assert_param(IS_RCC_I2C1CLKSOURCE(PeriphClkInit->I2c1ClockSelection));
mbed_official 330:c80ac197fa6a 218
mbed_official 330:c80ac197fa6a 219 /* Configure the I2C1 clock source */
mbed_official 330:c80ac197fa6a 220 __HAL_RCC_I2C1_CONFIG(PeriphClkInit->I2c1ClockSelection);
mbed_official 330:c80ac197fa6a 221 }
mbed_official 330:c80ac197fa6a 222
mbed_official 330:c80ac197fa6a 223 #if defined(STM32F302xE) || defined(STM32F303xE) || \
mbed_official 330:c80ac197fa6a 224 defined(STM32F302xC) || defined(STM32F303xC) || \
mbed_official 330:c80ac197fa6a 225 defined(STM32F302x8) || \
mbed_official 330:c80ac197fa6a 226 defined(STM32F373xC)
mbed_official 330:c80ac197fa6a 227 /*------------------------------ USB Configuration ------------------------*/
mbed_official 330:c80ac197fa6a 228 if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_USB) == RCC_PERIPHCLK_USB)
mbed_official 330:c80ac197fa6a 229 {
mbed_official 330:c80ac197fa6a 230 /* Check the parameters */
mbed_official 330:c80ac197fa6a 231 assert_param(IS_RCC_USBCLKSOURCE(PeriphClkInit->USBClockSelection));
mbed_official 330:c80ac197fa6a 232
mbed_official 330:c80ac197fa6a 233 /* Configure the USB clock source */
mbed_official 330:c80ac197fa6a 234 __HAL_RCC_USB_CONFIG(PeriphClkInit->USBClockSelection);
mbed_official 330:c80ac197fa6a 235 }
mbed_official 330:c80ac197fa6a 236
mbed_official 330:c80ac197fa6a 237 #endif /* STM32F302xE || STM32F303xE || */
mbed_official 330:c80ac197fa6a 238 /* STM32F302xC || STM32F303xC || */
mbed_official 330:c80ac197fa6a 239 /* STM32F302x8 || */
mbed_official 330:c80ac197fa6a 240 /* STM32F373xC */
mbed_official 330:c80ac197fa6a 241
mbed_official 330:c80ac197fa6a 242 #if defined(STM32F302xE) || defined(STM32F303xE) || defined(STM32F398xx) || \
mbed_official 330:c80ac197fa6a 243 defined(STM32F302xC) || defined(STM32F303xC) || defined(STM32F358xx) || \
mbed_official 330:c80ac197fa6a 244 defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx) || \
mbed_official 330:c80ac197fa6a 245 defined(STM32F373xC) || defined(STM32F378xx)
mbed_official 330:c80ac197fa6a 246
mbed_official 330:c80ac197fa6a 247 /*------------------------------ I2C2 Configuration ------------------------*/
mbed_official 330:c80ac197fa6a 248 if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C2) == RCC_PERIPHCLK_I2C2)
mbed_official 330:c80ac197fa6a 249 {
mbed_official 330:c80ac197fa6a 250 /* Check the parameters */
mbed_official 330:c80ac197fa6a 251 assert_param(IS_RCC_I2C2CLKSOURCE(PeriphClkInit->I2c2ClockSelection));
mbed_official 330:c80ac197fa6a 252
mbed_official 330:c80ac197fa6a 253 /* Configure the I2C2 clock source */
mbed_official 330:c80ac197fa6a 254 __HAL_RCC_I2C2_CONFIG(PeriphClkInit->I2c2ClockSelection);
mbed_official 330:c80ac197fa6a 255 }
mbed_official 330:c80ac197fa6a 256
mbed_official 330:c80ac197fa6a 257 #endif /* STM32F302xE || STM32F303xE || STM32F398xx || */
mbed_official 330:c80ac197fa6a 258 /* STM32F302xC || STM32F303xC || STM32F358xx || */
mbed_official 330:c80ac197fa6a 259 /* STM32F301x8 || STM32F302x8 || STM32F318xx || */
mbed_official 330:c80ac197fa6a 260 /* STM32F373xC || STM32F378xx */
mbed_official 330:c80ac197fa6a 261
mbed_official 330:c80ac197fa6a 262 #if defined(STM32F302xE) || defined(STM32F303xE) || defined(STM32F398xx) || \
mbed_official 330:c80ac197fa6a 263 defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
mbed_official 330:c80ac197fa6a 264
mbed_official 330:c80ac197fa6a 265 /*------------------------------ I2C3 Configuration ------------------------*/
mbed_official 330:c80ac197fa6a 266 if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2C3) == RCC_PERIPHCLK_I2C3)
mbed_official 330:c80ac197fa6a 267 {
mbed_official 330:c80ac197fa6a 268 /* Check the parameters */
mbed_official 330:c80ac197fa6a 269 assert_param(IS_RCC_I2C3CLKSOURCE(PeriphClkInit->I2c3ClockSelection));
mbed_official 330:c80ac197fa6a 270
mbed_official 330:c80ac197fa6a 271 /* Configure the I2C3 clock source */
mbed_official 330:c80ac197fa6a 272 __HAL_RCC_I2C3_CONFIG(PeriphClkInit->I2c3ClockSelection);
mbed_official 330:c80ac197fa6a 273 }
mbed_official 330:c80ac197fa6a 274 #endif /* STM32F302xE || STM32F303xE || STM32F398xx || */
mbed_official 330:c80ac197fa6a 275 /* STM32F301x8 || STM32F302x8 || STM32F318xx */
mbed_official 330:c80ac197fa6a 276
mbed_official 330:c80ac197fa6a 277 #if defined(STM32F302xE) || defined(STM32F303xE) || defined(STM32F398xx) || \
mbed_official 330:c80ac197fa6a 278 defined(STM32F302xC) || defined(STM32F303xC) || defined(STM32F358xx)
mbed_official 330:c80ac197fa6a 279
mbed_official 330:c80ac197fa6a 280 /*------------------------------ UART4 Configuration ------------------------*/
mbed_official 330:c80ac197fa6a 281 if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_UART4) == RCC_PERIPHCLK_UART4)
mbed_official 330:c80ac197fa6a 282 {
mbed_official 330:c80ac197fa6a 283 /* Check the parameters */
mbed_official 330:c80ac197fa6a 284 assert_param(IS_RCC_UART4CLKSOURCE(PeriphClkInit->Uart4ClockSelection));
mbed_official 330:c80ac197fa6a 285
mbed_official 330:c80ac197fa6a 286 /* Configure the UART4 clock source */
mbed_official 330:c80ac197fa6a 287 __HAL_RCC_UART4_CONFIG(PeriphClkInit->Uart4ClockSelection);
mbed_official 330:c80ac197fa6a 288 }
mbed_official 330:c80ac197fa6a 289
mbed_official 330:c80ac197fa6a 290 /*------------------------------ UART5 Configuration ------------------------*/
mbed_official 330:c80ac197fa6a 291 if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_UART5) == RCC_PERIPHCLK_UART5)
mbed_official 330:c80ac197fa6a 292 {
mbed_official 330:c80ac197fa6a 293 /* Check the parameters */
mbed_official 330:c80ac197fa6a 294 assert_param(IS_RCC_UART5CLKSOURCE(PeriphClkInit->Uart5ClockSelection));
mbed_official 330:c80ac197fa6a 295
mbed_official 330:c80ac197fa6a 296 /* Configure the UART5 clock source */
mbed_official 330:c80ac197fa6a 297 __HAL_RCC_UART5_CONFIG(PeriphClkInit->Uart5ClockSelection);
mbed_official 330:c80ac197fa6a 298 }
mbed_official 330:c80ac197fa6a 299
mbed_official 330:c80ac197fa6a 300 #endif /* STM32F302xE || STM32F303xE || STM32F398xx || */
mbed_official 330:c80ac197fa6a 301 /* STM32F302xC || STM32F303xC || STM32F358xx */
mbed_official 330:c80ac197fa6a 302
mbed_official 330:c80ac197fa6a 303 #if defined(STM32F302xE) || defined(STM32F303xE) || defined(STM32F398xx) || \
mbed_official 330:c80ac197fa6a 304 defined(STM32F302xC) || defined(STM32F303xC) || defined(STM32F358xx) || \
mbed_official 330:c80ac197fa6a 305 defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
mbed_official 330:c80ac197fa6a 306 /*------------------------------ I2S Configuration ------------------------*/
mbed_official 330:c80ac197fa6a 307 if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_I2S) == RCC_PERIPHCLK_I2S)
mbed_official 330:c80ac197fa6a 308 {
mbed_official 330:c80ac197fa6a 309 /* Check the parameters */
mbed_official 330:c80ac197fa6a 310 assert_param(IS_RCC_I2SCLKSOURCE(PeriphClkInit->I2sClockSelection));
mbed_official 330:c80ac197fa6a 311
mbed_official 330:c80ac197fa6a 312 /* Configure the I2S clock source */
mbed_official 330:c80ac197fa6a 313 __HAL_RCC_I2S_CONFIG(PeriphClkInit->I2sClockSelection);
mbed_official 330:c80ac197fa6a 314 }
mbed_official 330:c80ac197fa6a 315
mbed_official 330:c80ac197fa6a 316 #endif /* STM32F302xE || STM32F303xE || STM32F398xx || */
mbed_official 330:c80ac197fa6a 317 /* STM32F302xC || STM32F303xC || STM32F358xx || */
mbed_official 330:c80ac197fa6a 318 /* STM32F301x8 || STM32F302x8 || STM32F318xx */
mbed_official 330:c80ac197fa6a 319
mbed_official 330:c80ac197fa6a 320 #if defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
mbed_official 330:c80ac197fa6a 321
mbed_official 330:c80ac197fa6a 322 /*------------------------------ ADC1 clock Configuration ------------------*/
mbed_official 330:c80ac197fa6a 323 if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_ADC1) == RCC_PERIPHCLK_ADC1)
mbed_official 330:c80ac197fa6a 324 {
mbed_official 330:c80ac197fa6a 325 /* Check the parameters */
mbed_official 330:c80ac197fa6a 326 assert_param(IS_RCC_ADC1PLLCLK_DIV(PeriphClkInit->Adc1ClockSelection));
mbed_official 330:c80ac197fa6a 327
mbed_official 330:c80ac197fa6a 328 /* Configure the ADC1 clock source */
mbed_official 330:c80ac197fa6a 329 __HAL_RCC_ADC1_CONFIG(PeriphClkInit->Adc1ClockSelection);
mbed_official 330:c80ac197fa6a 330 }
mbed_official 330:c80ac197fa6a 331
mbed_official 330:c80ac197fa6a 332 #endif /* STM32F301x8 || STM32F302x8 || STM32F318xx */
mbed_official 330:c80ac197fa6a 333
mbed_official 330:c80ac197fa6a 334 #if defined(STM32F302xE) || defined(STM32F303xE) || defined(STM32F398xx) || \
mbed_official 330:c80ac197fa6a 335 defined(STM32F302xC) || defined(STM32F303xC) || defined(STM32F358xx) || \
mbed_official 330:c80ac197fa6a 336 defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx)
mbed_official 330:c80ac197fa6a 337
mbed_official 330:c80ac197fa6a 338 /*------------------------------ ADC1 & ADC2 clock Configuration -------------*/
mbed_official 330:c80ac197fa6a 339 if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_ADC12) == RCC_PERIPHCLK_ADC12)
mbed_official 330:c80ac197fa6a 340 {
mbed_official 330:c80ac197fa6a 341 /* Check the parameters */
mbed_official 330:c80ac197fa6a 342 assert_param(IS_RCC_ADC12PLLCLK_DIV(PeriphClkInit->Adc12ClockSelection));
mbed_official 330:c80ac197fa6a 343
mbed_official 330:c80ac197fa6a 344 /* Configure the ADC12 clock source */
mbed_official 330:c80ac197fa6a 345 __HAL_RCC_ADC12_CONFIG(PeriphClkInit->Adc12ClockSelection);
mbed_official 330:c80ac197fa6a 346 }
mbed_official 330:c80ac197fa6a 347
mbed_official 330:c80ac197fa6a 348 #endif /* STM32F302xE || STM32F303xE || STM32F398xx || */
mbed_official 330:c80ac197fa6a 349 /* STM32F302xC || STM32F303xC || STM32F358xx || */
mbed_official 330:c80ac197fa6a 350 /* STM32F303x8 || STM32F334x8 || STM32F328xx */
mbed_official 330:c80ac197fa6a 351
mbed_official 330:c80ac197fa6a 352 #if defined(STM32F303xE) || defined(STM32F398xx) || \
mbed_official 330:c80ac197fa6a 353 defined(STM32F303xC) || defined(STM32F358xx)
mbed_official 330:c80ac197fa6a 354
mbed_official 330:c80ac197fa6a 355 /*------------------------------ ADC3 & ADC4 clock Configuration -------------*/
mbed_official 330:c80ac197fa6a 356 if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_ADC34) == RCC_PERIPHCLK_ADC34)
mbed_official 330:c80ac197fa6a 357 {
mbed_official 330:c80ac197fa6a 358 /* Check the parameters */
mbed_official 330:c80ac197fa6a 359 assert_param(IS_RCC_ADC34PLLCLK_DIV(PeriphClkInit->Adc34ClockSelection));
mbed_official 330:c80ac197fa6a 360
mbed_official 330:c80ac197fa6a 361 /* Configure the ADC34 clock source */
mbed_official 330:c80ac197fa6a 362 __HAL_RCC_ADC34_CONFIG(PeriphClkInit->Adc34ClockSelection);
mbed_official 330:c80ac197fa6a 363 }
mbed_official 330:c80ac197fa6a 364
mbed_official 330:c80ac197fa6a 365 #endif /* STM32F303xE || STM32F398xx || */
mbed_official 330:c80ac197fa6a 366 /* STM32F303xC || STM32F358xx */
mbed_official 330:c80ac197fa6a 367
mbed_official 330:c80ac197fa6a 368 #if defined(STM32F373xC) || defined(STM32F378xx)
mbed_official 330:c80ac197fa6a 369
mbed_official 330:c80ac197fa6a 370 /*------------------------------ ADC1 clock Configuration ------------------*/
mbed_official 330:c80ac197fa6a 371 if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_ADC1) == RCC_PERIPHCLK_ADC1)
mbed_official 330:c80ac197fa6a 372 {
mbed_official 330:c80ac197fa6a 373 /* Check the parameters */
mbed_official 330:c80ac197fa6a 374 assert_param(IS_RCC_ADC1PCLK2_DIV(PeriphClkInit->Adc1ClockSelection));
mbed_official 330:c80ac197fa6a 375
mbed_official 330:c80ac197fa6a 376 /* Configure the ADC1 clock source */
mbed_official 330:c80ac197fa6a 377 __HAL_RCC_ADC1_CONFIG(PeriphClkInit->Adc1ClockSelection);
mbed_official 330:c80ac197fa6a 378 }
mbed_official 330:c80ac197fa6a 379
mbed_official 330:c80ac197fa6a 380 #endif /* STM32F373xC || STM32F378xx */
mbed_official 330:c80ac197fa6a 381
mbed_official 330:c80ac197fa6a 382 #if defined(STM32F302xE) || defined(STM32F303xE) || defined(STM32F398xx) || \
mbed_official 330:c80ac197fa6a 383 defined(STM32F302xC) || defined(STM32F303xC) || defined(STM32F358xx) || \
mbed_official 330:c80ac197fa6a 384 defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx) || \
mbed_official 330:c80ac197fa6a 385 defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
mbed_official 330:c80ac197fa6a 386
mbed_official 330:c80ac197fa6a 387 /*------------------------------ TIM1 clock Configuration ----------------*/
mbed_official 330:c80ac197fa6a 388 if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_TIM1) == RCC_PERIPHCLK_TIM1)
mbed_official 330:c80ac197fa6a 389 {
mbed_official 330:c80ac197fa6a 390 /* Check the parameters */
mbed_official 330:c80ac197fa6a 391 assert_param(IS_RCC_TIM1CLKSOURCE(PeriphClkInit->Tim1ClockSelection));
mbed_official 330:c80ac197fa6a 392
mbed_official 330:c80ac197fa6a 393 /* Configure the TIM1 clock source */
mbed_official 330:c80ac197fa6a 394 __HAL_RCC_TIM1_CONFIG(PeriphClkInit->Tim1ClockSelection);
mbed_official 330:c80ac197fa6a 395 }
mbed_official 330:c80ac197fa6a 396
mbed_official 330:c80ac197fa6a 397 #endif /* STM32F302xE || STM32F303xE || STM32F398xx || */
mbed_official 330:c80ac197fa6a 398 /* STM32F302xC || STM32F303xC || STM32F358xx || */
mbed_official 330:c80ac197fa6a 399 /* STM32F303x8 || STM32F334x8 || STM32F328xx || */
mbed_official 330:c80ac197fa6a 400 /* STM32F301x8 || STM32F302x8 || STM32F318xx */
mbed_official 330:c80ac197fa6a 401
mbed_official 330:c80ac197fa6a 402 #if defined(STM32F303xE) || defined(STM32F398xx) || \
mbed_official 330:c80ac197fa6a 403 defined(STM32F303xC) || defined(STM32F358xx)
mbed_official 330:c80ac197fa6a 404
mbed_official 330:c80ac197fa6a 405 /*------------------------------ TIM8 clock Configuration ----------------*/
mbed_official 330:c80ac197fa6a 406 if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_TIM8) == RCC_PERIPHCLK_TIM8)
mbed_official 330:c80ac197fa6a 407 {
mbed_official 330:c80ac197fa6a 408 /* Check the parameters */
mbed_official 330:c80ac197fa6a 409 assert_param(IS_RCC_TIM8CLKSOURCE(PeriphClkInit->Tim8ClockSelection));
mbed_official 330:c80ac197fa6a 410
mbed_official 330:c80ac197fa6a 411 /* Configure the TIM8 clock source */
mbed_official 330:c80ac197fa6a 412 __HAL_RCC_TIM8_CONFIG(PeriphClkInit->Tim8ClockSelection);
mbed_official 330:c80ac197fa6a 413 }
mbed_official 330:c80ac197fa6a 414
mbed_official 330:c80ac197fa6a 415 #endif /* STM32F303xE || STM32F398xx || */
mbed_official 330:c80ac197fa6a 416 /* STM32F303xC || STM32F358xx */
mbed_official 330:c80ac197fa6a 417
mbed_official 330:c80ac197fa6a 418 #if defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
mbed_official 330:c80ac197fa6a 419
mbed_official 330:c80ac197fa6a 420 /*------------------------------ TIM15 clock Configuration ----------------*/
mbed_official 330:c80ac197fa6a 421 if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_TIM15) == RCC_PERIPHCLK_TIM15)
mbed_official 330:c80ac197fa6a 422 {
mbed_official 330:c80ac197fa6a 423 /* Check the parameters */
mbed_official 330:c80ac197fa6a 424 assert_param(IS_RCC_TIM15CLKSOURCE(PeriphClkInit->Tim15ClockSelection));
mbed_official 330:c80ac197fa6a 425
mbed_official 330:c80ac197fa6a 426 /* Configure the TIM15 clock source */
mbed_official 330:c80ac197fa6a 427 __HAL_RCC_TIM15_CONFIG(PeriphClkInit->Tim15ClockSelection);
mbed_official 330:c80ac197fa6a 428 }
mbed_official 330:c80ac197fa6a 429
mbed_official 330:c80ac197fa6a 430 /*------------------------------ TIM16 clock Configuration ----------------*/
mbed_official 330:c80ac197fa6a 431 if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_TIM16) == RCC_PERIPHCLK_TIM16)
mbed_official 330:c80ac197fa6a 432 {
mbed_official 330:c80ac197fa6a 433 /* Check the parameters */
mbed_official 330:c80ac197fa6a 434 assert_param(IS_RCC_TIM16CLKSOURCE(PeriphClkInit->Tim16ClockSelection));
mbed_official 330:c80ac197fa6a 435
mbed_official 330:c80ac197fa6a 436 /* Configure the TIM16 clock source */
mbed_official 330:c80ac197fa6a 437 __HAL_RCC_TIM16_CONFIG(PeriphClkInit->Tim16ClockSelection);
mbed_official 330:c80ac197fa6a 438 }
mbed_official 330:c80ac197fa6a 439
mbed_official 330:c80ac197fa6a 440 /*------------------------------ TIM17 clock Configuration ----------------*/
mbed_official 330:c80ac197fa6a 441 if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_TIM17) == RCC_PERIPHCLK_TIM17)
mbed_official 330:c80ac197fa6a 442 {
mbed_official 330:c80ac197fa6a 443 /* Check the parameters */
mbed_official 330:c80ac197fa6a 444 assert_param(IS_RCC_TIM17CLKSOURCE(PeriphClkInit->Tim17ClockSelection));
mbed_official 330:c80ac197fa6a 445
mbed_official 330:c80ac197fa6a 446 /* Configure the TIM17 clock source */
mbed_official 330:c80ac197fa6a 447 __HAL_RCC_TIM17_CONFIG(PeriphClkInit->Tim17ClockSelection);
mbed_official 330:c80ac197fa6a 448 }
mbed_official 330:c80ac197fa6a 449
mbed_official 330:c80ac197fa6a 450 #endif /* STM32F301x8 || STM32F302x8 || STM32F318xx */
mbed_official 330:c80ac197fa6a 451
mbed_official 330:c80ac197fa6a 452 #if defined(STM32F334x8)
mbed_official 330:c80ac197fa6a 453
mbed_official 330:c80ac197fa6a 454 /*------------------------------ HRTIM1 clock Configuration ----------------*/
mbed_official 330:c80ac197fa6a 455 if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_HRTIM1) == RCC_PERIPHCLK_HRTIM1)
mbed_official 330:c80ac197fa6a 456 {
mbed_official 330:c80ac197fa6a 457 /* Check the parameters */
mbed_official 330:c80ac197fa6a 458 assert_param(IS_RCC_HRTIM1CLKSOURCE(PeriphClkInit->Hrtim1ClockSelection));
mbed_official 330:c80ac197fa6a 459
mbed_official 330:c80ac197fa6a 460 /* Configure the HRTIM1 clock source */
mbed_official 330:c80ac197fa6a 461 __HAL_RCC_HRTIM1_CONFIG(PeriphClkInit->Hrtim1ClockSelection);
mbed_official 330:c80ac197fa6a 462 }
mbed_official 330:c80ac197fa6a 463
mbed_official 330:c80ac197fa6a 464 #endif /* STM32F334x8 */
mbed_official 330:c80ac197fa6a 465
mbed_official 330:c80ac197fa6a 466 #if defined(STM32F373xC) || defined(STM32F378xx)
mbed_official 330:c80ac197fa6a 467
mbed_official 330:c80ac197fa6a 468 /*------------------------------ SDADC clock Configuration -------------------*/
mbed_official 330:c80ac197fa6a 469 if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_SDADC) == RCC_PERIPHCLK_SDADC)
mbed_official 330:c80ac197fa6a 470 {
mbed_official 330:c80ac197fa6a 471 /* Check the parameters */
mbed_official 330:c80ac197fa6a 472 assert_param(IS_RCC_SDADCSYSCLK_DIV(PeriphClkInit->SdadcClockSelection));
mbed_official 330:c80ac197fa6a 473
mbed_official 330:c80ac197fa6a 474 /* Configure the SDADC clock prescaler */
mbed_official 330:c80ac197fa6a 475 __HAL_RCC_SDADC_CONFIG(PeriphClkInit->SdadcClockSelection);
mbed_official 330:c80ac197fa6a 476 }
mbed_official 330:c80ac197fa6a 477
mbed_official 330:c80ac197fa6a 478 /*------------------------------ CEC clock Configuration -------------------*/
mbed_official 330:c80ac197fa6a 479 if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_CEC) == RCC_PERIPHCLK_CEC)
mbed_official 330:c80ac197fa6a 480 {
mbed_official 330:c80ac197fa6a 481 /* Check the parameters */
mbed_official 330:c80ac197fa6a 482 assert_param(IS_RCC_CECCLKSOURCE(PeriphClkInit->CecClockSelection));
mbed_official 330:c80ac197fa6a 483
mbed_official 330:c80ac197fa6a 484 /* Configure the CEC clock source */
mbed_official 330:c80ac197fa6a 485 __HAL_RCC_CEC_CONFIG(PeriphClkInit->CecClockSelection);
mbed_official 330:c80ac197fa6a 486 }
mbed_official 330:c80ac197fa6a 487
mbed_official 330:c80ac197fa6a 488 #endif /* STM32F373xC || STM32F378xx */
mbed_official 330:c80ac197fa6a 489
mbed_official 330:c80ac197fa6a 490 #if defined(STM32F302xE) || defined(STM32F303xE) || defined(STM32F398xx)
mbed_official 330:c80ac197fa6a 491
mbed_official 330:c80ac197fa6a 492 /*------------------------------ TIM2 clock Configuration -------------------*/
mbed_official 330:c80ac197fa6a 493 if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_TIM2) == RCC_PERIPHCLK_TIM2)
mbed_official 330:c80ac197fa6a 494 {
mbed_official 330:c80ac197fa6a 495 /* Check the parameters */
mbed_official 330:c80ac197fa6a 496 assert_param(IS_RCC_TIM2CLKSOURCE(PeriphClkInit->Tim2ClockSelection));
mbed_official 330:c80ac197fa6a 497
mbed_official 330:c80ac197fa6a 498 /* Configure the CEC clock source */
mbed_official 330:c80ac197fa6a 499 __HAL_RCC_TIM2_CONFIG(PeriphClkInit->Tim2ClockSelection);
mbed_official 330:c80ac197fa6a 500 }
mbed_official 330:c80ac197fa6a 501
mbed_official 330:c80ac197fa6a 502 /*------------------------------ TIM3 clock Configuration -------------------*/
mbed_official 330:c80ac197fa6a 503 if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_TIM34) == RCC_PERIPHCLK_TIM34)
mbed_official 330:c80ac197fa6a 504 {
mbed_official 330:c80ac197fa6a 505 /* Check the parameters */
mbed_official 330:c80ac197fa6a 506 assert_param(IS_RCC_TIM3CLKSOURCE(PeriphClkInit->Tim34ClockSelection));
mbed_official 330:c80ac197fa6a 507
mbed_official 330:c80ac197fa6a 508 /* Configure the CEC clock source */
mbed_official 330:c80ac197fa6a 509 __HAL_RCC_TIM34_CONFIG(PeriphClkInit->Tim34ClockSelection);
mbed_official 330:c80ac197fa6a 510 }
mbed_official 330:c80ac197fa6a 511
mbed_official 330:c80ac197fa6a 512 /*------------------------------ TIM15 clock Configuration ------------------*/
mbed_official 330:c80ac197fa6a 513 if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_TIM15) == RCC_PERIPHCLK_TIM15)
mbed_official 330:c80ac197fa6a 514 {
mbed_official 330:c80ac197fa6a 515 /* Check the parameters */
mbed_official 330:c80ac197fa6a 516 assert_param(IS_RCC_TIM15CLKSOURCE(PeriphClkInit->Tim15ClockSelection));
mbed_official 330:c80ac197fa6a 517
mbed_official 330:c80ac197fa6a 518 /* Configure the CEC clock source */
mbed_official 330:c80ac197fa6a 519 __HAL_RCC_TIM15_CONFIG(PeriphClkInit->Tim15ClockSelection);
mbed_official 330:c80ac197fa6a 520 }
mbed_official 330:c80ac197fa6a 521
mbed_official 330:c80ac197fa6a 522 /*------------------------------ TIM16 clock Configuration ------------------*/
mbed_official 330:c80ac197fa6a 523 if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_TIM16) == RCC_PERIPHCLK_TIM16)
mbed_official 330:c80ac197fa6a 524 {
mbed_official 330:c80ac197fa6a 525 /* Check the parameters */
mbed_official 330:c80ac197fa6a 526 assert_param(IS_RCC_TIM16CLKSOURCE(PeriphClkInit->Tim16ClockSelection));
mbed_official 330:c80ac197fa6a 527
mbed_official 330:c80ac197fa6a 528 /* Configure the CEC clock source */
mbed_official 330:c80ac197fa6a 529 __HAL_RCC_TIM16_CONFIG(PeriphClkInit->Tim16ClockSelection);
mbed_official 330:c80ac197fa6a 530 }
mbed_official 330:c80ac197fa6a 531
mbed_official 330:c80ac197fa6a 532 /*------------------------------ TIM17 clock Configuration ------------------*/
mbed_official 330:c80ac197fa6a 533 if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_TIM17) == RCC_PERIPHCLK_TIM17)
mbed_official 330:c80ac197fa6a 534 {
mbed_official 330:c80ac197fa6a 535 /* Check the parameters */
mbed_official 330:c80ac197fa6a 536 assert_param(IS_RCC_TIM17CLKSOURCE(PeriphClkInit->Tim17ClockSelection));
mbed_official 330:c80ac197fa6a 537
mbed_official 330:c80ac197fa6a 538 /* Configure the CEC clock source */
mbed_official 330:c80ac197fa6a 539 __HAL_RCC_TIM17_CONFIG(PeriphClkInit->Tim17ClockSelection);
mbed_official 330:c80ac197fa6a 540 }
mbed_official 330:c80ac197fa6a 541
mbed_official 330:c80ac197fa6a 542 #endif /* STM32F302xE || STM32F303xE || STM32F398xx */
mbed_official 330:c80ac197fa6a 543
mbed_official 330:c80ac197fa6a 544 #if defined(STM32F303xE) || defined(STM32F398xx)
mbed_official 330:c80ac197fa6a 545 /*------------------------------ TIM20 clock Configuration ------------------*/
mbed_official 330:c80ac197fa6a 546 if(((PeriphClkInit->PeriphClockSelection) & RCC_PERIPHCLK_TIM20) == RCC_PERIPHCLK_TIM20)
mbed_official 330:c80ac197fa6a 547 {
mbed_official 330:c80ac197fa6a 548 /* Check the parameters */
mbed_official 330:c80ac197fa6a 549 assert_param(IS_RCC_TIM20CLKSOURCE(PeriphClkInit->Tim20ClockSelection));
mbed_official 330:c80ac197fa6a 550
mbed_official 330:c80ac197fa6a 551 /* Configure the CEC clock source */
mbed_official 330:c80ac197fa6a 552 __HAL_RCC_TIM20_CONFIG(PeriphClkInit->Tim20ClockSelection);
mbed_official 330:c80ac197fa6a 553 }
mbed_official 330:c80ac197fa6a 554 #endif /* STM32F303xE || STM32F398xx */
mbed_official 330:c80ac197fa6a 555
mbed_official 330:c80ac197fa6a 556
mbed_official 330:c80ac197fa6a 557 return HAL_OK;
mbed_official 330:c80ac197fa6a 558 }
mbed_official 330:c80ac197fa6a 559
mbed_official 330:c80ac197fa6a 560 /**
mbed_official 330:c80ac197fa6a 561 * @brief Get the RCC_ClkInitStruct according to the internal
mbed_official 330:c80ac197fa6a 562 * RCC configuration registers.
mbed_official 330:c80ac197fa6a 563 * @param PeriphClkInit: pointer to an RCC_PeriphCLKInitTypeDef structure that
mbed_official 330:c80ac197fa6a 564 * returns the configuration information for the Extended Peripherals clocks
mbed_official 330:c80ac197fa6a 565 * (ADC, CEC, I2C, I2S, SDADC, HRTIM, TIM, USART, RTC and USB clocks).
mbed_official 330:c80ac197fa6a 566 * @retval None
mbed_official 330:c80ac197fa6a 567 */
mbed_official 330:c80ac197fa6a 568 void HAL_RCCEx_GetPeriphCLKConfig(RCC_PeriphCLKInitTypeDef *PeriphClkInit)
mbed_official 330:c80ac197fa6a 569 {
mbed_official 330:c80ac197fa6a 570 /* Set all possible values for the extended clock type parameter------------*/
mbed_official 330:c80ac197fa6a 571 /* Common part first */
mbed_official 330:c80ac197fa6a 572 PeriphClkInit->PeriphClockSelection = RCC_PERIPHCLK_USART1 | RCC_PERIPHCLK_USART2 | RCC_PERIPHCLK_USART3 | \
mbed_official 330:c80ac197fa6a 573 RCC_PERIPHCLK_I2C1 | RCC_PERIPHCLK_RTC;
mbed_official 330:c80ac197fa6a 574
mbed_official 330:c80ac197fa6a 575 /* Get the RTC configuration --------------------------------------------*/
mbed_official 330:c80ac197fa6a 576 PeriphClkInit->RTCClockSelection = __HAL_RCC_GET_RTC_SOURCE();
mbed_official 330:c80ac197fa6a 577 /* Get the USART1 clock configuration --------------------------------------------*/
mbed_official 330:c80ac197fa6a 578 PeriphClkInit->Usart1ClockSelection = __HAL_RCC_GET_USART1_SOURCE();
mbed_official 330:c80ac197fa6a 579 /* Get the USART2 clock configuration -----------------------------------------*/
mbed_official 330:c80ac197fa6a 580 PeriphClkInit->Usart2ClockSelection = __HAL_RCC_GET_USART2_SOURCE();
mbed_official 330:c80ac197fa6a 581 /* Get the USART3 clock configuration -----------------------------------------*/
mbed_official 330:c80ac197fa6a 582 PeriphClkInit->Usart3ClockSelection = __HAL_RCC_GET_USART3_SOURCE();
mbed_official 330:c80ac197fa6a 583 /* Get the I2C1 clock configuration -----------------------------------------*/
mbed_official 330:c80ac197fa6a 584 PeriphClkInit->I2c1ClockSelection = __HAL_RCC_GET_I2C1_SOURCE();
mbed_official 330:c80ac197fa6a 585
mbed_official 330:c80ac197fa6a 586 #if defined(STM32F302xE) || defined(STM32F303xE) || \
mbed_official 330:c80ac197fa6a 587 defined(STM32F302xC) || defined(STM32F303xC) || \
mbed_official 330:c80ac197fa6a 588 defined(STM32F302x8) || \
mbed_official 330:c80ac197fa6a 589 defined(STM32F373xC)
mbed_official 330:c80ac197fa6a 590
mbed_official 330:c80ac197fa6a 591 PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_USB;
mbed_official 330:c80ac197fa6a 592 /* Get the USB clock configuration -----------------------------------------*/
mbed_official 330:c80ac197fa6a 593 PeriphClkInit->USBClockSelection = __HAL_RCC_GET_USB_SOURCE();
mbed_official 330:c80ac197fa6a 594
mbed_official 330:c80ac197fa6a 595 #endif /* STM32F302xE || STM32F303xE || */
mbed_official 330:c80ac197fa6a 596 /* STM32F302xC || STM32F303xC || */
mbed_official 330:c80ac197fa6a 597 /* STM32F302x8 || */
mbed_official 330:c80ac197fa6a 598 /* STM32F373xC */
mbed_official 330:c80ac197fa6a 599
mbed_official 330:c80ac197fa6a 600 #if defined(STM32F302xE) || defined(STM32F303xE) || defined(STM32F398xx) || \
mbed_official 330:c80ac197fa6a 601 defined(STM32F302xC) || defined(STM32F303xC) || defined(STM32F358xx) || \
mbed_official 330:c80ac197fa6a 602 defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx) || \
mbed_official 330:c80ac197fa6a 603 defined(STM32F373xC) || defined(STM32F378xx)
mbed_official 330:c80ac197fa6a 604
mbed_official 330:c80ac197fa6a 605 PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_I2C2;
mbed_official 330:c80ac197fa6a 606 /* Get the I2C2 clock configuration -----------------------------------------*/
mbed_official 330:c80ac197fa6a 607 PeriphClkInit->I2c2ClockSelection = __HAL_RCC_GET_I2C2_SOURCE();
mbed_official 330:c80ac197fa6a 608
mbed_official 330:c80ac197fa6a 609 #endif /* STM32F302xE || STM32F303xE || STM32F398xx || */
mbed_official 330:c80ac197fa6a 610 /* STM32F302xC || STM32F303xC || STM32F358xx || */
mbed_official 330:c80ac197fa6a 611 /* STM32F301x8 || STM32F302x8 || STM32F318xx || */
mbed_official 330:c80ac197fa6a 612 /* STM32F373xC || STM32F378xx */
mbed_official 330:c80ac197fa6a 613
mbed_official 330:c80ac197fa6a 614 #if defined(STM32F302xE) || defined(STM32F303xE) || defined(STM32F398xx) || \
mbed_official 330:c80ac197fa6a 615 defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
mbed_official 330:c80ac197fa6a 616
mbed_official 330:c80ac197fa6a 617 PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_I2C3;
mbed_official 330:c80ac197fa6a 618 /* Get the I2C3 clock configuration -----------------------------------------*/
mbed_official 330:c80ac197fa6a 619 PeriphClkInit->I2c3ClockSelection = __HAL_RCC_GET_I2C3_SOURCE();
mbed_official 330:c80ac197fa6a 620
mbed_official 330:c80ac197fa6a 621 #endif /* STM32F302xE || STM32F303xE || STM32F398xx || */
mbed_official 330:c80ac197fa6a 622 /* STM32F301x8 || STM32F302x8 || STM32F318xx */
mbed_official 330:c80ac197fa6a 623
mbed_official 330:c80ac197fa6a 624 #if defined(STM32F302xE) || defined(STM32F303xE) || defined(STM32F398xx) || \
mbed_official 330:c80ac197fa6a 625 defined(STM32F302xC) || defined(STM32F303xC) ||defined(STM32F358xx)
mbed_official 330:c80ac197fa6a 626
mbed_official 330:c80ac197fa6a 627 PeriphClkInit->PeriphClockSelection |= (RCC_PERIPHCLK_UART4 | RCC_PERIPHCLK_UART5);
mbed_official 330:c80ac197fa6a 628 /* Get the UART4 clock configuration -----------------------------------------*/
mbed_official 330:c80ac197fa6a 629 PeriphClkInit->Uart4ClockSelection = __HAL_RCC_GET_UART4_SOURCE();
mbed_official 330:c80ac197fa6a 630 /* Get the UART5 clock configuration -----------------------------------------*/
mbed_official 330:c80ac197fa6a 631 PeriphClkInit->Uart5ClockSelection = __HAL_RCC_GET_UART5_SOURCE();
mbed_official 330:c80ac197fa6a 632
mbed_official 330:c80ac197fa6a 633 #endif /* STM32F302xE || STM32F303xE || STM32F398xx || */
mbed_official 330:c80ac197fa6a 634 /* STM32F302xC || STM32F303xC || STM32F358xx */
mbed_official 330:c80ac197fa6a 635
mbed_official 330:c80ac197fa6a 636 #if defined(STM32F302xE) || defined(STM32F303xE) || defined(STM32F398xx) || \
mbed_official 330:c80ac197fa6a 637 defined(STM32F302xC) || defined(STM32F303xC) || defined(STM32F358xx) || \
mbed_official 330:c80ac197fa6a 638 defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
mbed_official 330:c80ac197fa6a 639
mbed_official 330:c80ac197fa6a 640 PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_I2S;
mbed_official 330:c80ac197fa6a 641 /* Get the I2S clock configuration -----------------------------------------*/
mbed_official 330:c80ac197fa6a 642 PeriphClkInit->I2sClockSelection = __HAL_RCC_GET_I2S_SOURCE();
mbed_official 330:c80ac197fa6a 643
mbed_official 330:c80ac197fa6a 644 #endif /* STM32F302xE || STM32F303xE || STM32F398xx || */
mbed_official 330:c80ac197fa6a 645 /* STM32F302xC || STM32F303xC || STM32F358xx || */
mbed_official 330:c80ac197fa6a 646 /* STM32F301x8 || STM32F302x8 || STM32F318xx || */
mbed_official 330:c80ac197fa6a 647
mbed_official 330:c80ac197fa6a 648 #if defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx) || \
mbed_official 330:c80ac197fa6a 649 defined(STM32F373xC) || defined(STM32F378xx)
mbed_official 330:c80ac197fa6a 650
mbed_official 330:c80ac197fa6a 651 PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_ADC1;
mbed_official 330:c80ac197fa6a 652 /* Get the ADC1 clock configuration -----------------------------------------*/
mbed_official 330:c80ac197fa6a 653 PeriphClkInit->Adc1ClockSelection = __HAL_RCC_GET_ADC1_SOURCE();
mbed_official 330:c80ac197fa6a 654
mbed_official 330:c80ac197fa6a 655 #endif /* STM32F301x8 || STM32F302x8 || STM32F318xx || */
mbed_official 330:c80ac197fa6a 656 /* STM32F373xC || STM32F378xx */
mbed_official 330:c80ac197fa6a 657
mbed_official 330:c80ac197fa6a 658 #if defined(STM32F302xE) || defined(STM32F303xE) || defined(STM32F398xx) || \
mbed_official 330:c80ac197fa6a 659 defined(STM32F302xC) || defined(STM32F303xC) || defined(STM32F358xx) || \
mbed_official 330:c80ac197fa6a 660 defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx)
mbed_official 330:c80ac197fa6a 661
mbed_official 330:c80ac197fa6a 662 PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_ADC12;
mbed_official 330:c80ac197fa6a 663 /* Get the ADC1 & ADC2 clock configuration -----------------------------------------*/
mbed_official 330:c80ac197fa6a 664 PeriphClkInit->Adc12ClockSelection = __HAL_RCC_GET_ADC12_SOURCE();
mbed_official 330:c80ac197fa6a 665
mbed_official 330:c80ac197fa6a 666 #endif /* STM32F302xE || STM32F303xE || STM32F398xx || */
mbed_official 330:c80ac197fa6a 667 /* STM32F302xC || STM32F303xC || STM32F358xx || */
mbed_official 330:c80ac197fa6a 668 /* STM32F303x8 || STM32F334x8 || STM32F328xx */
mbed_official 330:c80ac197fa6a 669
mbed_official 330:c80ac197fa6a 670 #if defined(STM32F303xE) || defined(STM32F398xx) || \
mbed_official 330:c80ac197fa6a 671 defined(STM32F303xC) || defined(STM32F358xx)
mbed_official 330:c80ac197fa6a 672
mbed_official 330:c80ac197fa6a 673 PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_ADC34;
mbed_official 330:c80ac197fa6a 674 /* Get the ADC3 & ADC4 clock configuration -----------------------------------------*/
mbed_official 330:c80ac197fa6a 675 PeriphClkInit->Adc34ClockSelection = __HAL_RCC_GET_ADC34_SOURCE();
mbed_official 330:c80ac197fa6a 676
mbed_official 330:c80ac197fa6a 677 #endif /* STM32F303xE || STM32F398xx || */
mbed_official 330:c80ac197fa6a 678 /* STM32F303xC || STM32F358xx */
mbed_official 330:c80ac197fa6a 679
mbed_official 330:c80ac197fa6a 680 #if defined(STM32F302xE) || defined(STM32F303xE) || defined(STM32F398xx) || \
mbed_official 330:c80ac197fa6a 681 defined(STM32F302xC) || defined(STM32F303xC) || defined(STM32F358xx) || \
mbed_official 330:c80ac197fa6a 682 defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx) || \
mbed_official 330:c80ac197fa6a 683 defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
mbed_official 330:c80ac197fa6a 684
mbed_official 330:c80ac197fa6a 685 PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_TIM1;
mbed_official 330:c80ac197fa6a 686 /* Get the TIM1 clock configuration -----------------------------------------*/
mbed_official 330:c80ac197fa6a 687 PeriphClkInit->Tim1ClockSelection = __HAL_RCC_GET_TIM1_SOURCE();
mbed_official 330:c80ac197fa6a 688
mbed_official 330:c80ac197fa6a 689 #endif /* STM32F302xE || STM32F303xE || STM32F398xx || */
mbed_official 330:c80ac197fa6a 690 /* STM32F302xC || STM32F303xC || STM32F358xx || */
mbed_official 330:c80ac197fa6a 691 /* STM32F303x8 || STM32F334x8 || STM32F328xx || */
mbed_official 330:c80ac197fa6a 692 /* STM32F301x8 || STM32F302x8 || STM32F318xx */
mbed_official 330:c80ac197fa6a 693
mbed_official 330:c80ac197fa6a 694 #if defined(STM32F303xE) || defined(STM32F398xx) || \
mbed_official 330:c80ac197fa6a 695 defined(STM32F303xC) || defined(STM32F358xx)
mbed_official 330:c80ac197fa6a 696
mbed_official 330:c80ac197fa6a 697 PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_TIM8;
mbed_official 330:c80ac197fa6a 698 /* Get the TIM8 clock configuration -----------------------------------------*/
mbed_official 330:c80ac197fa6a 699 PeriphClkInit->Tim8ClockSelection = __HAL_RCC_GET_TIM8_SOURCE();
mbed_official 330:c80ac197fa6a 700
mbed_official 330:c80ac197fa6a 701 #endif /* STM32F303xE || STM32F398xx || */
mbed_official 330:c80ac197fa6a 702 /* STM32F303xC || STM32F358xx */
mbed_official 330:c80ac197fa6a 703
mbed_official 330:c80ac197fa6a 704 #if defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx)
mbed_official 330:c80ac197fa6a 705
mbed_official 330:c80ac197fa6a 706 PeriphClkInit->PeriphClockSelection |= (RCC_PERIPHCLK_TIM15 | RCC_PERIPHCLK_TIM16 | RCC_PERIPHCLK_TIM17);
mbed_official 330:c80ac197fa6a 707 /* Get the TIM15 clock configuration -----------------------------------------*/
mbed_official 330:c80ac197fa6a 708 PeriphClkInit->Tim15ClockSelection = __HAL_RCC_GET_TIM15_SOURCE();
mbed_official 330:c80ac197fa6a 709 /* Get the TIM16 clock configuration -----------------------------------------*/
mbed_official 330:c80ac197fa6a 710 PeriphClkInit->Tim16ClockSelection = __HAL_RCC_GET_TIM16_SOURCE();
mbed_official 330:c80ac197fa6a 711 /* Get the TIM17 clock configuration -----------------------------------------*/
mbed_official 330:c80ac197fa6a 712 PeriphClkInit->Tim17ClockSelection = __HAL_RCC_GET_TIM17_SOURCE();
mbed_official 330:c80ac197fa6a 713
mbed_official 330:c80ac197fa6a 714 #endif /* STM32F301x8 || STM32F302x8 || STM32F318xx */
mbed_official 330:c80ac197fa6a 715
mbed_official 330:c80ac197fa6a 716 #if defined(STM32F334x8)
mbed_official 330:c80ac197fa6a 717
mbed_official 330:c80ac197fa6a 718 PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_HRTIM1;
mbed_official 330:c80ac197fa6a 719 /* Get the HRTIM1 clock configuration -----------------------------------------*/
mbed_official 330:c80ac197fa6a 720 PeriphClkInit->Hrtim1ClockSelection = __HAL_RCC_GET_HRTIM1_SOURCE();
mbed_official 330:c80ac197fa6a 721
mbed_official 330:c80ac197fa6a 722 #endif /* STM32F334x8 */
mbed_official 330:c80ac197fa6a 723
mbed_official 330:c80ac197fa6a 724 #if defined(STM32F373xC) || defined(STM32F378xx)
mbed_official 330:c80ac197fa6a 725
mbed_official 330:c80ac197fa6a 726 PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_SDADC;
mbed_official 330:c80ac197fa6a 727 /* Get the SDADC clock configuration -----------------------------------------*/
mbed_official 330:c80ac197fa6a 728 PeriphClkInit->SdadcClockSelection = __HAL_RCC_GET_SDADC_SOURCE();
mbed_official 330:c80ac197fa6a 729
mbed_official 330:c80ac197fa6a 730 PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_CEC;
mbed_official 330:c80ac197fa6a 731 /* Get the CEC clock configuration -----------------------------------------*/
mbed_official 330:c80ac197fa6a 732 PeriphClkInit->CecClockSelection = __HAL_RCC_GET_CEC_SOURCE();
mbed_official 330:c80ac197fa6a 733
mbed_official 330:c80ac197fa6a 734 #endif /* STM32F373xC || STM32F378xx */
mbed_official 330:c80ac197fa6a 735
mbed_official 330:c80ac197fa6a 736 #if defined(STM32F302xE) || defined(STM32F303xE) || defined(STM32F398xx)
mbed_official 330:c80ac197fa6a 737
mbed_official 330:c80ac197fa6a 738 PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_TIM2;
mbed_official 330:c80ac197fa6a 739 /* Get the TIM2 clock configuration -----------------------------------------*/
mbed_official 330:c80ac197fa6a 740 PeriphClkInit->Tim2ClockSelection = __HAL_RCC_GET_TIM2_SOURCE();
mbed_official 330:c80ac197fa6a 741
mbed_official 330:c80ac197fa6a 742 PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_TIM34;
mbed_official 330:c80ac197fa6a 743 /* Get the TIM3 clock configuration -----------------------------------------*/
mbed_official 330:c80ac197fa6a 744 PeriphClkInit->Tim34ClockSelection = __HAL_RCC_GET_TIM34_SOURCE();
mbed_official 330:c80ac197fa6a 745
mbed_official 330:c80ac197fa6a 746 PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_TIM15;
mbed_official 330:c80ac197fa6a 747 /* Get the TIM15 clock configuration -----------------------------------------*/
mbed_official 330:c80ac197fa6a 748 PeriphClkInit->Tim15ClockSelection = __HAL_RCC_GET_TIM15_SOURCE();
mbed_official 330:c80ac197fa6a 749
mbed_official 330:c80ac197fa6a 750 PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_TIM16;
mbed_official 330:c80ac197fa6a 751 /* Get the TIM16 clock configuration -----------------------------------------*/
mbed_official 330:c80ac197fa6a 752 PeriphClkInit->Tim16ClockSelection = __HAL_RCC_GET_TIM16_SOURCE();
mbed_official 330:c80ac197fa6a 753
mbed_official 330:c80ac197fa6a 754 PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_TIM17;
mbed_official 330:c80ac197fa6a 755 /* Get the TIM17 clock configuration -----------------------------------------*/
mbed_official 330:c80ac197fa6a 756 PeriphClkInit->Tim17ClockSelection = __HAL_RCC_GET_TIM17_SOURCE();
mbed_official 330:c80ac197fa6a 757
mbed_official 330:c80ac197fa6a 758 #endif /* STM32F302xE || STM32F303xE || STM32F398xx */
mbed_official 330:c80ac197fa6a 759
mbed_official 330:c80ac197fa6a 760 #if defined (STM32F303xE) || defined(STM32F398xx)
mbed_official 330:c80ac197fa6a 761 PeriphClkInit->PeriphClockSelection |= RCC_PERIPHCLK_TIM20;
mbed_official 330:c80ac197fa6a 762 /* Get the TIM20 clock configuration -----------------------------------------*/
mbed_official 330:c80ac197fa6a 763 PeriphClkInit->Tim20ClockSelection = __HAL_RCC_GET_TIM20_SOURCE();
mbed_official 330:c80ac197fa6a 764 #endif /* STM32F303xE || STM32F398xx */
mbed_official 330:c80ac197fa6a 765 }
mbed_official 330:c80ac197fa6a 766
mbed_official 330:c80ac197fa6a 767 /**
mbed_official 330:c80ac197fa6a 768 * @brief Initializes the RCC Oscillators according to the specified parameters in the
mbed_official 330:c80ac197fa6a 769 * RCC_OscInitTypeDef.
mbed_official 330:c80ac197fa6a 770 * @param RCC_OscInitStruct: pointer to an RCC_OscInitTypeDef structure that
mbed_official 330:c80ac197fa6a 771 * contains the configuration information for the RCC Oscillators.
mbed_official 330:c80ac197fa6a 772 * @note The PLL is not disabled when used as system clock.
mbed_official 330:c80ac197fa6a 773 * @retval HAL status
mbed_official 330:c80ac197fa6a 774 */
mbed_official 330:c80ac197fa6a 775 HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
mbed_official 330:c80ac197fa6a 776 {
mbed_official 330:c80ac197fa6a 777 uint32_t tickstart = 0;
mbed_official 330:c80ac197fa6a 778
mbed_official 330:c80ac197fa6a 779 /* Check the parameters */
mbed_official 632:7687fb9c4f91 780 assert_param(RCC_OscInitStruct != NULL);
mbed_official 330:c80ac197fa6a 781 assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType));
mbed_official 330:c80ac197fa6a 782 /*------------------------------- HSE Configuration ------------------------*/
mbed_official 330:c80ac197fa6a 783 if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE)
mbed_official 330:c80ac197fa6a 784 {
mbed_official 330:c80ac197fa6a 785 /* Check the parameters */
mbed_official 330:c80ac197fa6a 786 assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState));
mbed_official 330:c80ac197fa6a 787 /* When the HSE is used as system clock or clock source for PLL in these cases HSE will not disabled */
mbed_official 330:c80ac197fa6a 788 if((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSE) ||
mbed_official 330:c80ac197fa6a 789 ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (__HAL_RCC_GET_PLL_OSCSOURCE() == RCC_PLLSOURCE_HSE)))
mbed_official 330:c80ac197fa6a 790 {
mbed_official 330:c80ac197fa6a 791 if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState != RCC_HSE_ON))
mbed_official 330:c80ac197fa6a 792 {
mbed_official 330:c80ac197fa6a 793 return HAL_ERROR;
mbed_official 330:c80ac197fa6a 794 }
mbed_official 330:c80ac197fa6a 795 }
mbed_official 330:c80ac197fa6a 796 else
mbed_official 330:c80ac197fa6a 797 {
mbed_official 330:c80ac197fa6a 798 /* Reset HSEON and HSEBYP bits before configuring the HSE --------------*/
mbed_official 330:c80ac197fa6a 799 __HAL_RCC_HSE_CONFIG(RCC_HSE_OFF);
mbed_official 330:c80ac197fa6a 800
mbed_official 330:c80ac197fa6a 801 /* Get timeout */
mbed_official 330:c80ac197fa6a 802 tickstart = HAL_GetTick();
mbed_official 330:c80ac197fa6a 803
mbed_official 330:c80ac197fa6a 804 /* Wait till HSE is bypassed or disabled */
mbed_official 330:c80ac197fa6a 805 while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET)
mbed_official 330:c80ac197fa6a 806 {
mbed_official 330:c80ac197fa6a 807 if((HAL_GetTick()-tickstart) > HSE_TIMEOUT_VALUE)
mbed_official 330:c80ac197fa6a 808 {
mbed_official 330:c80ac197fa6a 809 return HAL_TIMEOUT;
mbed_official 330:c80ac197fa6a 810 }
mbed_official 330:c80ac197fa6a 811 }
mbed_official 330:c80ac197fa6a 812
mbed_official 330:c80ac197fa6a 813 /* Set the new HSE configuration ---------------------------------------*/
mbed_official 330:c80ac197fa6a 814 __HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState);
mbed_official 330:c80ac197fa6a 815
mbed_official 330:c80ac197fa6a 816 #if defined(STM32F302xC) || defined(STM32F303xC) || defined(STM32F358xx) || \
mbed_official 330:c80ac197fa6a 817 defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx) || \
mbed_official 330:c80ac197fa6a 818 defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx) || \
mbed_official 330:c80ac197fa6a 819 defined(STM32F373xC) || defined(STM32F378xx)
mbed_official 330:c80ac197fa6a 820 /* Configure the HSE predivision factor --------------------------------*/
mbed_official 330:c80ac197fa6a 821 __HAL_RCC_HSE_PREDIV_CONFIG(RCC_OscInitStruct->HSEPredivValue);
mbed_official 330:c80ac197fa6a 822 #endif /* STM32F302xC || STM32F303xC || STM32F358xx || */
mbed_official 330:c80ac197fa6a 823 /* STM32F303x8 || STM32F334x8 || STM32F328xx || */
mbed_official 330:c80ac197fa6a 824 /* STM32F301x8 || STM32F302x8 || STM32F318xx */
mbed_official 330:c80ac197fa6a 825 /* STM32F373xC || STM32F378xx */
mbed_official 330:c80ac197fa6a 826
mbed_official 330:c80ac197fa6a 827 /* Check the HSE State */
mbed_official 330:c80ac197fa6a 828 if(RCC_OscInitStruct->HSEState == RCC_HSE_ON)
mbed_official 330:c80ac197fa6a 829 {
mbed_official 330:c80ac197fa6a 830 /* Get timeout */
mbed_official 330:c80ac197fa6a 831 tickstart = HAL_GetTick();
mbed_official 330:c80ac197fa6a 832
mbed_official 330:c80ac197fa6a 833 /* Wait till HSE is ready */
mbed_official 330:c80ac197fa6a 834 while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET)
mbed_official 330:c80ac197fa6a 835 {
mbed_official 330:c80ac197fa6a 836 if((HAL_GetTick()-tickstart) > HSE_TIMEOUT_VALUE)
mbed_official 330:c80ac197fa6a 837 {
mbed_official 330:c80ac197fa6a 838 return HAL_TIMEOUT;
mbed_official 330:c80ac197fa6a 839 }
mbed_official 330:c80ac197fa6a 840 }
mbed_official 330:c80ac197fa6a 841 }
mbed_official 330:c80ac197fa6a 842 else
mbed_official 330:c80ac197fa6a 843 {
mbed_official 330:c80ac197fa6a 844 /* Get timeout */
mbed_official 330:c80ac197fa6a 845 tickstart = HAL_GetTick();
mbed_official 330:c80ac197fa6a 846
mbed_official 330:c80ac197fa6a 847 /* Wait till HSE is bypassed or disabled */
mbed_official 330:c80ac197fa6a 848 while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET)
mbed_official 330:c80ac197fa6a 849 {
mbed_official 330:c80ac197fa6a 850 if((HAL_GetTick()-tickstart) > HSE_TIMEOUT_VALUE)
mbed_official 330:c80ac197fa6a 851 {
mbed_official 330:c80ac197fa6a 852 return HAL_TIMEOUT;
mbed_official 330:c80ac197fa6a 853 }
mbed_official 330:c80ac197fa6a 854 }
mbed_official 330:c80ac197fa6a 855 }
mbed_official 330:c80ac197fa6a 856 }
mbed_official 330:c80ac197fa6a 857 }
mbed_official 330:c80ac197fa6a 858 /*----------------------------- HSI Configuration --------------------------*/
mbed_official 330:c80ac197fa6a 859 if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI)
mbed_official 330:c80ac197fa6a 860 {
mbed_official 330:c80ac197fa6a 861 /* Check the parameters */
mbed_official 330:c80ac197fa6a 862 assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState));
mbed_official 330:c80ac197fa6a 863 assert_param(IS_RCC_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue));
mbed_official 330:c80ac197fa6a 864
mbed_official 330:c80ac197fa6a 865 /* Check if HSI is used as system clock or as PLL source when PLL is selected as system clock */
mbed_official 330:c80ac197fa6a 866 if((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSI) ||
mbed_official 330:c80ac197fa6a 867 ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && (__HAL_RCC_GET_PLL_OSCSOURCE() == RCC_PLLSOURCE_HSI)))
mbed_official 330:c80ac197fa6a 868 {
mbed_official 330:c80ac197fa6a 869 /* When the HSI is used as system clock it is not allowed to be disabled */
mbed_official 330:c80ac197fa6a 870 if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON))
mbed_official 330:c80ac197fa6a 871 {
mbed_official 330:c80ac197fa6a 872 return HAL_ERROR;
mbed_official 330:c80ac197fa6a 873 }
mbed_official 330:c80ac197fa6a 874 /* Otherwise, just the calibration is allowed */
mbed_official 330:c80ac197fa6a 875 else
mbed_official 330:c80ac197fa6a 876 {
mbed_official 330:c80ac197fa6a 877 /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/
mbed_official 330:c80ac197fa6a 878 __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue);
mbed_official 330:c80ac197fa6a 879 }
mbed_official 330:c80ac197fa6a 880 }
mbed_official 330:c80ac197fa6a 881 else
mbed_official 330:c80ac197fa6a 882 {
mbed_official 330:c80ac197fa6a 883 /* Check the HSI State */
mbed_official 330:c80ac197fa6a 884 if(RCC_OscInitStruct->HSIState != RCC_HSI_OFF)
mbed_official 330:c80ac197fa6a 885 {
mbed_official 330:c80ac197fa6a 886 /* Enable the Internal High Speed oscillator (HSI). */
mbed_official 330:c80ac197fa6a 887 __HAL_RCC_HSI_ENABLE();
mbed_official 330:c80ac197fa6a 888
mbed_official 330:c80ac197fa6a 889 /* Get timeout */
mbed_official 330:c80ac197fa6a 890 tickstart = HAL_GetTick();
mbed_official 330:c80ac197fa6a 891
mbed_official 330:c80ac197fa6a 892 /* Wait till HSI is ready */
mbed_official 330:c80ac197fa6a 893 while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET)
mbed_official 330:c80ac197fa6a 894 {
mbed_official 330:c80ac197fa6a 895 if((HAL_GetTick()-tickstart) > HSI_TIMEOUT_VALUE)
mbed_official 330:c80ac197fa6a 896 {
mbed_official 330:c80ac197fa6a 897 return HAL_TIMEOUT;
mbed_official 330:c80ac197fa6a 898 }
mbed_official 330:c80ac197fa6a 899 }
mbed_official 330:c80ac197fa6a 900
mbed_official 330:c80ac197fa6a 901 /* Adjusts the Internal High Speed oscillator (HSI) calibration value.*/
mbed_official 330:c80ac197fa6a 902 __HAL_RCC_HSI_CALIBRATIONVALUE_ADJUST(RCC_OscInitStruct->HSICalibrationValue);
mbed_official 330:c80ac197fa6a 903 }
mbed_official 330:c80ac197fa6a 904 else
mbed_official 330:c80ac197fa6a 905 {
mbed_official 330:c80ac197fa6a 906 /* Disable the Internal High Speed oscillator (HSI). */
mbed_official 330:c80ac197fa6a 907 __HAL_RCC_HSI_DISABLE();
mbed_official 330:c80ac197fa6a 908
mbed_official 330:c80ac197fa6a 909 /* Get timeout */
mbed_official 330:c80ac197fa6a 910 tickstart = HAL_GetTick();
mbed_official 330:c80ac197fa6a 911
mbed_official 330:c80ac197fa6a 912 /* Wait till HSI is ready */
mbed_official 330:c80ac197fa6a 913 while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET)
mbed_official 330:c80ac197fa6a 914 {
mbed_official 330:c80ac197fa6a 915 if((HAL_GetTick()-tickstart) > HSI_TIMEOUT_VALUE)
mbed_official 330:c80ac197fa6a 916 {
mbed_official 330:c80ac197fa6a 917 return HAL_TIMEOUT;
mbed_official 330:c80ac197fa6a 918 }
mbed_official 330:c80ac197fa6a 919 }
mbed_official 330:c80ac197fa6a 920 }
mbed_official 330:c80ac197fa6a 921 }
mbed_official 330:c80ac197fa6a 922 }
mbed_official 330:c80ac197fa6a 923 /*------------------------------ LSI Configuration -------------------------*/
mbed_official 330:c80ac197fa6a 924 if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI)
mbed_official 330:c80ac197fa6a 925 {
mbed_official 330:c80ac197fa6a 926 /* Check the parameters */
mbed_official 330:c80ac197fa6a 927 assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState));
mbed_official 330:c80ac197fa6a 928
mbed_official 330:c80ac197fa6a 929 /* Check the LSI State */
mbed_official 330:c80ac197fa6a 930 if(RCC_OscInitStruct->LSIState != RCC_LSI_OFF)
mbed_official 330:c80ac197fa6a 931 {
mbed_official 330:c80ac197fa6a 932 /* Enable the Internal Low Speed oscillator (LSI). */
mbed_official 330:c80ac197fa6a 933 __HAL_RCC_LSI_ENABLE();
mbed_official 330:c80ac197fa6a 934
mbed_official 330:c80ac197fa6a 935 /* Get timeout */
mbed_official 330:c80ac197fa6a 936 tickstart = HAL_GetTick();
mbed_official 330:c80ac197fa6a 937
mbed_official 330:c80ac197fa6a 938 /* Wait till LSI is ready */
mbed_official 330:c80ac197fa6a 939 while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET)
mbed_official 330:c80ac197fa6a 940 {
mbed_official 330:c80ac197fa6a 941 if((HAL_GetTick()-tickstart) > LSI_TIMEOUT_VALUE)
mbed_official 330:c80ac197fa6a 942 {
mbed_official 330:c80ac197fa6a 943 return HAL_TIMEOUT;
mbed_official 330:c80ac197fa6a 944 }
mbed_official 330:c80ac197fa6a 945 }
mbed_official 330:c80ac197fa6a 946 }
mbed_official 330:c80ac197fa6a 947 else
mbed_official 330:c80ac197fa6a 948 {
mbed_official 330:c80ac197fa6a 949 /* Disable the Internal Low Speed oscillator (LSI). */
mbed_official 330:c80ac197fa6a 950 __HAL_RCC_LSI_DISABLE();
mbed_official 330:c80ac197fa6a 951
mbed_official 330:c80ac197fa6a 952 /* Get timeout */
mbed_official 330:c80ac197fa6a 953 tickstart = HAL_GetTick();
mbed_official 330:c80ac197fa6a 954
mbed_official 330:c80ac197fa6a 955 /* Wait till LSI is ready */
mbed_official 330:c80ac197fa6a 956 while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET)
mbed_official 330:c80ac197fa6a 957 {
mbed_official 330:c80ac197fa6a 958 if((HAL_GetTick()-tickstart) > LSI_TIMEOUT_VALUE)
mbed_official 330:c80ac197fa6a 959 {
mbed_official 330:c80ac197fa6a 960 return HAL_TIMEOUT;
mbed_official 330:c80ac197fa6a 961 }
mbed_official 330:c80ac197fa6a 962 }
mbed_official 330:c80ac197fa6a 963 }
mbed_official 330:c80ac197fa6a 964 }
mbed_official 330:c80ac197fa6a 965 /*------------------------------ LSE Configuration -------------------------*/
mbed_official 330:c80ac197fa6a 966 if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE)
mbed_official 330:c80ac197fa6a 967 {
mbed_official 330:c80ac197fa6a 968 /* Check the parameters */
mbed_official 330:c80ac197fa6a 969 assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState));
mbed_official 330:c80ac197fa6a 970
mbed_official 330:c80ac197fa6a 971 /* Enable Power Clock*/
mbed_official 330:c80ac197fa6a 972 __PWR_CLK_ENABLE();
mbed_official 330:c80ac197fa6a 973
mbed_official 330:c80ac197fa6a 974 /* Enable write access to Backup domain */
mbed_official 330:c80ac197fa6a 975 SET_BIT(PWR->CR, PWR_CR_DBP);
mbed_official 330:c80ac197fa6a 976
mbed_official 330:c80ac197fa6a 977 /* Wait for Backup domain Write protection disable */
mbed_official 330:c80ac197fa6a 978 tickstart = HAL_GetTick();
mbed_official 330:c80ac197fa6a 979
mbed_official 330:c80ac197fa6a 980 while((PWR->CR & PWR_CR_DBP) == RESET)
mbed_official 330:c80ac197fa6a 981 {
mbed_official 330:c80ac197fa6a 982 if((HAL_GetTick()-tickstart) > DBP_TIMEOUT_VALUE)
mbed_official 330:c80ac197fa6a 983 {
mbed_official 330:c80ac197fa6a 984 return HAL_TIMEOUT;
mbed_official 330:c80ac197fa6a 985 }
mbed_official 330:c80ac197fa6a 986 }
mbed_official 330:c80ac197fa6a 987
mbed_official 330:c80ac197fa6a 988 /* Reset LSEON and LSEBYP bits before configuring the LSE ----------------*/
mbed_official 330:c80ac197fa6a 989 __HAL_RCC_LSE_CONFIG(RCC_LSE_OFF);
mbed_official 330:c80ac197fa6a 990
mbed_official 330:c80ac197fa6a 991 /* Get timeout */
mbed_official 330:c80ac197fa6a 992 tickstart = HAL_GetTick();
mbed_official 330:c80ac197fa6a 993
mbed_official 330:c80ac197fa6a 994 /* Wait till LSE is ready */
mbed_official 330:c80ac197fa6a 995 while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET)
mbed_official 330:c80ac197fa6a 996 {
mbed_official 330:c80ac197fa6a 997 if((HAL_GetTick()-tickstart) > LSE_TIMEOUT_VALUE)
mbed_official 330:c80ac197fa6a 998 {
mbed_official 330:c80ac197fa6a 999 return HAL_TIMEOUT;
mbed_official 330:c80ac197fa6a 1000 }
mbed_official 330:c80ac197fa6a 1001 }
mbed_official 330:c80ac197fa6a 1002
mbed_official 330:c80ac197fa6a 1003 /* Set the new LSE configuration -----------------------------------------*/
mbed_official 330:c80ac197fa6a 1004 __HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState);
mbed_official 330:c80ac197fa6a 1005 /* Check the LSE State */
mbed_official 330:c80ac197fa6a 1006 if(RCC_OscInitStruct->LSEState == RCC_LSE_ON)
mbed_official 330:c80ac197fa6a 1007 {
mbed_official 330:c80ac197fa6a 1008 /* Get timeout */
mbed_official 330:c80ac197fa6a 1009 tickstart = HAL_GetTick();
mbed_official 330:c80ac197fa6a 1010
mbed_official 330:c80ac197fa6a 1011 /* Wait till LSE is ready */
mbed_official 330:c80ac197fa6a 1012 while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
mbed_official 330:c80ac197fa6a 1013 {
mbed_official 330:c80ac197fa6a 1014 if((HAL_GetTick()-tickstart) > LSE_TIMEOUT_VALUE)
mbed_official 330:c80ac197fa6a 1015 {
mbed_official 330:c80ac197fa6a 1016 return HAL_TIMEOUT;
mbed_official 330:c80ac197fa6a 1017 }
mbed_official 330:c80ac197fa6a 1018 }
mbed_official 330:c80ac197fa6a 1019 }
mbed_official 330:c80ac197fa6a 1020 else
mbed_official 330:c80ac197fa6a 1021 {
mbed_official 330:c80ac197fa6a 1022 /* Get timeout */
mbed_official 330:c80ac197fa6a 1023 tickstart = HAL_GetTick();
mbed_official 330:c80ac197fa6a 1024
mbed_official 330:c80ac197fa6a 1025 /* Wait till LSE is ready */
mbed_official 330:c80ac197fa6a 1026 while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET)
mbed_official 330:c80ac197fa6a 1027 {
mbed_official 330:c80ac197fa6a 1028 if((HAL_GetTick()-tickstart) > LSE_TIMEOUT_VALUE)
mbed_official 330:c80ac197fa6a 1029 {
mbed_official 330:c80ac197fa6a 1030 return HAL_TIMEOUT;
mbed_official 330:c80ac197fa6a 1031 }
mbed_official 330:c80ac197fa6a 1032 }
mbed_official 330:c80ac197fa6a 1033 }
mbed_official 330:c80ac197fa6a 1034 }
mbed_official 330:c80ac197fa6a 1035 /*-------------------------------- PLL Configuration -----------------------*/
mbed_official 330:c80ac197fa6a 1036 /* Check the parameters */
mbed_official 330:c80ac197fa6a 1037 assert_param(IS_RCC_PLL(RCC_OscInitStruct->PLL.PLLState));
mbed_official 330:c80ac197fa6a 1038 if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE)
mbed_official 330:c80ac197fa6a 1039 {
mbed_official 330:c80ac197fa6a 1040 /* Check if the PLL is used as system clock or not */
mbed_official 330:c80ac197fa6a 1041 if(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK)
mbed_official 330:c80ac197fa6a 1042 {
mbed_official 330:c80ac197fa6a 1043 if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON)
mbed_official 330:c80ac197fa6a 1044 {
mbed_official 330:c80ac197fa6a 1045 /* Check the parameters */
mbed_official 330:c80ac197fa6a 1046 assert_param(IS_RCC_PLLSOURCE(RCC_OscInitStruct->PLL.PLLSource));
mbed_official 330:c80ac197fa6a 1047 assert_param(IS_RCC_PLL_MUL(RCC_OscInitStruct->PLL.PLLMUL));
mbed_official 330:c80ac197fa6a 1048 #if defined(STM32F302xE) || defined(STM32F303xE) || defined(STM32F398xx)
mbed_official 330:c80ac197fa6a 1049 assert_param(IS_RCC_PREDIV(RCC_OscInitStruct->PLL.PREDIV));
mbed_official 330:c80ac197fa6a 1050 #endif /* STM32F302xE || STM32F303xE || STM32F398xx */
mbed_official 330:c80ac197fa6a 1051
mbed_official 330:c80ac197fa6a 1052 /* Disable the main PLL. */
mbed_official 330:c80ac197fa6a 1053 __HAL_RCC_PLL_DISABLE();
mbed_official 330:c80ac197fa6a 1054
mbed_official 330:c80ac197fa6a 1055 /* Get timeout */
mbed_official 330:c80ac197fa6a 1056 tickstart = HAL_GetTick();
mbed_official 330:c80ac197fa6a 1057
mbed_official 330:c80ac197fa6a 1058 /* Wait till PLL is ready */
mbed_official 330:c80ac197fa6a 1059 while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)
mbed_official 330:c80ac197fa6a 1060 {
mbed_official 330:c80ac197fa6a 1061 if((HAL_GetTick()-tickstart) > PLL_TIMEOUT_VALUE)
mbed_official 330:c80ac197fa6a 1062 {
mbed_official 330:c80ac197fa6a 1063 return HAL_TIMEOUT;
mbed_official 330:c80ac197fa6a 1064 }
mbed_official 330:c80ac197fa6a 1065 }
mbed_official 330:c80ac197fa6a 1066 #if defined(STM32F302xC) || defined(STM32F303xC) || defined(STM32F358xx) || \
mbed_official 330:c80ac197fa6a 1067 defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx) || \
mbed_official 330:c80ac197fa6a 1068 defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx) || \
mbed_official 330:c80ac197fa6a 1069 defined(STM32F373xC) || defined(STM32F378xx)
mbed_official 330:c80ac197fa6a 1070 /* Configure the main PLL clock source and multiplication factor. */
mbed_official 330:c80ac197fa6a 1071 __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource,
mbed_official 330:c80ac197fa6a 1072 RCC_OscInitStruct->PLL.PLLMUL);
mbed_official 330:c80ac197fa6a 1073 #else
mbed_official 330:c80ac197fa6a 1074 /* Configure the main PLL clock source, predivider and multiplication factor. */
mbed_official 330:c80ac197fa6a 1075 __HAL_RCC_PLL_CONFIG(RCC_OscInitStruct->PLL.PLLSource,
mbed_official 330:c80ac197fa6a 1076 RCC_OscInitStruct->PLL.PREDIV,
mbed_official 330:c80ac197fa6a 1077 RCC_OscInitStruct->PLL.PLLMUL);
mbed_official 330:c80ac197fa6a 1078 #endif /* STM32F302xC || STM32F303xC || STM32F358xx || */
mbed_official 330:c80ac197fa6a 1079 /* STM32F303x8 || STM32F334x8 || STM32F328xx || */
mbed_official 330:c80ac197fa6a 1080 /* STM32F301x8 || STM32F302x8 || STM32F318xx */
mbed_official 330:c80ac197fa6a 1081 /* STM32F373xC || STM32F378xx */
mbed_official 330:c80ac197fa6a 1082
mbed_official 330:c80ac197fa6a 1083 /* Enable the main PLL. */
mbed_official 330:c80ac197fa6a 1084 __HAL_RCC_PLL_ENABLE();
mbed_official 330:c80ac197fa6a 1085
mbed_official 330:c80ac197fa6a 1086 /* Get timeout */
mbed_official 330:c80ac197fa6a 1087 tickstart = HAL_GetTick();
mbed_official 330:c80ac197fa6a 1088
mbed_official 330:c80ac197fa6a 1089 /* Wait till PLL is ready */
mbed_official 330:c80ac197fa6a 1090 while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET)
mbed_official 330:c80ac197fa6a 1091 {
mbed_official 330:c80ac197fa6a 1092 if((HAL_GetTick()-tickstart) > PLL_TIMEOUT_VALUE)
mbed_official 330:c80ac197fa6a 1093 {
mbed_official 330:c80ac197fa6a 1094 return HAL_TIMEOUT;
mbed_official 330:c80ac197fa6a 1095 }
mbed_official 330:c80ac197fa6a 1096 }
mbed_official 330:c80ac197fa6a 1097 }
mbed_official 330:c80ac197fa6a 1098 else
mbed_official 330:c80ac197fa6a 1099 {
mbed_official 330:c80ac197fa6a 1100 /* Disable the main PLL. */
mbed_official 330:c80ac197fa6a 1101 __HAL_RCC_PLL_DISABLE();
mbed_official 330:c80ac197fa6a 1102 /* Get timeout */
mbed_official 330:c80ac197fa6a 1103 tickstart = HAL_GetTick();
mbed_official 330:c80ac197fa6a 1104
mbed_official 330:c80ac197fa6a 1105 /* Wait till PLL is ready */
mbed_official 330:c80ac197fa6a 1106 while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)
mbed_official 330:c80ac197fa6a 1107 {
mbed_official 330:c80ac197fa6a 1108 if((HAL_GetTick()-tickstart) > PLL_TIMEOUT_VALUE)
mbed_official 330:c80ac197fa6a 1109 {
mbed_official 330:c80ac197fa6a 1110 return HAL_TIMEOUT;
mbed_official 330:c80ac197fa6a 1111 }
mbed_official 330:c80ac197fa6a 1112 }
mbed_official 330:c80ac197fa6a 1113 }
mbed_official 330:c80ac197fa6a 1114 }
mbed_official 330:c80ac197fa6a 1115 else
mbed_official 330:c80ac197fa6a 1116 {
mbed_official 330:c80ac197fa6a 1117 return HAL_ERROR;
mbed_official 330:c80ac197fa6a 1118 }
mbed_official 330:c80ac197fa6a 1119 }
mbed_official 330:c80ac197fa6a 1120 return HAL_OK;
mbed_official 330:c80ac197fa6a 1121 }
mbed_official 330:c80ac197fa6a 1122
mbed_official 330:c80ac197fa6a 1123 /**
mbed_official 330:c80ac197fa6a 1124 * @brief Configures the RCC_OscInitStruct according to the internal
mbed_official 330:c80ac197fa6a 1125 * RCC configuration registers.
mbed_official 330:c80ac197fa6a 1126 * @param RCC_OscInitStruct: pointer to an RCC_OscInitTypeDef structure that
mbed_official 330:c80ac197fa6a 1127 * will be configured.
mbed_official 330:c80ac197fa6a 1128 * @retval None
mbed_official 330:c80ac197fa6a 1129 */
mbed_official 330:c80ac197fa6a 1130 void HAL_RCC_GetOscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
mbed_official 330:c80ac197fa6a 1131 {
mbed_official 330:c80ac197fa6a 1132 /* Check the parameters */
mbed_official 632:7687fb9c4f91 1133 assert_param(RCC_OscInitStruct != NULL);
mbed_official 330:c80ac197fa6a 1134
mbed_official 330:c80ac197fa6a 1135 /* Set all possible values for the Oscillator type parameter ---------------*/
mbed_official 330:c80ac197fa6a 1136 RCC_OscInitStruct->OscillatorType = RCC_OSCILLATORTYPE_HSE | RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_LSE | RCC_OSCILLATORTYPE_LSI;
mbed_official 330:c80ac197fa6a 1137
mbed_official 330:c80ac197fa6a 1138 /* Get the HSE configuration -----------------------------------------------*/
mbed_official 330:c80ac197fa6a 1139 if((RCC->CR & RCC_CR_HSEBYP) == RCC_CR_HSEBYP)
mbed_official 330:c80ac197fa6a 1140 {
mbed_official 330:c80ac197fa6a 1141 RCC_OscInitStruct->HSEState = RCC_HSE_BYPASS;
mbed_official 330:c80ac197fa6a 1142 }
mbed_official 330:c80ac197fa6a 1143 else if((RCC->CR & RCC_CR_HSEON) == RCC_CR_HSEON)
mbed_official 330:c80ac197fa6a 1144 {
mbed_official 330:c80ac197fa6a 1145 RCC_OscInitStruct->HSEState = RCC_HSE_ON;
mbed_official 330:c80ac197fa6a 1146 }
mbed_official 330:c80ac197fa6a 1147 else
mbed_official 330:c80ac197fa6a 1148 {
mbed_official 330:c80ac197fa6a 1149 RCC_OscInitStruct->HSEState = RCC_HSE_OFF;
mbed_official 330:c80ac197fa6a 1150 }
mbed_official 330:c80ac197fa6a 1151
mbed_official 330:c80ac197fa6a 1152 #if defined(STM32F302xC) || defined(STM32F303xC) || defined(STM32F358xx) || \
mbed_official 330:c80ac197fa6a 1153 defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx) || \
mbed_official 330:c80ac197fa6a 1154 defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx) || \
mbed_official 330:c80ac197fa6a 1155 defined(STM32F373xC) || defined(STM32F378xx)
mbed_official 330:c80ac197fa6a 1156 RCC_OscInitStruct->HSEPredivValue = (uint32_t)(RCC->CFGR2 & RCC_CFGR2_PREDIV);
mbed_official 330:c80ac197fa6a 1157 #endif /* STM32F302xC || STM32F303xC || STM32F358xx || */
mbed_official 330:c80ac197fa6a 1158 /* STM32F303x8 || STM32F334x8 || STM32F328xx || */
mbed_official 330:c80ac197fa6a 1159 /* STM32F301x8 || STM32F302x8 || STM32F318xx */
mbed_official 330:c80ac197fa6a 1160 /* STM32F373xC || STM32F378xx */
mbed_official 330:c80ac197fa6a 1161
mbed_official 330:c80ac197fa6a 1162 /* Get the HSI configuration -----------------------------------------------*/
mbed_official 330:c80ac197fa6a 1163 if((RCC->CR & RCC_CR_HSION) == RCC_CR_HSION)
mbed_official 330:c80ac197fa6a 1164 {
mbed_official 330:c80ac197fa6a 1165 RCC_OscInitStruct->HSIState = RCC_HSI_ON;
mbed_official 330:c80ac197fa6a 1166 }
mbed_official 330:c80ac197fa6a 1167 else
mbed_official 330:c80ac197fa6a 1168 {
mbed_official 330:c80ac197fa6a 1169 RCC_OscInitStruct->HSIState = RCC_HSI_OFF;
mbed_official 330:c80ac197fa6a 1170 }
mbed_official 330:c80ac197fa6a 1171
mbed_official 330:c80ac197fa6a 1172 RCC_OscInitStruct->HSICalibrationValue = (uint32_t)((RCC->CR &RCC_CR_HSITRIM) >> POSITION_VAL(RCC_CR_HSITRIM));
mbed_official 330:c80ac197fa6a 1173
mbed_official 330:c80ac197fa6a 1174 /* Get the LSE configuration -----------------------------------------------*/
mbed_official 330:c80ac197fa6a 1175 if((RCC->BDCR & RCC_BDCR_LSEBYP) == RCC_BDCR_LSEBYP)
mbed_official 330:c80ac197fa6a 1176 {
mbed_official 330:c80ac197fa6a 1177 RCC_OscInitStruct->LSEState = RCC_LSE_BYPASS;
mbed_official 330:c80ac197fa6a 1178 }
mbed_official 330:c80ac197fa6a 1179 else if((RCC->BDCR & RCC_BDCR_LSEON) == RCC_BDCR_LSEON)
mbed_official 330:c80ac197fa6a 1180 {
mbed_official 330:c80ac197fa6a 1181 RCC_OscInitStruct->LSEState = RCC_LSE_ON;
mbed_official 330:c80ac197fa6a 1182 }
mbed_official 330:c80ac197fa6a 1183 else
mbed_official 330:c80ac197fa6a 1184 {
mbed_official 330:c80ac197fa6a 1185 RCC_OscInitStruct->LSEState = RCC_LSE_OFF;
mbed_official 330:c80ac197fa6a 1186 }
mbed_official 330:c80ac197fa6a 1187
mbed_official 330:c80ac197fa6a 1188 /* Get the LSI configuration -----------------------------------------------*/
mbed_official 330:c80ac197fa6a 1189 if((RCC->CSR & RCC_CSR_LSION) == RCC_CSR_LSION)
mbed_official 330:c80ac197fa6a 1190 {
mbed_official 330:c80ac197fa6a 1191 RCC_OscInitStruct->LSIState = RCC_LSI_ON;
mbed_official 330:c80ac197fa6a 1192 }
mbed_official 330:c80ac197fa6a 1193 else
mbed_official 330:c80ac197fa6a 1194 {
mbed_official 330:c80ac197fa6a 1195 RCC_OscInitStruct->LSIState = RCC_LSI_OFF;
mbed_official 330:c80ac197fa6a 1196 }
mbed_official 330:c80ac197fa6a 1197
mbed_official 330:c80ac197fa6a 1198 /* Get the PLL configuration -----------------------------------------------*/
mbed_official 330:c80ac197fa6a 1199 if((RCC->CR & RCC_CR_PLLON) == RCC_CR_PLLON)
mbed_official 330:c80ac197fa6a 1200 {
mbed_official 330:c80ac197fa6a 1201 RCC_OscInitStruct->PLL.PLLState = RCC_PLL_ON;
mbed_official 330:c80ac197fa6a 1202 }
mbed_official 330:c80ac197fa6a 1203 else
mbed_official 330:c80ac197fa6a 1204 {
mbed_official 330:c80ac197fa6a 1205 RCC_OscInitStruct->PLL.PLLState = RCC_PLL_OFF;
mbed_official 330:c80ac197fa6a 1206 }
mbed_official 330:c80ac197fa6a 1207
mbed_official 330:c80ac197fa6a 1208 RCC_OscInitStruct->PLL.PLLSource = (uint32_t)(RCC->CFGR & RCC_CFGR_PLLSRC);
mbed_official 330:c80ac197fa6a 1209 RCC_OscInitStruct->PLL.PLLMUL = (uint32_t)(RCC->CFGR & RCC_CFGR_PLLMUL);
mbed_official 330:c80ac197fa6a 1210 #if defined(STM32F302xE) || defined(STM32F303xE) || defined(STM32F398xx)
mbed_official 330:c80ac197fa6a 1211 RCC_OscInitStruct->PLL.PREDIV = (uint32_t)(RCC->CFGR2 & RCC_CFGR2_PREDIV);
mbed_official 330:c80ac197fa6a 1212 #endif /* STM32F302xE || STM32F303xE || STM32F398xx */
mbed_official 330:c80ac197fa6a 1213 }
mbed_official 330:c80ac197fa6a 1214
mbed_official 330:c80ac197fa6a 1215 /**
mbed_official 330:c80ac197fa6a 1216 * @brief Returns the SYSCLK frequency
mbed_official 330:c80ac197fa6a 1217 * @note The system frequency computed by this function is not the real
mbed_official 330:c80ac197fa6a 1218 * frequency in the chip. It is calculated based on the predefined
mbed_official 330:c80ac197fa6a 1219 * constant and the selected clock source:
mbed_official 330:c80ac197fa6a 1220 * @note If SYSCLK source is HSI, function returns values based on HSI_VALUE(*)
mbed_official 330:c80ac197fa6a 1221 * @note If SYSCLK source is HSE, function returns values based on HSE_VALUE
mbed_official 330:c80ac197fa6a 1222 * divided by PREDIV factor(**)
mbed_official 330:c80ac197fa6a 1223 * @note If SYSCLK source is PLL, function returns values based on HSE_VALUE
mbed_official 330:c80ac197fa6a 1224 * divided by PREDIV factor(**) or HSI_VALUE(*) multiplied by the PLL factor.
mbed_official 330:c80ac197fa6a 1225 * @note (*) HSI_VALUE is a constant defined in stm32f3xx.h file (default value
mbed_official 330:c80ac197fa6a 1226 * 8 MHz).
mbed_official 330:c80ac197fa6a 1227 * @note (**) HSE_VALUE is a constant defined in stm32f3xx.h file (default value
mbed_official 330:c80ac197fa6a 1228 * 8 MHz), user has to ensure that HSE_VALUE is same as the real
mbed_official 330:c80ac197fa6a 1229 * frequency of the crystal used. Otherwise, this function may
mbed_official 330:c80ac197fa6a 1230 * have wrong result.
mbed_official 330:c80ac197fa6a 1231 *
mbed_official 330:c80ac197fa6a 1232 * @note The result of this function could be not correct when using fractional
mbed_official 330:c80ac197fa6a 1233 * value for HSE crystal.
mbed_official 330:c80ac197fa6a 1234 *
mbed_official 330:c80ac197fa6a 1235 * @note This function can be used by the user application to compute the
mbed_official 330:c80ac197fa6a 1236 * baudrate for the communication peripherals or configure other parameters.
mbed_official 330:c80ac197fa6a 1237 *
mbed_official 330:c80ac197fa6a 1238 * @note Each time SYSCLK changes, this function must be called to update the
mbed_official 330:c80ac197fa6a 1239 * right SYSCLK value. Otherwise, any configuration based on this function will be incorrect.
mbed_official 330:c80ac197fa6a 1240 *
mbed_official 330:c80ac197fa6a 1241 * @retval SYSCLK frequency
mbed_official 330:c80ac197fa6a 1242 */
mbed_official 330:c80ac197fa6a 1243 uint32_t HAL_RCC_GetSysClockFreq(void)
mbed_official 330:c80ac197fa6a 1244 {
mbed_official 330:c80ac197fa6a 1245 uint32_t tmpreg = 0, prediv = 0, pllmul = 0, pllclk = 0;
mbed_official 330:c80ac197fa6a 1246 uint32_t sysclockfreq = 0;
mbed_official 330:c80ac197fa6a 1247
mbed_official 330:c80ac197fa6a 1248 tmpreg = RCC->CFGR;
mbed_official 330:c80ac197fa6a 1249
mbed_official 330:c80ac197fa6a 1250 /* Get SYSCLK source -------------------------------------------------------*/
mbed_official 330:c80ac197fa6a 1251 switch (tmpreg & RCC_CFGR_SWS)
mbed_official 330:c80ac197fa6a 1252 {
mbed_official 330:c80ac197fa6a 1253 case RCC_SYSCLKSOURCE_STATUS_HSE: /* HSE used as system clock source */
mbed_official 330:c80ac197fa6a 1254 sysclockfreq = HSE_VALUE;
mbed_official 330:c80ac197fa6a 1255 break;
mbed_official 330:c80ac197fa6a 1256
mbed_official 330:c80ac197fa6a 1257 case RCC_SYSCLKSOURCE_STATUS_PLLCLK: /* PLL used as system clock source */
mbed_official 330:c80ac197fa6a 1258 pllmul = PLLMULFactorTable[(uint32_t)(tmpreg & RCC_CFGR_PLLMUL) >> POSITION_VAL(RCC_CFGR_PLLMUL)];
mbed_official 330:c80ac197fa6a 1259 prediv = PredivFactorTable[(uint32_t)(RCC->CFGR2 & RCC_CFGR2_PREDIV) >> POSITION_VAL(RCC_CFGR2_PREDIV)];
mbed_official 330:c80ac197fa6a 1260 #if defined(STM32F302xC) || defined(STM32F303xC) || defined(STM32F358xx) || \
mbed_official 330:c80ac197fa6a 1261 defined(STM32F303x8) || defined(STM32F334x8) || defined(STM32F328xx) || \
mbed_official 330:c80ac197fa6a 1262 defined(STM32F301x8) || defined(STM32F302x8) || defined(STM32F318xx) || \
mbed_official 330:c80ac197fa6a 1263 defined(STM32F373xC) || defined(STM32F378xx)
mbed_official 330:c80ac197fa6a 1264 if ((tmpreg & RCC_CFGR_PLLSRC) != RCC_PLLSOURCE_HSI)
mbed_official 330:c80ac197fa6a 1265 {
mbed_official 330:c80ac197fa6a 1266 /* HSE used as PLL clock source : PLLCLK = HSE/PREDIV * PLLMUL */
mbed_official 330:c80ac197fa6a 1267 pllclk = (HSE_VALUE/prediv) * pllmul;
mbed_official 330:c80ac197fa6a 1268 }
mbed_official 330:c80ac197fa6a 1269 else
mbed_official 330:c80ac197fa6a 1270 {
mbed_official 330:c80ac197fa6a 1271 /* HSI used as PLL clock source : PLLCLK = HSI/2 * PLLMUL */
mbed_official 330:c80ac197fa6a 1272 pllclk = (HSI_VALUE >> 1) * pllmul;
mbed_official 330:c80ac197fa6a 1273 }
mbed_official 330:c80ac197fa6a 1274 #else
mbed_official 330:c80ac197fa6a 1275 if ((tmpreg & RCC_CFGR_PLLSRC_HSE_PREDIV) == RCC_CFGR_PLLSRC_HSE_PREDIV)
mbed_official 330:c80ac197fa6a 1276 {
mbed_official 330:c80ac197fa6a 1277 /* HSE used as PLL clock source : PLLCLK = HSE/PREDIV * PLLMUL */
mbed_official 330:c80ac197fa6a 1278 pllclk = (HSE_VALUE/prediv) * pllmul;
mbed_official 330:c80ac197fa6a 1279 }
mbed_official 330:c80ac197fa6a 1280 else
mbed_official 330:c80ac197fa6a 1281 {
mbed_official 330:c80ac197fa6a 1282 /* HSI used as PLL clock source : PLLCLK = HSI/PREDIV * PLLMUL */
mbed_official 330:c80ac197fa6a 1283 pllclk = (HSI_VALUE/prediv) * pllmul;
mbed_official 330:c80ac197fa6a 1284 }
mbed_official 330:c80ac197fa6a 1285 #endif /* STM32F302xC || STM32F303xC || STM32F358xx || */
mbed_official 330:c80ac197fa6a 1286 /* STM32F303x8 || STM32F334x8 || STM32F328xx || */
mbed_official 330:c80ac197fa6a 1287 /* STM32F301x8 || STM32F302x8 || STM32F318xx */
mbed_official 330:c80ac197fa6a 1288 /* STM32F373xC || STM32F378xx */
mbed_official 330:c80ac197fa6a 1289 sysclockfreq = pllclk;
mbed_official 330:c80ac197fa6a 1290 break;
mbed_official 330:c80ac197fa6a 1291
mbed_official 330:c80ac197fa6a 1292 case RCC_SYSCLKSOURCE_STATUS_HSI: /* HSI used as system clock source */
mbed_official 330:c80ac197fa6a 1293 default:
mbed_official 330:c80ac197fa6a 1294 sysclockfreq = HSI_VALUE;
mbed_official 330:c80ac197fa6a 1295 break;
mbed_official 330:c80ac197fa6a 1296 }
mbed_official 330:c80ac197fa6a 1297 return sysclockfreq;
mbed_official 330:c80ac197fa6a 1298 }
mbed_official 330:c80ac197fa6a 1299
mbed_official 330:c80ac197fa6a 1300 /**
mbed_official 330:c80ac197fa6a 1301 * @}
mbed_official 330:c80ac197fa6a 1302 */
mbed_official 330:c80ac197fa6a 1303
mbed_official 330:c80ac197fa6a 1304 /**
mbed_official 330:c80ac197fa6a 1305 * @}
mbed_official 330:c80ac197fa6a 1306 */
mbed_official 330:c80ac197fa6a 1307
mbed_official 330:c80ac197fa6a 1308 #endif /* HAL_RCC_MODULE_ENABLED */
mbed_official 330:c80ac197fa6a 1309 /**
mbed_official 330:c80ac197fa6a 1310 * @}
mbed_official 330:c80ac197fa6a 1311 */
mbed_official 330:c80ac197fa6a 1312
mbed_official 330:c80ac197fa6a 1313 /**
mbed_official 330:c80ac197fa6a 1314 * @}
mbed_official 330:c80ac197fa6a 1315 */
mbed_official 330:c80ac197fa6a 1316
mbed_official 330:c80ac197fa6a 1317 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/