stm32f405rgt6时钟挂载
时间: 2025-03-10 14:00:45 浏览: 19
STM32F405RGT6时钟配置详解
时钟源概述
STM32F405RGT6具备多种内部和外部时钟源,包括HSI(高速内部RC振荡器)、HSE(高速外部晶体/陶瓷谐振器)、LSI(低速内部RC振荡器)和LSE(低速外部晶体)。这些时钟源可以用于不同的应用场景,确保系统的灵活性和性能优化[^1]。
主要时钟源描述
- **HSI (High Speed Internal)**:默认频率为16 MHz,精度较低但无需额外元件。适合快速启动的应用场景。
- **HSE (High Speed External)**:可连接到外部8 MHz~25 MHz的晶体或陶瓷谐振器,提供更精确的时间基准。
- **LSI (Low Speed Internal)**:通常工作于约32 kHz左右,主要用于实时时钟(RTC)等功能。
- **LSE (Low Speed External)**:同样大约32.768 kHz,常用来作为RTC唤醒定时器等低功耗模式下的时间参考。
PLL设置
为了获得更高的处理速度,可以通过PLL(Phase Locked Loop)来倍频输入信号。对于STM32F405来说,默认情况下可以从HSI或者HSE获取输入,并将其放大至最高可达168MHz的工作频率。具体操作涉及修改RCC_PLLCFGR
寄存器内的相应字段以设定分频系数及乘法因子。
// 配置PLL, 假设使用HSE=8MHz作为基础时钟源
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
/* Enable HSE Oscillator and activate PLL with HSE as source */
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLM = 8; // 分频系数
RCC_OscInitStruct.PLL.PLLN = 336; // 乘法因子
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
if(HAL_RCC_OscConfig(&RCC_OscInitStruct)!= HAL_OK){
Error_Handler();
}
/* Select PLL as system clock source and configure the HCLK,PCLK1,PCLK2 clocks dividers*/
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;
if(HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5)!= HAL_OK){
Error_Handler();
}
上述代码片段展示了如何启用HSE并通过PLL将系统主频提升至所需水平。这里选择了8 MHz的HSE作为基底,通过调整PLL参数最终得到接近目标值的有效工作频率[^2]。
外部晶振与时钟树结构
除了基本的时钟源之外,还需要考虑外部晶振的选择及其对整体架构的影响。根据官方文档说明,当采用外部高速时钟(OSC_IN/OSC_OUT)时,应当注意匹配合适的负载电容(C_L),这直接影响到了起振特性和稳定性。此外,完整的时钟分配网络还包括了多个分支——比如AHB/APB总线上的预分频机制——它们共同构成了所谓的“时钟树”,决定了各个外设的实际运作速率[^4]。
相关推荐


















