embox

Форк
0
57 строк · 2.0 Кб
1
/**
2
 * @file
3
 * @brief
4
 *
5
 * @author  Anton Kozlov
6
 * @date    30.10.2014
7
 */
8

9
#include <bsp/stm32cube_hal.h>
10

11
void SystemClock_Config(void) {
12
	RCC_ClkInitTypeDef RCC_ClkInitStruct;
13
	RCC_OscInitTypeDef RCC_OscInitStruct;
14

15
	/* Enable Power Control clock */
16
	__HAL_RCC_PWR_CLK_ENABLE();
17

18
	/* The voltage scaling allows optimizing the power consumption when the device is
19
     clocked below the maximum system frequency, to update the voltage scaling value
20
     regarding system frequency refer to product datasheet.  */
21
	__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);
22

23
	/* Enable HSE Oscillator and activate PLL with HSE as source */
24
	RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
25
	RCC_OscInitStruct.HSEState = RCC_HSE_ON;
26
	RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
27
	RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
28
	RCC_OscInitStruct.PLL.PLLM = 8;
29
	RCC_OscInitStruct.PLL.PLLN = 336;
30
	RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
31
	RCC_OscInitStruct.PLL.PLLQ = 7;
32
	HAL_RCC_OscConfig(&RCC_OscInitStruct);
33

34
	/* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2
35
     clocks dividers */
36
	RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK
37
	                               | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2);
38
	RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
39
	RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
40
#if OPTION_GET(BOOLEAN, errata_spi_wrong_last_bit)
41
	/* One of possible workarounds, as suggested by
42
	 * STM32F40x and STM32F41x Errata sheet is to decrease
43
	 * APB clock speed. */
44
	RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV8;
45
	RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV4;
46
#else
47
	RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
48
	RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
49
#endif
50
	HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5);
51

52
	/* STM32F405x/407x/415x/417x Revision Z devices: prefetch is supported  */
53
	if (HAL_GetREVID() == 0x1001) {
54
		/* Enable the Flash prefetch */
55
		__HAL_FLASH_PREFETCH_BUFFER_ENABLE();
56
	}
57
}
58

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.