Danillo Mangue Baja
SysClockConf.cpp
- Committer:
- hudakz
- Date:
- 2016-07-05
- Revision:
- 2:534793444c60
- Child:
- 3:a92af4b1ffe1
File content as of revision 2:534793444c60:
#include "SysClockConf.h" #include "mbed.h" bool HSE_SystemClock_Config(int freq) { RCC_OscInitTypeDef RCC_OscInitStruct; RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; switch(freq) { case 36: RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; break; case 48: RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL6; break; default: RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; } if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { return false; } RCC_ClkInitTypeDef RCC_ClkInitStruct; RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) { return false; } RCC_PeriphCLKInitTypeDef PeriphClkInit; PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_ADC|RCC_PERIPHCLK_USB; switch(freq) { case 36: PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV6; break; case 48: PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV4; break; default: PeriphClkInit.AdcClockSelection = RCC_ADCPCLK2_DIV6; } PeriphClkInit.UsbClockSelection = RCC_USBPLLCLK_DIV1; if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) { return false; } return true; } bool configSysClock(int freq) { HAL_RCC_DeInit(); if (!HSE_SystemClock_Config(freq)) { return false; } SystemCoreClockUpdate(); return true; }