stm32f407配置系统时钟
时间: 2023-07-25 16:05:05 浏览: 515
RTC.rar_rtc lib_stm32f407
在STM32F407芯片中,系统时钟的配置是通过RCC寄存器来实现的。以下是一些基本的步骤:
1. 开启外部晶振或者内部RC振荡器
如果使用外部晶振,需要设置HSEON位,如果使用内部RC振荡器,需要设置HSION位。
2. 等待外部晶振或者内部RC振荡器稳定
需要等待外部晶振或者内部RC振荡器稳定,可以通过读取RCC_CSR寄存器的HSIRDY或者HSERDY位来判断。
3. 配置PLL
使用PLL可以提高系统时钟频率,需要先配置PLL的输入时钟源、倍频因子和分频因子,然后使能PLL。
4. 配置系统时钟来源和分频因子
将PLL作为系统时钟源时,需要配置AHB、APB1和APB2总线的分频因子。
以下是一个简单的例子,假设使用外部8MHz晶振,将PLL的倍频因子设置为9,分频因子设置为2,得到系统时钟频率为84MHz:
```
// 开启外部晶振
RCC->CR |= RCC_CR_HSEON;
while(!(RCC->CR & RCC_CR_HSERDY)); // 等待晶振稳定
// 配置PLL
RCC->PLLCFGR = RCC_PLLCFGR_PLLSRC_HSE | // 使用外部晶振作为PLL输入时钟源
RCC_PLLCFGR_PLLM_3 | // PLL输入时钟分频系数为8
RCC_PLLCFGR_PLLN_0 | RCC_PLLCFGR_PLLN_3 | // PLL倍频系数为9
RCC_PLLCFGR_PLLP_1 | // PLL输出时钟分频系数为2
RCC_PLLCFGR_PLLQ_4; // USB OTG FS, SDIO and RNG clock divider
RCC->CR |= RCC_CR_PLLON; // 开启PLL
while(!(RCC->CR & RCC_CR_PLLRDY)); // 等待PLL稳定
// 配置系统时钟源和分频系数
RCC->CFGR &= ~RCC_CFGR_SW; // 选择PLL作为系统时钟源
RCC->CFGR |= RCC_CFGR_SW_PLL;
while((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_PLL); // 等待PLL成为系统时钟源
RCC->CFGR &= ~RCC_CFGR_HPRE; // AHB分频系数为1
RCC->CFGR |= RCC_CFGR_PPRE1_DIV2; // APB1分频系数为2
RCC->CFGR |= RCC_CFGR_PPRE2_DIV1; // APB2分频系数为1
```
需要注意的是,不同的芯片型号可能对应不同的时钟源和分频系数,具体的设置请参考芯片手册。
阅读全文