详解STM32F1系列时钟树以及配置

详解STM32F1系列时钟树以及配置

本文详细介绍了STM32F1系列时钟树,以及如何对相应寄存器进行配置达到我们想要的系统时钟,并附带了寄存器配置源码。

时钟树简图

F1时钟树
STM32F1系列芯片,共有4个时钟源,当然也有人说是5个,包括了PLL倍频器,由于PLL的时钟来源于HSE或HSI,所以我认为只有4个时钟源。以上是时钟简图,在图注部分对如何配置进行了详细说明。在使用频率不要求很高的时候最好不要超频,会影响芯片的性能。

时钟树详图

F1系列时钟树详图
需要注意的是定时器的频率条件:如果相应的APB预分频系数是1,定时器的时钟频率与所在APB总线频率一致,否则×2。
因为APB1总线上挂有定时器2~7,且APB1的预分频系数为2,不是1,所以定时器2 ~7的频率需要×2,也就是36M×2=72M。
因为APB2总线上挂有定时器1和8,且APB2的预分频系数为1,所以定时器1 和8的频率不需要×2,也就是72M。
所以在系统时钟设置为72M之后,所有的定时器频率全部为72M。

寄存器配置

  1. 时钟控制寄存器(RCC_CR)
    此寄存器我们使用的功能基本上就是,内外高速时钟以及PLL倍频器的开启与关闭。
    时钟控制寄存器
    此寄存器用来控制时钟的开关,也可以检测时钟的状态。
    为了境地功耗使用哪个时钟,就使能哪个时钟,不用的就不要使能。
  • 第0和1位:0位内部高速时钟使能位,需要使用内部高速时钟是将第0位置1,检测第1位值是否为1,判断内部高速时钟是否就位。(1为就绪)
  • 第3-7位:内部高速时钟调整,可以根据外界环境的变化调节,RC时钟的频率(一般不会用到)
  • 第8-15位:不用管,需要时可以读取其数据
  • 第16和17位:外部高速时钟启动位,以及状态检测位。(17位为1表示时钟在线)
  • 第19位:外部时钟工作状态检测位,0为关闭检测,1为启动检测。
  • 第24和25位:PLL倍频器使能位,1为使能,25位为1时,表示使能成功。

2、时钟配置寄存器(RCC_CFGR)
此寄存器主要用来设置系统以及总线的频率。
时钟配置寄存器

  • 第0和1位:系统时钟切换位,选择HSI、HSE、PLL其中的一个作为系统时钟。
  • 第1和2位:系统时钟切换状态位,用来检测切换是否完成。
  • 第4~7位:AHB总线预分频系数位。
  • 第8~10位:APB1总线预分频系数位。
  • 第11~13位:APB2总线预分频系数位。
  • 第14~15位:ADC预分频系数位
  • 第16位:PLL时钟源选择位
  • 第17位:外部时钟作为PLL时钟源时是否分频位。
  • 第18~21位:PLL倍频器倍频系数选择位
  • 第22位:USB预分频系数选择位
  • 第24~26位:PA8输出频率选择位
    以上两个寄存器就已经实现了F1系列系统以及3大总线的时钟配置,接下来以系统时钟72M,AHB总线72M,APB1总线36M,APB2总线72M,进行代码演示。
 	RCC->CR|=0x00010000;  //使能外部高速时钟
	while(!(RCC->CR>>17));//等待外部时钟就绪,判断其是否正常
	RCC->CFGR=0X00000400; //APB1二分频;APB2不分频;AHB不分频;
	RCC->CFGR|=0X7<<18;   //设置PLL值为9倍频
	RCC->CFGR|=1<<16;	  //PLL作为时钟源
	FLASH->ACR|=0x32;	  //FLASH 2个延时周期
	RCC->CR|=0x01000000;  //打开PLL,需要在选择其作为时钟源之后
	while(!(RCC->CR>>25));//等待PLL锁定
	RCC->CFGR|=0x00000002;//PLL作为系统时钟	 
	while(temp!=0x02)     //等待PLL作为系统时钟设置成功
	{   
		temp=RCC->CFGR>>2;
		temp&=0x03;
	} 

3、时钟中断寄存器 (RCC_CIR) 对于时钟异常工作的检测以及置位标志,基础开发基本用不到。
4、APB2 外设复位寄存器 (RCC_APB2RSTR)
APB2高速总线外设复位寄存器对此寄存器的相应位置写入1,可以对相应外设进行复位,写入0时不起作用。
5、APB1 外设复位寄存器 (RCC_APB1RSTR)
APB1高速总线外设复位寄存器
对此寄存器的相应位置写入1,可以对相应外设进行复位,写入0时不起作用。
6、AHB外设时钟使能寄存器 (RCC_AHBENR)
AHB外设时钟使能寄存器
相对应的位为1则使能AHB总线上的外设,0则失能相对应外设。
7、APB2 外设时钟使能寄存器(RCC_APB2ENR)
APB2 外设时钟使能寄存器
相对应的位为1则使能APB2总线上的外设,0则失能相对应外设。
8、APB1 外设时钟使能寄存器(RCC_APB1ENR)
APB1 外设时钟使能寄存器
作用同上。
9、备份域控制寄存器 (RCC_BDCR) 基本用不到
10、控制/状态寄存器 (RCC_CSR)
看门狗相关状态标志寄存器
看门狗相关状态标志寄存器。
为了降低功耗,以上寄存器用到哪个就置位哪个的相对应的位置。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值