一.STM32F030C8T6 MCU开发之系统时钟
0.总体功能概述
使用STD库–en.stm32f0_stdperiph_lib_v1.6.0。
系统的时钟为48MHZ。
根据时钟树可以看出用PLL对HSI进行倍频时,硬件将首先对HSI 二分频,也就是为4M,所以必须再对其进行12倍频才能变成48M,最后通过RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);语句将PLL时钟作为系统时钟,至此系统的时钟变为48M。
1.STM32F0系列时钟
1.1 时钟框图
; 1.2 解释含义
1、单片机内部的RC振荡器是8Mhz
2、通过单片机引脚(OSC_IN OSC_OUT)接外部的晶振,这里就对外部的晶振有要求了,要求外部晶振输入频率范围是4Mhz~32Mhz
3、是通过单片机引脚接外部的低速32.768Khz晶振,这个是单独的给内部的实时时钟模块(RTC)使用
4、是内部的低速RC振荡器40K,可以给RTC用,也可以给IWDG看门狗模块用
5、是时钟信号从MCO这个引脚上输出,这个输出可以作为测试,看看内部的时钟配置是否正确,也可以用作和其他硬件进行时钟同步用
1.2.1 特别备注
不同类型的时钟,供给不同的需求,内置的RC振荡器受到温度影响会大一些;
2.时钟配置以及频率获取
2.1 时钟频率获取
RCC_ClocksTypeDef RCC_ClockFreq; //定义结构体变量,用来查看时钟频率
RCC_GetClocksFreq(&RCC_ClockFreq);//函数初始化
2.1.1时钟频率获取结果
[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
2.2 HCLK/PCLK 等配置
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);//函数初始化
#
Original: https://blog.csdn.net/xushx_bigbear/article/details/127815773
Author: 悟空胆好小
Title: 一.STM32F030C8T6 MCU开发之系统时钟
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/655608/
转载文章受原作者版权保护。转载请注明原作者出处!