STM32F107外部晶振设置8MHZ,配置时钟代码
时间: 2024-10-18 11:22:35 浏览: 44
stm32f107使用外部晶振
5星 · 资源好评率100%
在STM32F107单片机上,如果你想要将系统时钟设置为8 MHz,通常会使用外部晶体振荡器(XTAL)作为基准,然后通过PLL(锁相环路倍频器)将其提高到所需频率。以下是基本的配置步骤:
1. **复位后的默认设置**:
- 初次启动时,STM32F107的系统时钟通常是内部RC震荡器,大约是8MHz(取决于具体型号),但通常建议使用外部振荡器提供更稳定的时钟。
2. **外部晶体振荡器连接**:
- 连接外部8MHz晶体振荡器至芯片的XTAL1 (VCC) 和 XTAL2 (GND) 引脚。确保它们正确接地并且电源电压稳定。
3. **设置时钟源选择**:
- 在头文件中,通常会有类似这样的设置来指定时钟源:
```c
// 使用外设时钟分频器,假设已经选择了EXTI oscillator
RCC_OscInitTypeDef RCC_OscInitStruct;
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_XTAL | RCC_OSCILLATORTYPE_HSI; // 包含XTAL和HSI振荡器
RCC_OscInitStruct.XTalFreq = 8000000; // 设置外部晶体振荡器频率为8MHz
RCC_OscInitStruct.HSIState = RCC_HSI_ON; // 开启HSI作为备用时钟源
```
4. **启动时钟初始化**:
```c
RCC_ClkInitTypeDef RCC_ClkInitStruct;
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2; // 初始化需要时钟类型的系统、PCLK1和PCLK2时钟
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; // 开启PLL
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; // 将PLL源设置为HSI
RCC_OscInitStruct.PLL.PLLM = RCC_PLL_MUL2; // 设置乘法因子为2,得到16MHz的系统时钟(如果不需要更高的时钟)
RCC_OscInitStruct.PLL.PLLN = 7; // 根据你的系统手册计算出实际需要的数值,可能需要根据HSI频率调整
if (RCC_OscConfig(&RCC_OscInitStruct) == SUCCESS) {
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; // 设定系统时钟为 PLL 输出
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; // 分频系数为1,保持8MHz的AHB时钟
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; // PCLK1同样为8MHz
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; // PCLK2也一样为8MHz
if (RCC_ClockSetup(&RCC_ClkInitStruct, &RCC_OscInitStruct) == SUCCESS) {
// 配置成功,可以在此处继续后续代码
} else {
// 处理时钟配置失败
}
}
```
记得在实际项目中检查具体的时钟频率计算公式和手册中的指导,因为每个系列的STM32都有其特定的时钟配置细节。
阅读全文