使用STD库–en.stm32f0_stdperiph_lib_v1.6.0。
系统的时钟为48MHZ。
根据时钟树可以看出用PLL对HSI进行倍频时,硬件将首先对HSI 二分频,也就是为4M,所以必须再对其进行12倍频才能变成48M,最后通过RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);语句将PLL时钟作为系统时钟,至此系统的时钟变为48M。
1、单片机内部的RC振荡器是8Mhz
2、通过单片机引脚(OSC_IN OSC_OUT)接外部的晶振,这里就对外部的晶振有要求了,要求外部晶振输入频率范围是4Mhz~32Mhz
3、是通过单片机引脚接外部的低速32.768Khz晶振,这个是单独的给内部的实时时钟模块(RTC)使用
4、是内部的低速RC振荡器40K,可以给RTC用,也可以给IWDG看门狗模块用
5、是时钟信号从MCO这个引脚上输出,这个输出可以作为测试,看看内部的时钟配置是否正确,也可以用作和其他硬件进行时钟同步用
不同类型的时钟,供给不同的需求,内置的RC振荡器受到温度影响会大一些;
RCC_ClocksTypeDef RCC_ClockFreq; //定义结构体变量,用来查看时钟频率
RCC_GetClocksFreq(&RCC_ClockFreq);//函数初始化
[2022-11-07 12:38:52] SYSCLK_Frequency=48000000
[2022-11-07 12:38:52] HCLK_Frequency=48000000
[2022-11-07 12:38:52] PCLK_Frequency=48000000
[2022-11-07 12:38:52] ADCCLK_Frequency=14000000
[2022-11-07 12:38:52] CECCLK_Frequency=32786
[2022-11-07 12:38:52] I2C1CLK_Frequency=8000000
[2022-11-07 12:38:52] USART1CLK_Frequency=48000000
RCC_ClocksTypeDef RCC_ClockFreq; //定义结构体变量,用来查看时钟频率
RCC_DeInit();
RCC_HSEConfig(RCC_HSE_OFF);//关闭外部时钟HSE
RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_12);//PLL倍频至48M HZ
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);//配置SYSCLK
RCC_HCLKConfig(RCC_SYSCLK_Div1);//配置HCLK
RCC_PCLKConfig(RCC_HCLK_Div1);//配置PCLK
RCC_GetClocksFreq(&RCC_ClockFreq);//函数初始化
);//配置PCLK
RCC_GetClocksFreq(&RCC_ClockFreq);//函数初始化
#