mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

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****/