如何利用STM32F103的HAL库函数配置系统时钟为72MHz时钟频率,并选择合适的时钟源?请提供示例代码。
时间: 2024-11-22 17:31:01 浏览: 10
配置STM32F103的系统时钟为72MHz涉及到对时钟源的选择和PLL的配置。为了更深入地理解这一过程,建议参考《STM32F103时钟系统基础知识详解》。这份资料将为你提供基础知识的全面介绍和具体的时钟配置技巧。
参考资源链接:[STM32F103时钟系统基础知识详解](https://wenku.csdn.net/doc/661h5gxbw9?spm=1055.2569.3001.10343)
首先,要设置系统时钟为72MHz,通常会采用外部高速时钟源HSE(External High-Speed Clock)作为PLL(Phase-Locked Loop)的输入时钟,因为HSE具有更高的频率和稳定性。接下来,通过配置PLL将其倍频到所需的频率。STM32F103的PLL通常可以将HSE倍频至144MHz,并从PLL输出分频得到系统所需的72MHz时钟。
以下是使用STM32 HAL库配置系统时钟的示例代码:
1. 首先,初始化HSE并等待其稳定:
```c
/* Initialize the Internal High Speed oscillator (HSI) */
HAL_RCC_OscConfig(&RCC_OscInitStruct);
/* Configure the PLL to output 72MHz clock */
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;
RCC_OscInitStruct.PLL.PLLMUL = RCC_PLLMUL_9; //PLL倍频因子,HSE * 9 = 72MHz
RCC_OscInitStruct.PLL.PLLDIV = RCC_PLLDIV_2; //PLL分频因子,72MHz / 2 = 36MHz,作为系统时钟
HAL_RCC_OscConfig(&RCC_OscInitStruct);
```
2. 接下来,配置系统时钟源选择,将PLL作为系统时钟源:
```c
/* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2 */
RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | 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;
HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2);
```
通过以上步骤,STM32F103的系统时钟将被配置为72MHz。请注意,这段代码需要在STM32CubeMX生成的HAL库项目框架中使用,或者需要确保HAL库已经正确初始化。
在解决当前问题后,为了进一步提升对STM32F103时钟系统的理解和应用能力,建议继续查阅《STM32F103时钟系统基础知识详解》中的其他章节,例如关于时钟安全系统CSS的介绍,以及如何处理时钟故障等高级话题。这将帮助你全面掌握STM32F103时钟系统的配置和优化。
参考资源链接:[STM32F103时钟系统基础知识详解](https://wenku.csdn.net/doc/661h5gxbw9?spm=1055.2569.3001.10343)
阅读全文