|
20 | 20 | * @retval None |
21 | 21 | */ |
22 | 22 | WEAK void SystemClock_Config(void) |
23 | | -#if defined(USBCON) |
24 | 23 | { |
25 | | - RCC_OscInitTypeDef RCC_OscInitStruct = {}; |
26 | | - RCC_ClkInitTypeDef RCC_ClkInitStruct = {}; |
27 | | - RCC_PeriphCLKInitTypeDef PeriphClkInit = {}; |
| 24 | + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; |
| 25 | + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; |
| 26 | + RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; |
28 | 27 |
|
29 | 28 | /** Initializes the RCC Oscillators according to the specified parameters |
30 | 29 | * in the RCC_OscInitTypeDef structure. |
31 | 30 | */ |
32 | | - RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; |
| 31 | + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE|RCC_OSCILLATORTYPE_LSE; |
| 32 | + RCC_OscInitStruct.HSEState = RCC_HSE_ON; |
| 33 | + RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV2; |
| 34 | + RCC_OscInitStruct.LSEState = RCC_LSE_ON; |
33 | 35 | RCC_OscInitStruct.HSIState = RCC_HSI_ON; |
34 | | - RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; |
35 | 36 | RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; |
36 | | - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI_DIV2; |
37 | | - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL12; |
38 | | - if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { |
| 37 | + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; |
| 38 | + RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; |
| 39 | + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) |
| 40 | + { |
39 | 41 | Error_Handler(); |
40 | 42 | } |
| 43 | + |
41 | 44 | /** Initializes the CPU, AHB and APB buses clocks |
42 | 45 | */ |
43 | | - RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK |
44 | | - | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2; |
| 46 | + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK |
| 47 | + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; |
45 | 48 | RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; |
46 | 49 | RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; |
47 | 50 | RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; |
48 | 51 | RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; |
49 | 52 |
|
50 | | - if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK) { |
| 53 | + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) |
| 54 | + { |
51 | 55 | Error_Handler(); |
52 | 56 | } |
53 | | - PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB; |
54 | | - PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL; |
55 | | - if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) { |
| 57 | + PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_RTC|RCC_PERIPHCLK_USB; |
| 58 | + PeriphClkInit.RTCClockSelection = RCC_RTCCLKSOURCE_LSE; |
| 59 | + PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLL_DIV1_5; |
| 60 | + if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK) |
| 61 | + { |
56 | 62 | Error_Handler(); |
57 | 63 | } |
58 | | -} |
59 | | -#else |
60 | | -{ |
61 | | - RCC_OscInitTypeDef RCC_OscInitStruct = {}; |
62 | | - RCC_ClkInitTypeDef RCC_ClkInitStruct = {}; |
63 | 64 |
|
64 | | - /** Initializes the RCC Oscillators according to the specified parameters |
65 | | - * in the RCC_OscInitTypeDef structure. |
66 | | - */ |
67 | | - RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; |
68 | | - RCC_OscInitStruct.HSIState = RCC_HSI_ON; |
69 | | - RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; |
70 | | - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; |
71 | | - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI_DIV2; |
72 | | - RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL16; |
73 | | - if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { |
74 | | - Error_Handler(); |
75 | | - } |
76 | | - /** Initializes the CPU, AHB and APB buses clocks |
| 65 | + /** Enables the Clock Security System |
77 | 66 | */ |
78 | | - RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK |
79 | | - | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2; |
80 | | - RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; |
81 | | - RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; |
82 | | - RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; |
83 | | - RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; |
84 | | - |
85 | | - if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) { |
86 | | - Error_Handler(); |
87 | | - } |
| 67 | + HAL_RCC_EnableCSS(); |
88 | 68 | } |
89 | | -#endif /* USBCON */ |
90 | 69 |
|
91 | 70 | #endif /* ARDUINO_GENERIC_* */ |
0 commit comments