STM32时钟系统
Posted 想成为大师啊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32时钟系统相关的知识,希望对你有一定的参考价值。
参考资料
主要参照正点原子的视频
STM32F1精英可参考4.3小节时钟系统
时钟系统框图
RCC的结构体定义
typedef struct
{
__IO uint32_t CR; // HEI,HSE,CSS,PLL等的使能和就绪标志位(时钟安全系统(CSS)系统)
__IO uint32_t CFGR; // PLL等的时钟源选择,分频系数设定
__IO uint32_t CIR; // 清除/使能时钟就绪中断
__IO uint32_t APB2RSTR; // APB2线上外设复位寄存器
__IO uint32_t APB1RSTR; // APB1线上外设复位寄存器
__IO uint32_t AHBENR; // DMA,SDIO等时钟使能
__IO uint32_t APB2ENR; // APB2线上外设时钟使能
__IO uint32_t APB1ENR; // APB1线上外设时钟使能
__IO uint32_t BDCR; // 备份域控制寄存器
__IO uint32_t CSR; // 控制状态寄存器
#ifdef STM32F10X_CL
__IO uint32_t AHBRSTR;
__IO uint32_t CFGR2;
#endif /* STM32F10X_CL */
#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || defined (STM32F10X_HD_VL)
uint32_t RESERVED0;
__IO uint32_t CFGR2;
#endif /* STM32F10X_LD_VL || STM32F10X_MD_VL || STM32F10X_HD_VL */
} RCC_TypeDef;
RCC相关头文件和固件库源文件
1.时钟使能配置
RCC_LSEConfig(), RCC_HESConfig(), RCC_HSICmd(),
RCC_LSICmd(), RCC_PLLCmd()…
2.时钟源相关配置
RCC_PLLConfig(), RCC_SYSCLKConfig(), RCC_RTCCLKConfig(),…
3.分频系数选择配置
RCC_HCLKConfig(), RCC_PCLK1Config(), RCC_PCLK2Config(),…
4.外设时钟使能
RCC_APB1PeriphClockCmd(); // APB1线上外设时钟使能
RCC_APB2PeriphClockCmd(); // APB2线上外设时钟使能
RCC_AHBPeriphClockCmd(); // AHB线上外设时钟使能
5.其他外设时钟使能
RCC_ADCCLKConfig();
RCC_RTCCLKConfig();
6.状态参数获取参数
RCC_GetClocksFreq();
RCC_GetSYSCLKSource();
RCC_GetFlagStatus();
7.RCC中断相关函数
RCC_ITConfig(), RCC_GetITStatus(), RCC_ClearITPendingBit()…
总结
1.STM32有5个时钟源:HSI,HSE,LSI,LSE,PLL
1.HSI是高速内部时钟,RC振荡器,频率为8MHz,精度不高。
2.HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。
3.LSI是低速内部时钟,RC振荡器,频率为40KHz,提供低功耗时钟。WDG
4.LES是低速外部时钟,接频率为3.768KHz的石英晶体。RTC
5.PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2,HSE或者HSE/2。倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。
2.系统时钟SYSCLK可来源于三个时钟源
1.HSI振荡器时钟
2.HSE振荡器时钟
3.PLL时钟
3.STM可以选择一个时钟信号输出到MCO脚(PA8)上,可以选择为PLL输出的2分频,HSE,HSI,或者系统时钟
4.任何一个外设在使用之前,必须首先使能其相应的时钟
以上是关于STM32时钟系统的主要内容,如果未能解决你的问题,请参考以下文章