是怎么倍频到168MHZ的
时间: 2024-04-07 09:29:21 浏览: 12
在这段代码中,使用了STM32的PLL(Phase Locked Loop)倍频功能,通过对外部晶振进行倍频,从而得到更高的系统时钟频率。具体来说,先将外部晶振通过RCC_OscConfig函数配置为PLL的时钟源,然后设置PLL的各个参数:PLL_M, PLL_N, PLL_P, PLL_Q,最后将PLL使能(RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON)。其中,PLL_M用于设置PLL的输入时钟频率,PLL_N用于设置PLL倍频系数,PLL_P用于设置PLL的输出时钟频率,而PLL_Q用于给USB OTG FS、SDIO和随机数发生器提供时钟。在此代码中,PLL的输入时钟频率为8MHz(PLL_M=4),PLL倍频系数为168(PLL_N=168),PLL输出时钟频率为84MHz(PLL_P=RCC_PLLP_DIV2),PLL_Q为7。最后,将SYSCLK的时钟源设为PLL输出时钟,从而将系统时钟频率设置为168MHz。
相关问题
如何配置系统时钟为168MHZ
要将系统时钟配置为168MHZ,需要按照以下步骤进行操作:
1. 配置PLL时钟,将外部晶体振荡器的频率提高到336MHZ。需要使用STM32的时钟配置工具,设置PLL倍频系数为16,将输入时钟频率设置为外部晶体的频率。
2. 将系统时钟设置为PLL时钟的一半,即168MHZ。需要使用STM32的时钟配置工具,将系统时钟频率设置为PLL时钟频率的一半。
3. 配置Flash存储器接口,使其能够支持168MHZ的系统时钟。需要使用STM32的时钟配置工具,将Flash存储器的读取等待时间调整为2个时钟周期。
4. 配置其他外设时钟,使其与系统时钟同步。需要使用STM32的时钟配置工具,将外设时钟分频系数设置为适当的值,以将其与系统时钟同步。
完成以上步骤后,系统时钟即可成功配置为168MHZ。
stm32f407配置系统时钟168MHZ
配置STM32F407的系统时钟为168MHZ,需要按照以下步骤进行:
1. 配置时钟源为外部晶振
在RCC_CR寄存器中设置HSEON位,使能外部晶振。
2. 等待时钟稳定
在RCC_CR寄存器中检测HSERDY位,等待外部晶振稳定。
3. 配置PLL
设置PLL倍频系数和分频系数,使得PLL输出的时钟频率为168MHz。
4. 选择PLL作为系统时钟源
在RCC_CFGR寄存器中选择PLL作为系统时钟源。
5. 等待PLL稳定
在RCC_CR寄存器中检测PLLRDY位,等待PLL稳定。
6. 配置AHB、APB1和APB2时钟分频系数
在RCC_CFGR寄存器中配置AHB、APB1和APB2时钟分频系数,使得AHB时钟频率为168MHz,APB1时钟频率为84MHz,APB2时钟频率为84MHz。
以下是代码示例:
```c
// 使能外部晶振
RCC->CR |= RCC_CR_HSEON;
// 等待外部晶振稳定
while(!(RCC->CR & RCC_CR_HSERDY));
// 配置PLL
RCC->PLLCFGR = (8 << RCC_PLLCFGR_PLLM_Pos) | (336 << RCC_PLLCFGR_PLLN_Pos) | (0 << RCC_PLLCFGR_PLLP_Pos) | (2 << RCC_PLLCFGR_PLLQ_Pos) | RCC_PLLCFGR_PLLSRC_HSE;
// 选择PLL作为系统时钟源
RCC->CFGR |= RCC_CFGR_SW_PLL;
// 等待PLL稳定
while(!(RCC->CR & RCC_CR_PLLRDY));
// 配置时钟分频系数
RCC->CFGR |= RCC_CFGR_HPRE_DIV1 | RCC_CFGR_PPRE1_DIV4 | RCC_CFGR_PPRE2_DIV2;
```