将 PLLCLK 的 时钟频率设设为 16MHz、24MHz、32MHz、40MHz、48MHz、56MHz、64MHz、72MHz、 80MHz、88MHz、96MHz、104MHz、112MHz、120MHz、128MHz。代码
时间: 2023-10-30 13:09:36 浏览: 41
好的,针对您的问题,我可以提供以下代码:
```c
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
/* Configure PLL clock source and multiplication factor */
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
/* Set PLL multiplication factor */
RCC_OscInitStruct.PLL.PLLM = 1;
RCC_OscInitStruct.PLL.PLLN = 16; // Change this value for different frequencies
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV2;
RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
Error_Handler();
}
/* Configure the system clock to use PLL */
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4) != HAL_OK)
{
Error_Handler();
}
```
这段代码可以设置 STM32 的 PLL 时钟频率为 16MHz、24MHz、32MHz、40MHz、48MHz、56MHz、64MHz、72MHz、80MHz、88MHz、96MHz、104MHz、112MHz、120MHz、128MHz 中的任意一个。您只需要修改 `RCC_OscInitStruct.PLL.PLLN` 的值即可。