STM32(四)时钟系统总结

系列文章目录

提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


前言


一、时钟系统

时钟系统图:
STM32(四)时钟系统总结

二、时钟系统配置结构

1.STM32时钟源

可分为五种:

HSE时钟
高速外部时钟信号(HSE)由以下两种时钟源产生:
● HSE外部晶体/陶瓷谐振器
● HSE用户外部时钟
HSI时钟
HSI时钟信号由内部8MHz的RC振荡器产生,可直接作为系统时钟或在2分频后作为PLL输入。
PLL
内部PLL可以用来倍频HSI RC的输出时钟或HSE晶体输出时钟。
LSE时钟
LSE晶体是一个32.768kHz的低速外部晶体或陶瓷谐振器。它为实时时钟或者其他定时功能提供
一个低功耗且精确的时钟源。
LSE晶体通过在备份域控制寄存器(RCC_BDCR)里的LSEON位启动和关闭。
LSI时钟
LSI RC担当一个低功耗时钟源的角色,它可以在停机和待机模式下保持运行,为独立看门狗和
自动唤醒单元提供时钟。LSI时钟频率大约40kHz(在30kHz和60kHz之间)。进一步信息请参考数
据手册中有关电气特性部分。
LSI RC可以通过控制/状态寄存器(RCC_CSR)里的LSION位来启动或关闭

2.RCC寄存器

时钟控制寄存器(RCC_CR)
时钟配置寄存器(RCC_CFGR)
时钟中断寄存器 (RCC_CIR)
APB2 外设复位寄存器 (RCC_APB2RSTR)
APB1 外设复位寄存器 (RCC_APB1RSTR)
AHB外设时钟使能寄存器 (RCC_AHBENR)
APB2 外设时钟使能寄存器(RCC_APB2ENR)
APB1 外设时钟使能寄存器(RCC_APB1ENR)
备份域控制寄存器 (RCC_BDCR)
控制/状态寄存器 (RCC_CSR)

typedef struct
{
__IO uint32_t CR; //HSI,HSE,CSS,PLL等的使能和就绪标志位
__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; //控制状态寄存器
} RCC_TypeDef;
详细查阅:STM32中文参考手册6.2。

未定义STM32F10X_CL,在system_stm32f10x.c(第0115行)中定义了SYSCLK_FREQ_72MHz,具体如下:
#if defined (STM32F10X_LD_VL) || (defined STM32F10X_MD_VL) || (defined STM32F10X_HD_VL)
/* #define SYSCLK_FREQ_HSE HSE_VALUE /
#define SYSCLK_FREQ_24MHz 24000000
#else
/
#define SYSCLK_FREQ_HSE HSE_VALUE /
/
#define SYSCLK_FREQ_24MHz 24000000 /
/
#define SYSCLK_FREQ_36MHz 36000000 /
/
#define SYSCLK_FREQ_48MHz 48000000 /
/
#define SYSCLK_FREQ_56MHz 56000000 */
#define SYSCLK_FREQ_72MHz 72000000
#endif
STM32F103系列晶振能跑最大值72MHz


上一篇:关于STM32F103C8T6芯片的一些重要引脚功能的整理


下一篇:STM32-GPIO学习-跑马灯实验和按键实验-寄存器版本和HAL库版本