STM32外接8M晶振过后,是默认使用晶振时钟还是内部时钟,还是需要使用软件使晶振起振
时间: 2023-09-18 12:10:24 浏览: 298
STM32芯片默认使用内部时钟(HSI)作为系统时钟,如果需要使用外部晶振作为系统时钟,则需要在代码中设置。
在使用外部晶振时,需要使能外部晶振,并设置PLL倍频系数和分频系数,使得外部晶振频率经过PLL倍频和分频后得到正确的系统时钟频率。同时还需要在代码中等待晶振起振,以确保系统时钟稳定。
以下是一个使用外部8MHz晶振作为系统时钟的代码示例:
```c
// 使能外部晶振
RCC->CR |= RCC_CR_HSEON;
while(!(RCC->CR & RCC_CR_HSERDY)); // 等待外部晶振起振
// 设置PLL倍频系数和分频系数
RCC->CFGR &= ~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL | RCC_CFGR_PLLDIV);
RCC->CFGR |= RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9 | RCC_CFGR_PLLDIV2;
// 启用PLL和等待PLL稳定
RCC->CR |= RCC_CR_PLLON;
while(!(RCC->CR & RCC_CR_PLLRDY));
// 设置系统时钟为PLL输出
RCC->CFGR &= ~(RCC_CFGR_SW);
RCC->CFGR |= RCC_CFGR_SW_PLL;
while((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_PLL); // 等待PLL作为系统时钟稳定
// 获取时钟频率
RCC_ClocksTypeDef RCC_Clocks;
RCC_GetClocksFreq(&RCC_Clocks);
```
注意,使用外部晶振时需要根据具体的晶振频率和PLL倍频和分频系数来计算系统时钟频率,代码中的示例仅供参考。
阅读全文